Opening Range Breakout Tested on MNQ futures

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:

  1. Define the opening range (first 15 minutes of the US session).
  2. Enter long if price breaks the ORB high.
  3. Enter short if price breaks the ORB low.
  4. Use the opposite side of the ORB as a stop.
  5. Set a max loss to handle max risk per trade around 3%.
  6. Take profit using a fixed risk-reward multiple.
  7. 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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Torna in alto