The Opening Range Breakout (ORB) is one of the most discussed intraday strategies in retail trading.
There are many variations of it online, but most examples I’ve seen have a few issues:
- equities instead of futures
- no contract rollover handling
- no out-of-sample testing
- unrealistic execution assumptions
So I decided to test it more carefully on MNQ futures (Micro Nasdaq).
Setup
- Instrument: MNQ futures
- Data: 15-minute bars from 2019 to 2026
- Capital: $10,000
- Position size: 1 contract
- Commission: $0.68 per side
- Proper contract rollover (switch ~5 trading days before expiration or when next contract volume becomes larger)
The strategy logic is very simple:
- Define the opening range (first 15 minutes of the US session).
- Enter long if price breaks the ORB high.
- Enter short if price breaks the ORB low.
- Use the opposite side of the ORB as a stop.
- Set a max loss to handle max risk per trade around 3%.
- Take profit using a fixed risk-reward multiple.
- Exit at the next session open if TP/SL are not hit.
I also used a daily SMA(200) as a simple trend filter.
Another rule that helped stability:
stop trading after one losing trade in the same session (ORB tends to overtrade in sideways markets).
One complication: backtesting futures in Python
I used backtesting.py, which doesn’t natively support futures.
A few workarounds were needed:
- margin modeling to simulate futures leverage
- position size adjustments to correctly map point value to PnL
- continuous back-adjusted series for the SMA(200)
- proper contract rollover handling

In-sample optimization
Parameters optimized:
- trend sma
- risk-reward multiplier
The interesting thing is that the heatmap doesn’t show a single isolated optimum, but rather a plateau region where performance is relatively stable.
That reduces the probability of curve fitting.
Results
In-sample
Sharpe ≈ 1.4
Max DD ≈ −11%
Out-of-sample (2023–2026)
Sharpe ≈ 1.10
Max DD ≈ −13%

The strategy does not beat buy & hold in absolute return, but it:
- spends much less time in the market
- has significantly lower drawdown
- maintains positive Sharpe out of sample
So the edge seems thinner than most ORB discussions suggest, but it does not disappear.
The full article is available here