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
- 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.
- 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.
- 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.
- Out-of-sample again. Take the parameters as they are and run only the period after 2024. Look at 2025 and 2026 separately.
- Two readings of the daily stop. "Two losses in a day" versus "two losses in a row".
- Which VWAP. VWAP on 15-minute bars versus VWAP on 5-minute bars. If there is no difference, the implementation becomes much simpler.
- 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.vwapresets 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), whereanchoris 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 viastrategy.losstrades.
MultiCharts and TradeStation (EasyLanguage)
- The 15-minute series is added as a second data stream (
Data2), and values are read asClose of Data2. - VWAP from 09:30 is easier to compute yourself: accumulate the sum of
TypicalPrice * volumeand the volume, and reset them on the first bar of the session.Timeis the bar's close time, so the first 5-minute bar hasTime = 935. - Check which field holds the full volume. In TradeStation, on intraday bars the full volume has historically been in
Ticks, whileVolumemay 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.SetStopLossworks in dollars, per contract or per position depending on the mode. - Exit at 15:55:
If Time >= 1555 then Sell next bar at market.SetExitOnClosedoes 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.