← All ideas
#003TrendIntraday

Drift VWAP Pullback: a pullback to VWAP in the direction of the day on NQ

When price is above a rising VWAP and has gained 0.1% over the hour, buy the first red 5-minute candle. Short targets, a wide stop and daily limits. The author built the system to pass prop firm challenges.

IQCapital · Matteo Conti · Watch video

Markets

Futures

Timeframe

M5, M15

Data

OHLC, Volume, Session times

Rules

Author's rules

Difficulty

Medium

Status

Untested

The author named entry, exit and parameters.

TradingView has pitfalls
EasyLanguage has pitfalls
MetaTrader 5 needs data or workarounds

Idea in brief

Matteo Conti spent seven years as a market maker and now runs a quant fund. Conti's strategy trades Nasdaq-100 futures (NQ) intraday. First, the 15-minute chart shows whether the day has a direction: price is on one side of VWAP, VWAP slopes the same way, and over the last hour price has moved at least 0.1%. If there is a direction, wait on the 5-minute chart for the first candle against it and enter at market at the open of the next one.

Targets are small, and the stop is twice the target. About two thirds of trades are winners. The author built the system to pass prop firm challenges and says plainly that the average trade is too small for personal money.

Why it might work

The author's explanation lies in market microstructure. Large fund orders are executed by bank and broker traders, and almost all of them use algorithms that try to fill the volume close to VWAP. When price pulls back to VWAP, these algorithms become more active. If buying algorithms dominate, the pullback is bought quickly. The regime conditions answer three questions: where the level is (price versus VWAP), which way the direction points (VWAP slope), and whether there is speed (change over the hour).

We have not verified the share of orders that go through VWAP algorithms. It is the author's claim.

Rules

All rules below were stated by the author. Places where the description allows two readings are marked Finetiq.

Indicator and regime

// instrument: NQ futures, regular session 09:30–16:00 ET
// VWAP anchored to 09:30 ET, calculated on 15-minute bars
VWAP = Σ(TypicalPrice × Volume) / Σ(Volume)   from 09:30 ET

// the regime is checked at the close of every 15-minute candle
LongDrift  = Close15 > VWAP
             AND VWAP > VWAP[1]                       // VWAP rose over the last 15 minutes
             AND Close15 / Close15[4] - 1 >= +0.1%    // four 15-minute bars = one hour

ShortDrift = Close15 < VWAP
             AND VWAP < VWAP[1]
             AND Close15 / Close15[4] - 1 <= -0.1%

// Finetiq: on the 5-minute chart we use the values of the last CLOSED 15-minute candle

Entry

// trade from 10:30 to 15:30 ET: in the first hour VWAP is still forming
IF Time5 between 10:30 and 15:30 ET

    IF LongDrift AND the first red 5-minute candle has closed (Close < Open)
        BUY AT NEXT BAR OPEN                  // at market

    IF ShortDrift AND the first green 5-minute candle has closed (Close > Open)
        SELL SHORT AT NEXT BAR OPEN

// "first" candle: the first one after the regime switched on.
// Finetiq: after a trade closes, wait for the next candle against the direction while the regime is active.
// According to the author, how close the pullback came to VWAP does not matter

Exit and limits

Long:   StopLoss = EntryPrice - 80 points;  Target = EntryPrice + 40 points
Short:  StopLoss = EntryPrice + 80 points;  Target = EntryPrice - 50 points

EXIT all positions at 15:55 ET

// limits
no more than 1 position at a time
no more than 4 trades per day
after 2 losing trades in a day, no new entries
// Finetiq: the author says both "two losses in a day" and "two losses in a row".
// With a limit of 4 trades these are different rules, test both
no new entries after 15:30 ET

Parameters

Parameter Value Source
Instrument NQ (or 10 MNQ) author
Regime timeframe 15 minutes author
Entry timeframe 5 minutes author
VWAP anchor 09:30 ET author
One-hour change threshold 0.1% author (fitted on 2020–2024)
Trading window 10:30–15:30 ET author
Stop 80 points author
Long target 40 points author
Short target 50 points author
Forced exit 15:55 ET author
Maximum trades per day 4 author
Daily stop 2 losses author, Finetiq reading
Re-entry after a trade next candle against the direction Finetiq

