The Opening Range Breakout is one of the most-taught day-trading setups on the internet: mark the high and low of the first period after the open, then trade the break of that range. The pitch is simple — the first move of the day sets the tone, so ride the breakout.
But almost nobody who teaches it shows the numbers. So we asked a specific, testable question: if you mechanically buy the break above the opening range on the Nasdaq (and short the break below), does it make money after real costs — on data the rules were never fitted to?
We coded the plain-vanilla version first, so there was nothing to argue about:
Then a single, pre-registered variation: a momentum filter that skips the break when the opening range is unusually wide relative to recent volatility (the low-quality, already-extended days).
The plain ORB was roughly break-even after costs — a real but thin edge that slippage nearly ate. The momentum-filtered version is where it held up, including out-of-sample:
Representative figures for this example write-up — replace with the final study output before publishing.
The naive ORB you see on YouTube is close to a coin flip after costs. But a disciplined, filtered version held a genuine edge out-of-sample. The lesson is the one that runs through most of our research: the setup is rarely the edge — the filter is.
This is the strategy we ship as the NQ Opening Range Breakout, with that filter baked in.
An abridged version of the opening-range logic, for transparency:
// Opening range: first 30 minutes after the RTH open var float orHigh = na var float orLow = na inOR = time(timeframe.period, "0930-1000", "America/New_York") if inOR orHigh := na(orHigh) ? high : math.max(orHigh, high) orLow := na(orLow) ? low : math.min(orLow, low) // After the range is set, take the first break — filtered by range width rangeOK = (orHigh - orLow) < volFilter * atr longSig = not inOR and rangeOK and ta.crossover(close, orHigh) shortSig = not inOR and rangeOK and ta.crossunder(close, orLow)
Hypothetical / backtested. The figures above are from a simulated backtest and do not represent actual live trading. Simulated results have inherent limitations and may not reflect real fills, costs, or slippage. Past performance is not indicative of future results. Trading futures involves substantial risk of loss and is not suitable for all investors. See our full Risk Disclosure.
← Back to all researchThe filtered NQ Opening Range Breakout is available as a TradingView strategy. Add it to your charts and trade.
Get the Strategy