CE Market SolutionsThis page is part of CE Market Solutions.How it worksBacktest your version →
CE Market SolutionsTest your own version of this rule on 10 years of NQ.Backtest your version →

Claim check · NQ futures

Opening range breakout backtest on NQ futures: 324 variations, 1,050,582 trades, 2016–2026

Date tested: 2026-10-07

Summary

Opening range breakout, 324 variations tested on NQ futures from 2016-06-01 to 2026-08-27, before costs: 30 versions were clearly positive in-sample and none of those 30 stayed clearly positive out-of-sample. The widely taught 15-minute range, 5-minute fair value gap retest, 2R version took 1,142 trades with a 38.6% win rate and an average of +0.022R, and its cumulative R was below zero from 2016 through 2024. Tested by CE Market Solutions (cemarketsolutions.com), a backtesting service for CME futures strategies.

The claim tested

A widely taught opening range breakout setup, as presented in a Trader Tips video.

Mark the opening range, wait for a breakout, then enter on a retest of the breakout through a fair value gap.

Rules exactly as tested

  1. Range: the high and low (wicks included) of the first 5, 15 or 30 minutes from the 09:30 ET open. Entries are allowed from the end of the range to 16:00 ET, with no cutoff time. Breakout events are decided on closed bars of the entry timeframe: a close above the range high or below the range low.
  2. Entry timeframes tested: 1, 5 and 15 minutes. Fills, stops and targets are always tested on 1-minute bars.
  3. E1 close-out: enter at the next 1-minute open after the breakout bar closes. Stops: range midpoint or the leg low.
  4. E2 break and retest: a limit at the range high (low for shorts), filled on the first touch after the breakout bar closes. Stops: range midpoint or the leg low.
  5. E3 second breakout: after the breakout, a short-term swing high above the range forms, price retests the range high, then the first close above that swing is the trigger; enter at the next 1-minute open. Stops: range midpoint, leg low or pullback low.
  6. E2F (the video’s version): after the breakout, take the latest bullish fair value gap on the entry timeframe that formed after the range ended and contains the range high; limit at the top of the gap; stop at the low of the gap’s first candle.
  7. Fade versions: on a failed breakout or a wick that closes back inside, go the other way. Either at the next open after the close back inside, or on the first fair value gap in the fade direction, with the stop at the high of the gap’s first candle.
  8. Control: a random direction (seed 7) at every E1 entry, same price and time.
  9. Targets: 1R, 2R and 3R. The 324 versions are 3 range lengths × 3 entry timeframes × 12 setups × 3 targets. Exit at target, stop or flat at the close of the 15:59 bar; a bar touching both on the fill bar counts as a stop.
  10. One open position per setup at a time. Trades flagged for the 10:00 news release are dropped from the headline numbers.

Assumptions where the rules were ambiguous:

Data

Instrument
NQ (E-mini Nasdaq-100) futures, continuous contract, 1-minute bars
Date range
2016-06-01 to 2026-08-27
Sample size
324 versions, 1,050,582 filled trades across the grid (994,637 in the headline), on 2,550 trading days with at least one trade
Costs
Gross R. No commission or slippage.
In-sample or out-of-sample
In-sample is dates up to 2023-05-31. Out-of-sample is 2023-06-01 onward. The cells and rules were fixed before any run.

Results

