The opening-range breakout is real — and smaller than the cost of trading it
The opening-range breakout is one of the most widely taught intraday setups: mark the high and low of the first stretch of the session, buy the break of the high, trail a stop, flatten at the close. It has a plausible mechanism behind it — overnight information gets priced in a burst when the main session opens, and the first range is a decent proxy for where that burst settles.
We pre-registered it, tested it properly, and killed it. The interesting part is how it died: not because the pattern isn't there, but because it is smaller than the cost of trading it. This is the clearest example in the research log of a strategy that is simultaneously real and untradable.
The test
Fixed before any run, as part of a sweep that added session structure to the strategy
language (hour_utc, day_of_week, session open/high/low/VWAP, opening ranges — all fixed
UTC windows):
S1 — US-open ORB long. During the first hour of the US session (13:30–20:00 UTC), enter long when the close crosses above the session's opening range high. No entries after 18:00. Exit on a 2×ATR trailing stop or at session end.
Run on BTC, ETH and BNB at 15m — Binance spot candles priced at the perpetual's costs, as in every crypto sweep here — with a 1h probe. Two independent windows (Aug 2018 → Aug 2022 and Aug 2022 → Aug 2026). Costs: 0.1% per side plus funding at every 8-hour settlement a position is held through. Gates: net positive in both windows, survives deleting the best trade, max drawdown ≤ 20%, at least two of three majors. A short mirror and two neighbouring session hypotheses ran alongside it.
The net result
Every opening-range cell was negative, and so were 41 of the 42 net-of-cost cells across the four session hypotheses, with profit factors between 0.36 and 0.98. (The August log said all 42; the committed re-run of October 2026 finds one exception in a neighbouring probe — BNB's first window of the 1h VWAP reversion at +11.1%, which fails the bar on drawdown.) Nothing reached the neighbour or stress phases, because the pre-registration rule only runs neighbours for families whose primary shows genuine signal.
By the usual standard that is the end of the story. It isn't, because of what the diagnostic showed.
The gross diagnostic
To find out why a family died, the same runs were repeated with fees switched off and funding left on. This is not a tradable configuration — no one trades for free — but it separates "the pattern isn't there" from "the pattern is there and costs ate it".
| Setup (gross) | W1 | W2 | Reading |
|---|---|---|---|
| ORB · BTC 15m | +28.8% · PF 1.09 · survives strip-best | +36.3% · PF 1.17 · survives strip-best | Real, window-stable tendency |
| ORB · ETH 15m | +31.5% · PF 1.08 · survives strip-best | +43.0% · PF 1.16 · survives strip-best | Same |
| Session-VWAP reversion (best cells) | mixed positive | mostly negative | Unstable even gross |
| London breakout of the Asia range | large positive | negative everywhere | Regime artifact even gross |
The opening-range breakout on BTC and ETH is the only one of the four that behaves like a genuine effect: positive in both independent windows, surviving strip-best-trade, on roughly 870 trades per window. That is a lot of evidence for a small, consistent tendency — and those four cells were re-derived to the decimal from committed code in October 2026, on 876, 880, 861 and 862 trades.
The arithmetic that kills it
Across about 870 trades per window, the gross result works out to between +0.03% and +0.05% per trade — call it +0.04% per trade. Break-even for an edge that size is 0.02% per side.
This sweep charged 0.1% per side — the library's conservative spot-taker default at the time. Sweep #4 later corrected that assumption: these are USDT-M perpetuals, whose standard schedule is 0.05% taker and 0.02% maker. Both rates belong in the answer, so both are stated here.
| Cost model | Round trip | The edge against it |
|---|---|---|
| Spot taker, as this sweep charged it | 0.2% | 5× smaller |
| Perpetual taker — the honest retail rate | 0.1% | 2.5× smaller |
| Perpetual maker | 0.04% | break-even |
At the rate a retail account actually pays to cross the spread on a perpetual, the edge is about two and a half times smaller than the cost line. The original sweep said five times, on a fee schedule that belongs to a different instrument. The correction moves the multiple and leaves the verdict where it was.
Break-even lands exactly on the maker rate, and that is not a loophole for this strategy. An opening-range breakout enters by crossing a level, which is a taker action by construction: you cannot rest a passive limit order at a price you are waiting to break through and still be trading the breakout. The one execution model that would pay for this edge is the one this strategy cannot use.
It is worth being precise about what this does and does not mean:
- It is not "the opening-range breakout doesn't work." It works, in the sense that the price tendency exists and repeats across regimes.
- It is "you cannot collect it at retail execution costs." Every dollar of the effect and then some goes to the exchange.
- Resting a limit order is not the way out, for the reason above: the entry is a level break, so the fill has to be aggressive. What would change the conclusion is being paid to take liquidity — a taker-rebate tier, an internalised fill, a venue that pays for order flow. Those exist, and the honest version of that statement is that you would be running a different business than the one this library measures.
The same test on the world's most liquid instruments
A reasonable objection: crypto perpetual fees are high, so try it somewhere cheap.
That was tested. A later sweep ran intraday session-VWAP reversion on SPY and QQQ using real regular-hours SIP bars, extended hours filtered out, DST-aware, at 2 basis points per side — about the friendliest honest cost model a retail trader can claim anywhere.
All four cells failed, and the way they failed turned out to matter. The August run reported SPY netting to roughly zero (PF 0.98 and 1.00, −3.1% and +0.3%) and QQQ outright negative (PF 0.94 and 0.97), and read that as a gross edge of about +0.02–0.04% per trade — the size of the cost line, once again. When the sweep was re-run from committed code in October 2026, those numbers reproduced exactly, but only because the August run had held positions overnight until the VWAP reclaim. Flatten at the session close, as an intraday strategy must and as this page had described, and the cell is clearly negative even with fees switched off: SPY −12.5% and −4.2% gross, QQQ −32.5% and −8.7%, on 500–1,000 trades per window.
So the honest sentence about the index ETFs is shorter than the one this page used to carry. There is no intraday structure to pay for. What looked like a faint edge was overnight drift collected by a position that stayed open past the close.
Two asset classes, two answers that end the same way: on crypto the opening-range structure is real and about two and a half times smaller than its costs; on the most liquid instruments in the world, flattened at the close, the sub-daily reversion is not there to begin with.
What we kept
The session atoms stayed in the strategy language. No standalone intraday entry cleared the bar, but session structure is genuinely useful as a filter or an exit on higher-timeframe strategies — a session-end flatten, a day-of-week gate, a "don't enter in the last hour" rule. The Sensei coach can compile all of them.
What we did not keep is the idea that an intraday breakout is a strategy on its own.
Reproducing this
The sweeps on this page ran in August 2026 from scripts that were never committed. On 9 October 2026 they were re-run from committed code (scripts/research/replicate-sweep2-session.ts and replicate-sweep5-metals-double7s-vwap.ts). The four gross opening-range cells above and their trade counts reproduce to the decimal — once the August convention of flattening on the first bar after the session close was recovered, which the script and the research log state as a post-hoc attribution. The SPY/QQQ cell reproduced as well, which is how the overnight hold described above came to light. The outputs, with every trade, are in scripts/research/results/replication-2026-10/.
Related
- Does any low-timeframe crypto strategy actually work? — the full seven-sweep answer this result belongs to.
- The research log — every hypothesis, in the order it was run.
- The strategy library — the six that survived, all of them on daily bars or above except one.