What to test

  1. Costs. From the author's figures, the expectancy is about $86 per trade before costs (0.64 × $866 − 0.36 × $1300). Commission plus one tick of slippage on the market entry and on the stop come to roughly $15 per round trip. Run the test with realistic costs and see how much is left.
  2. Stop and target in points. NQ traded at roughly 6.6 to 13 thousand in 2020 and is much higher now. 80 points then and now are different risks. Compare fixed points with the same stop and target as fractions of ATR(14) on the 15-minute chart.
  3. The 0.1% threshold. The author fitted it in-sample. Test 0.05%, 0.15%, 0.2%. If the result holds only around 0.1%, it is overfitting.
  4. Out-of-sample again. Take the parameters as they are and run only the period after 2024. Look at 2025 and 2026 separately.
  5. Two readings of the daily stop. "Two losses in a day" versus "two losses in a row".
  6. Which VWAP. VWAP on 15-minute bars versus VWAP on 5-minute bars. If there is no difference, the implementation becomes much simpler.
  7. Prop math. Pass probabilities depend on the rules of a specific firm (target, maximum drawdown, trailing). The author did not name the firm. Build your own simulation on the rules of the firm you plan to use.

Platform notes

TradingView (Pine Script)

  • The standard ta.vwap resets at the start of the symbol's session. CME futures sessions start at 18:00 ET the previous day, not at 09:30. You need an anchored version: ta.vwap(hlc3, anchor), where anchor is true on the first bar after 09:30 in "America/New_York".
  • Take 15-minute values on the 5-minute chart without lookahead: request.security(syminfo.tickerid, "15", expr[1], lookahead = barmerge.lookahead_on).
  • Daily trade limit: strategy.risk.max_intraday_filled_orders(8) (entry and exit are two orders). Track the loss limit yourself via strategy.losstrades.

MultiCharts and TradeStation (EasyLanguage)

  • The 15-minute series is added as a second data stream (Data2), and values are read as Close of Data2.
  • VWAP from 09:30 is easier to compute yourself: accumulate the sum of TypicalPrice * volume and the volume, and reset them on the first bar of the session. Time is the bar's close time, so the first 5-minute bar has Time = 935.
  • Check which field holds the full volume. In TradeStation, on intraday bars the full volume has historically been in Ticks, while Volume may contain only up volume. In MultiCharts it depends on the symbol setting (Build Volume On).
  • Set the stop and target as prices: Sell next bar at EntryPrice - 80 stop, Sell next bar at EntryPrice + 40 limit. SetStopLoss works in dollars, per contract or per position depending on the mode.
  • Exit at 15:55: If Time >= 1555 then Sell next bar at market. SetExitOnClose does not fire in live trading.

MetaTrader 5 (MQL5)

  • Real volume exists only for exchange-traded futures, which few brokers offer. CFDs on the Nasdaq-100 (USTEC, NAS100) have only tick volume (iTickVolume), and VWAP built on it is an approximation.
  • The CFD price differs from the futures price by the basis, and the broker's points may have a different size. The 80, 40 and 50 point thresholds are set for NQ.
  • Convert 09:30 ET to the broker's server time, accounting for daylight saving time. In the tester TimeGMT() does not help, it equals server time.
  • Compute the signal on closed bars (index 1) and check for a new 5-minute bar, otherwise the entry will repeat on every tick.

Where the idea can break

  • All results were stated in an interview on a prop firm's channel, where the strategy is presented as a way to pass a challenge. No trade reports are publicly available.
  • The stop is twice the target. Such a system is especially sensitive to slippage on stops and to costs. A small drop in the win rate quickly wipes out the expectancy.
  • The author warns that on personal capital the strategy will most likely not make money. This is not a contradiction but a consequence of the small average trade.
  • Fixed points do not track the rise in the NQ price. Parameters fitted on 2020–2024 may mean a very different risk in 2026.
  • A CFD in MetaTrader 5, without real volume and with a different price, is already a different strategy. It has to be tested from scratch, not carried over with the author's figures.

Sources

Author's claims

These figures and statements are the author's. We have not verified them.

  • The historical test shows more than 300% over 4000+ trades.
  • Win rate 64%. Average win $866, average loss $1300 (1 NQ contract or 10 MNQ).
  • Parameters were fitted on 2020–2024 data. The author calls the period from 2024 to August 2, 2026 fully out-of-sample, and the curve rises on both segments.
  • 20,000 simulations on the trade history: the challenge is passed on the first attempt in 49.8% of cases, in 3.4 days on average. At least one of two attempts passes in 74.8% of cases, of three in 87.3%, of four in 93.6%.
  • The author says that on personal capital the strategy would most likely not make money because the average trade is small. It fits the math of prop firms.
  • According to the author, 90–95% of the orders executed by bank and broker traders go through algorithms benchmarked to VWAP.

Related ideas

Updated: 2026-09-10