The 15-minute range, 5-minute fair value gap retest, 2R version
SampleTradesWin rateAverage R (95% interval)Median stop
In-sample82936.7%−0.032 (−0.111 to +0.059)23 points
Out-of-sample31343.8%+0.164 (+0.016 to +0.308)54 points
All1,14238.6%+0.022 (−0.052 to +0.096)33.5 points
The same version by year
YearTradesAverage RRCumulative R
201684−0.17−14.40−14.40
2017120−0.04−4.36−18.76
2018116−0.15−16.89−35.65
2019109+0.19+20.73−14.92
2020115−0.04−4.23−19.15
2021114+0.05+5.50−13.64
2022122−0.01−0.70−14.35
2023119−0.02−2.93−17.27
2024103+0.13+13.39−3.88
202591+0.16+14.59+10.71
2026 (to 08-27)49+0.28+13.94+24.64
Fading the failed breakout (fair value gap entry, 15-minute range, 5-minute entry, 2R) by year
YearTradesAverage RCumulative R
2016170+0.16+26.99
2017284+0.01+30.14
2018310+0.16+80.71
20192880.00+80.90
2020287+0.28+162.61
2021260+0.01+164.69
2022267+0.14+202.99
2023272+0.01+205.44
2024256−0.06+189.81
2025242+0.03+198.13
2026 (to 08-27)156−0.12+179.64
Every range, entry timeframe and setup at the 2R target: trades and average R (95% interval), in-sample and out-of-sample. The 1R and 3R results make up the rest of the 324.
VersionIn-sample tradesIn-sample average ROut-of-sample tradesOut-of-sample average R
5m range, 1m entry: E1 close-out, stop at range midpoint5,737−0.007 (−0.043 to +0.029)2,644+0.003 (−0.048 to +0.054)
5m range, 1m entry: E1 close-out, stop at the leg low4,203−0.029 (−0.069 to +0.013)1,955−0.017 (−0.076 to +0.043)
5m range, 1m entry: E2 break and retest, stop at range midpoint5,011−0.004 (−0.040 to +0.032)2,343+0.003 (−0.053 to +0.061)
5m range, 1m entry: E2 break and retest, stop at the leg low3,786−0.057 (−0.100 to −0.015)1,786+0.013 (−0.047 to +0.079)
5m range, 1m entry: E3 second breakout, stop at range midpoint444−0.087 (−0.197 to +0.028)222+0.069 (−0.110 to +0.252)
5m range, 1m entry: E3 second breakout, stop at the leg low435−0.095 (−0.213 to +0.012)216+0.029 (−0.139 to +0.206)
5m range, 1m entry: E3 second breakout, stop at the pullback low451−0.119 (−0.245 to +0.003)222+0.113 (−0.074 to +0.319)
5m range, 1m entry: E2F fair value gap retest, stop at the first candle1,504−0.066 (−0.131 to +0.002)548−0.008 (−0.119 to +0.110)
5m range, 1m entry: Fade a failed breakout, entry at the close back inside5,933−0.043 (−0.076 to −0.009)2,800−0.079 (−0.130 to −0.031)
5m range, 1m entry: Fade a failed breakout, fair value gap entry4,986+0.019 (−0.019 to +0.055)2,132−0.021 (−0.081 to +0.040)
5m range, 1m entry: Control, random side, stop at range midpoint4,477−0.004 (−0.044 to +0.036)2,077−0.019 (−0.080 to +0.041)
5m range, 1m entry: Control, random side, stop at the leg low3,423−0.020 (−0.065 to +0.026)1,555+0.046 (−0.021 to +0.118)
5m range, 5m entry: E1 close-out, stop at range midpoint4,555−0.009 (−0.047 to +0.029)2,073+0.061 (+0.000 to +0.121)
5m range, 5m entry: E1 close-out, stop at the leg low2,833−0.004 (−0.047 to +0.040)1,285+0.030 (−0.032 to +0.098)
5m range, 5m entry: E2 break and retest, stop at range midpoint3,402+0.002 (−0.042 to +0.045)1,542+0.029 (−0.043 to +0.103)
5m range, 5m entry: E2 break and retest, stop at the leg low2,407−0.062 (−0.109 to −0.013)1,106+0.021 (−0.055 to +0.093)
5m range, 5m entry: E3 second breakout, stop at range midpoint360−0.008 (−0.119 to +0.107)157+0.018 (−0.138 to +0.176)
5m range, 5m entry: E3 second breakout, stop at the leg low357+0.003 (−0.093 to +0.099)156+0.061 (−0.076 to +0.199)
5m range, 5m entry: E3 second breakout, stop at the pullback low360+0.020 (−0.102 to +0.149)157−0.081 (−0.257 to +0.104)
5m range, 5m entry: E2F fair value gap retest, stop at the first candle947−0.024 (−0.108 to +0.064)348+0.077 (−0.056 to +0.218)
5m range, 5m entry: Fade a failed breakout, entry at the close back inside3,178−0.002 (−0.048 to +0.042)1,505−0.004 (−0.073 to +0.062)
5m range, 5m entry: Fade a failed breakout, fair value gap entry1,774+0.022 (−0.039 to +0.084)717−0.015 (−0.105 to +0.078)
5m range, 5m entry: Control, random side, stop at range midpoint3,693+0.004 (−0.042 to +0.046)1,711−0.005 (−0.067 to +0.061)
5m range, 5m entry: Control, random side, stop at the leg low2,278+0.025 (−0.027 to +0.074)1,070+0.007 (−0.067 to +0.082)
5m range, 15m entry: E1 close-out, stop at range midpoint3,243+0.034 (−0.011 to +0.077)1,465+0.062 (−0.005 to +0.133)
5m range, 15m entry: E1 close-out, stop at the leg low2,229+0.042 (−0.002 to +0.087)1,008+0.062 (−0.006 to +0.126)
5m range, 15m entry: E2 break and retest, stop at range midpoint1,918+0.059 (−0.002 to +0.116)839+0.039 (−0.058 to +0.136)
5m range, 15m entry: E2 break and retest, stop at the leg low1,669+0.019 (−0.037 to +0.073)747+0.048 (−0.030 to +0.129)
5m range, 15m entry: E3 second breakout, stop at range midpoint179−0.062 (−0.175 to +0.053)101−0.081 (−0.216 to +0.052)
5m range, 15m entry: E3 second breakout, stop at the leg low179−0.043 (−0.135 to +0.055)101−0.085 (−0.192 to +0.014)
5m range, 15m entry: E3 second breakout, stop at the pullback low179−0.075 (−0.196 to +0.052)101−0.071 (−0.215 to +0.073)
5m range, 15m entry: E2F fair value gap retest, stop at the first candle388+0.029 (−0.071 to +0.131)171−0.070 (−0.215 to +0.091)
5m range, 15m entry: Fade a failed breakout, entry at the close back inside1,828+0.060 (+0.003 to +0.119)801−0.032 (−0.113 to +0.051)
5m range, 15m entry: Fade a failed breakout, fair value gap entry677+0.128 (+0.039 to +0.215)292−0.107 (−0.226 to +0.017)
5m range, 15m entry: Control, random side, stop at range midpoint2,750+0.001 (−0.046 to +0.051)1,246+0.046 (−0.026 to +0.120)
5m range, 15m entry: Control, random side, stop at the leg low1,925+0.016 (−0.032 to +0.063)885+0.011 (−0.057 to +0.079)
15m range, 1m entry: E1 close-out, stop at range midpoint3,833−0.009 (−0.049 to +0.033)1,851+0.013 (−0.044 to +0.077)
15m range, 1m entry: E1 close-out, stop at the leg low3,472−0.033 (−0.076 to +0.012)1,615−0.011 (−0.077 to +0.057)
15m range, 1m entry: E2 break and retest, stop at range midpoint3,490−0.013 (−0.056 to +0.031)1,683+0.025 (−0.039 to +0.093)
15m range, 1m entry: E2 break and retest, stop at the leg low3,108−0.060 (−0.105 to −0.014)1,464+0.013 (−0.052 to +0.082)
15m range, 1m entry: E3 second breakout, stop at range midpoint282−0.138 (−0.269 to +0.003)150+0.087 (−0.107 to +0.273)
15m range, 1m entry: E3 second breakout, stop at the leg low282−0.117 (−0.254 to +0.022)150−0.029 (−0.221 to +0.167)
15m range, 1m entry: E3 second breakout, stop at the pullback low285−0.110 (−0.265 to +0.036)151+0.163 (−0.051 to +0.378)
15m range, 1m entry: E2F fair value gap retest, stop at the first candle1,070−0.015 (−0.102 to +0.070)421−0.020 (−0.151 to +0.112)
15m range, 1m entry: Fade a failed breakout, entry at the close back inside6,845−0.097 (−0.125 to −0.066)3,155−0.109 (−0.152 to −0.061)
15m range, 1m entry: Fade a failed breakout, fair value gap entry4,559+0.020 (−0.020 to +0.060)1,987−0.065 (−0.124 to −0.005)
15m range, 1m entry: Control, random side, stop at range midpoint2,994+0.002 (−0.042 to +0.047)1,435−0.035 (−0.100 to +0.031)
15m range, 1m entry: Control, random side, stop at the leg low2,991−0.044 (−0.090 to +0.003)1,398−0.010 (−0.083 to +0.069)
15m range, 5m entry: E1 close-out, stop at range midpoint3,298+0.016 (−0.025 to +0.061)1,591+0.042 (−0.021 to +0.109)
15m range, 5m entry: E1 close-out, stop at the leg low2,527+0.030 (−0.016 to +0.075)1,174+0.030 (−0.034 to +0.099)
15m range, 5m entry: E2 break and retest, stop at range midpoint2,708+0.003 (−0.046 to +0.051)1,291+0.051 (−0.022 to +0.132)
15m range, 5m entry: E2 break and retest, stop at the leg low2,157−0.007 (−0.058 to +0.044)1,020+0.048 (−0.026 to +0.130)
15m range, 5m entry: E3 second breakout, stop at range midpoint278−0.017 (−0.131 to +0.106)142+0.102 (−0.071 to +0.275)
15m range, 5m entry: E3 second breakout, stop at the leg low276+0.015 (−0.087 to +0.122)142+0.118 (−0.029 to +0.262)
15m range, 5m entry: E3 second breakout, stop at the pullback low278+0.039 (−0.094 to +0.185)142+0.162 (−0.041 to +0.367)
15m range, 5m entry: E2F fair value gap retest, stop at the first candle829−0.032 (−0.111 to +0.059)313+0.164 (+0.016 to +0.308)
15m range, 5m entry: Fade a failed breakout, entry at the close back inside3,658+0.011 (−0.031 to +0.053)1,627−0.040 (−0.108 to +0.027)
15m range, 5m entry: Fade a failed breakout, fair value gap entry1,981+0.109 (+0.047 to +0.167)811−0.046 (−0.132 to +0.045)
15m range, 5m entry: Control, random side, stop at range midpoint2,787+0.018 (−0.028 to +0.067)1,345−0.056 (−0.127 to +0.011)
15m range, 5m entry: Control, random side, stop at the leg low2,127+0.026 (−0.024 to +0.076)992−0.026 (−0.098 to +0.048)
15m range, 15m entry: E1 close-out, stop at range midpoint2,779+0.045 (−0.003 to +0.091)1,300+0.048 (−0.019 to +0.117)
15m range, 15m entry: E1 close-out, stop at the leg low2,181+0.048 (+0.005 to +0.092)1,002+0.041 (−0.020 to +0.104)
15m range, 15m entry: E2 break and retest, stop at range midpoint2,001+0.003 (−0.053 to +0.064)911+0.064 (−0.022 to +0.151)
15m range, 15m entry: E2 break and retest, stop at the leg low1,748+0.020 (−0.029 to +0.071)813+0.033 (−0.034 to +0.114)
15m range, 15m entry: E3 second breakout, stop at range midpoint150−0.019 (−0.131 to +0.102)83+0.035 (−0.128 to +0.206)
15m range, 15m entry: E3 second breakout, stop at the leg low149−0.024 (−0.113 to +0.072)83+0.018 (−0.118 to +0.165)
15m range, 15m entry: E3 second breakout, stop at the pullback low150+0.030 (−0.106 to +0.184)83+0.039 (−0.150 to +0.245)
15m range, 15m entry: E2F fair value gap retest, stop at the first candle573+0.010 (−0.069 to +0.094)270+0.091 (−0.030 to +0.216)
15m range, 15m entry: Fade a failed breakout, entry at the close back inside2,348+0.046 (−0.004 to +0.097)1,035−0.047 (−0.120 to +0.033)
15m range, 15m entry: Fade a failed breakout, fair value gap entry813+0.126 (+0.042 to +0.210)331−0.082 (−0.197 to +0.041)
15m range, 15m entry: Control, random side, stop at range midpoint2,412+0.028 (−0.022 to +0.077)1,126+0.014 (−0.054 to +0.087)
15m range, 15m entry: Control, random side, stop at the leg low1,891+0.032 (−0.012 to +0.076)880−0.009 (−0.073 to +0.057)
30m range, 1m entry: E1 close-out, stop at range midpoint3,130+0.018 (−0.024 to +0.064)1,469+0.009 (−0.054 to +0.075)
30m range, 1m entry: E1 close-out, stop at the leg low2,995−0.023 (−0.073 to +0.026)1,362−0.029 (−0.099 to +0.046)
30m range, 1m entry: E2 break and retest, stop at range midpoint2,861−0.004 (−0.052 to +0.041)1,349+0.004 (−0.070 to +0.074)
30m range, 1m entry: E2 break and retest, stop at the leg low2,621−0.065 (−0.112 to −0.014)1,207−0.051 (−0.130 to +0.026)
30m range, 1m entry: E3 second breakout, stop at range midpoint210+0.043 (−0.112 to +0.197)118+0.044 (−0.157 to +0.238)
30m range, 1m entry: E3 second breakout, stop at the leg low210+0.005 (−0.160 to +0.177)116−0.039 (−0.260 to +0.202)
30m range, 1m entry: E3 second breakout, stop at the pullback low210+0.030 (−0.148 to +0.208)118+0.047 (−0.210 to +0.304)
30m range, 1m entry: E2F fair value gap retest, stop at the first candle880−0.033 (−0.120 to +0.061)328+0.014 (−0.133 to +0.176)
30m range, 1m entry: Fade a failed breakout, entry at the close back inside6,576−0.070 (−0.103 to −0.038)3,099−0.084 (−0.130 to −0.037)
30m range, 1m entry: Fade a failed breakout, fair value gap entry4,102+0.040 (−0.003 to +0.083)1,815−0.057 (−0.123 to +0.008)
30m range, 1m entry: Control, random side, stop at range midpoint2,595+0.019 (−0.028 to +0.069)1,199−0.041 (−0.110 to +0.025)
30m range, 1m entry: Control, random side, stop at the leg low2,751−0.003 (−0.051 to +0.047)1,246+0.005 (−0.072 to +0.080)
30m range, 5m entry: E1 close-out, stop at range midpoint2,874+0.014 (−0.032 to +0.056)1,347+0.023 (−0.040 to +0.090)
30m range, 5m entry: E1 close-out, stop at the leg low2,505+0.021 (−0.025 to +0.065)1,157+0.003 (−0.058 to +0.071)
30m range, 5m entry: E2 break and retest, stop at range midpoint2,417+0.010 (−0.038 to +0.061)1,131+0.022 (−0.051 to +0.101)
30m range, 5m entry: E2 break and retest, stop at the leg low2,124−0.015 (−0.067 to +0.037)997+0.030 (−0.041 to +0.107)
30m range, 5m entry: E3 second breakout, stop at range midpoint209+0.052 (−0.076 to +0.186)105−0.015 (−0.185 to +0.160)
30m range, 5m entry: E3 second breakout, stop at the leg low207+0.036 (−0.081 to +0.155)105−0.022 (−0.180 to +0.140)
30m range, 5m entry: E3 second breakout, stop at the pullback low209+0.119 (−0.051 to +0.282)105−0.046 (−0.279 to +0.190)
30m range, 5m entry: E2F fair value gap retest, stop at the first candle754−0.028 (−0.117 to +0.066)290+0.072 (−0.082 to +0.232)
30m range, 5m entry: Fade a failed breakout, entry at the close back inside3,962−0.003 (−0.043 to +0.036)1,837−0.035 (−0.097 to +0.028)
30m range, 5m entry: Fade a failed breakout, fair value gap entry1,940+0.064 (+0.006 to +0.122)817−0.052 (−0.140 to +0.034)
30m range, 5m entry: Control, random side, stop at range midpoint2,503+0.051 (+0.003 to +0.099)1,169−0.001 (−0.071 to +0.068)
30m range, 5m entry: Control, random side, stop at the leg low2,233+0.026 (−0.020 to +0.071)1,028−0.022 (−0.087 to +0.046)
30m range, 15m entry: E1 close-out, stop at range midpoint2,498+0.043 (−0.001 to +0.092)1,163+0.017 (−0.052 to +0.085)
30m range, 15m entry: E1 close-out, stop at the leg low2,126+0.049 (+0.011 to +0.090)984+0.015 (−0.041 to +0.074)
30m range, 15m entry: E2 break and retest, stop at range midpoint1,898+0.007 (−0.046 to +0.061)883+0.006 (−0.075 to +0.092)
30m range, 15m entry: E2 break and retest, stop at the leg low1,723+0.025 (−0.021 to +0.074)805+0.004 (−0.063 to +0.074)
30m range, 15m entry: E3 second breakout, stop at range midpoint133+0.048 (−0.067 to +0.164)63−0.022 (−0.187 to +0.149)
30m range, 15m entry: E3 second breakout, stop at the leg low133+0.033 (−0.067 to +0.132)63−0.018 (−0.150 to +0.116)
30m range, 15m entry: E3 second breakout, stop at the pullback low133+0.088 (−0.065 to +0.246)63+0.011 (−0.209 to +0.243)
30m range, 15m entry: E2F fair value gap retest, stop at the first candle554+0.040 (−0.047 to +0.128)220−0.036 (−0.170 to +0.100)
30m range, 15m entry: Fade a failed breakout, entry at the close back inside2,601+0.041 (−0.006 to +0.088)1,190−0.103 (−0.173 to −0.033)
30m range, 15m entry: Fade a failed breakout, fair value gap entry835+0.109 (+0.034 to +0.187)345−0.064 (−0.183 to +0.051)
30m range, 15m entry: Control, random side, stop at range midpoint2,252+0.053 (+0.005 to +0.103)1,064−0.020 (−0.087 to +0.053)
30m range, 15m entry: Control, random side, stop at the leg low1,935+0.025 (−0.016 to +0.068)896−0.015 (−0.078 to +0.048)

Questions and answers

How was the opening range breakout backtested?

On NQ futures 1-minute data from 2016-06-01 to 2026-08-27, across 324 versions: 3 range lengths, 3 entry timeframes, 12 setups and 3 targets. Fills, stops and targets were tested on 1-minute bars, before costs.

What sample size was used for the opening range breakout test?

1,050,582 filled trades across the 324 versions. The 15-minute range, 5-minute fair value gap retest, 2R version had 1,142 trades.

Did any opening range breakout variation hold up out-of-sample?

30 versions were clearly positive in-sample (dates up to 2023-05-31) and none of them stayed clearly positive out-of-sample (2023-06-01 onward).

How did the fair value gap retest breakout do year by year?

Its cumulative R was below zero from 2016 through 2024 and positive from 2025, ending at +24.64R in 2026 on 1,142 trades.

Related reports

Read more: R multiples and expectancy, explained · How many trades does a backtest need?

Want your own strategy tested the same way? Every version is $19 at cemarketsolutions.com.

More tests like this on Instagram and TikTok: @cemarketsolutions.