Is My Opening Range Breakout Overfit? Here's The Ten-Minute Test.
Every backtested strategy has at least one number somebody chose. Mine is fifteen minutes — the length of the opening range I measure before looking for a breakout.
Why fifteen? Honestly, because that's what I'd read. Which is a terrible reason, and it's the same reason most people can give for most of their parameters. So I went looking for whether fifteen was real or whether I'd just gotten lucky with a round number.
There's a test for this. It takes about ten minutes to run and almost nobody bothers.
The test: sweep the parameter, look at the shape
Take the number you chose. Move it in both directions. Re-run. Plot the results.
You are not looking for the best value. You already know the best value — it's the one you picked. You're looking at the shape of the curve around it.
Same rules, same data, only the opening range window changed:
| window | n | PF | t |
|---|---|---|---|
| 10 min | 319 | 1.50 | +3.38 |
| 15 min | 263 | 1.72 | +4.05 |
| 20 min | 226 | 1.63 | +3.31 |
| 25 min | 200 | 1.44 | +2.26 |
| 30 min | 178 | 1.40 | +1.99 |
| 45 min | 119 | 1.25 | +1.03 |
| 60 min | 91 | 1.28 | +1.01 |
What the two possible shapes mean
A spike is bad news. If 15 minutes scored +4.05 while 10 and 20 came in near zero, that would mean the only thing special about fifteen is that fifteen happened to fit the noise in this particular dataset. Move to live data — different noise — and it's gone. A spike means you found a coincidence and named it a strategy.
A hill is good news. 10, 15 and 20 all clear t = 3. Then it decays smoothly out toward an hour. Neighbouring values work almost as well, and performance falls off gradually rather than falling off a cliff.
That's a hill. You want a hill.
The intuition: a real effect is a region, not a point. If the market genuinely does something in the first part of the session, then measuring it over 14 or 16 minutes should work about as well as 15. Only an artifact is precise.
The part that makes me believe it
The decay isn't just smooth — it decays in the direction the mechanism predicts.
The edge here isn't the pattern. It's the volume burst at the open. Median volume per 5-minute bar on NQ runs about 3,708 during regular hours against 554 in the evening — the open is where the participation actually is, and that burst bleeds off over roughly the first hour.
So a window that captures more of the burst should work better, and the advantage should fade as you stretch past the burst. That is exactly what the table does.
This matters more than the t-statistic. The data agrees with a story I could tell before I ran it, for reasons that have nothing to do with this dataset. That's a different and much stronger kind of evidence than a good score.
The number I'd rather not print
Full disclosure, because a survey of my own failures isn't worth much if I hide this one.
The +4.05 above is the core morning breakout rule measured across the full sample. The version I actually run has more on top of it — close outside the range, candle body majority outside, volume above average, a 200 SMA trend gate, and a range width filter between 0.07% and 0.65%. When I score that stack strictly out-of-sample, on data the parameters never saw, it comes out at profit factor 1.23 and t = 0.76.
That is weak. Honest, but weak.
Both numbers are real and they're measuring different things — the simple rule across everything, versus the filtered rule on the holdout only. But if I only ever showed you +4.05, I'd be doing the thing this whole series exists to criticize. Every filter you add buys precision with sample size, and 0.76 is what that trade cost me.
The sweep is why I still believe the underlying effect is real. The 0.76 is why I don't believe my filter stack is finished.
Run this on your own strategy
- Pick your most arbitrary parameter. The one you can't justify. Usually a lookback length, a threshold, or a time window.
- Run it at roughly 0.6x, 0.8x, 1.2x, 1.5x, 2x and 3x your chosen value.
- Plot score against parameter.
- Cliff on either side → you fit noise. Gentle slope → you may have something.
- Then ask whether the direction of the decay matches a mechanism you can state out loud without mentioning the backtest.
If step 5 is hard, you don't have a strategy. You have a curve.
Get the next one
I publish every strategy I test, including the ones that fail. No schedule, no signals, and nothing sent that isn’t new research.