← Opening range breakout research

Opening range breakout methodology and provenance

This record separates what was archived, what can be reconstructed and what the live MADDOG API measures today. It exists so each published percentage carries a definition, sample and limitation.

Data scope

The archived opening-session scorecard uses S&P 500 E-mini futures data from 2010–2026, resampled to five-minute bars. Its timing table contains 3,946 sessions. The historical research window contains 81 bars per complete session; the current live RTH endpoint uses the exchange day window through 16:00 ET. The live rolling event is designed so late-window events without enough follow-up bars are excluded from the relevant horizon.

Opening-session extreme timing

The archived 3,946-session scorecard reports that either the final session high or final session low had appeared by the first bar in 26.3% of sessions, by seven bars in 58.3% and by 18 bars in 81.2%. A strict reconstruction on 3,942 complete 81-bar sessions reproduced all three rounded percentages.

The same scorecard reports that the low formed in the first third on 83.3% of sessions that ultimately closed above their open, and that the high did so on 80.4% of sessions that closed below. It retained 3,946 as the source-dataset size, not the eligible denominator for either conditional row. The reconstruction found 1,805 of 2,166 up-close sessions (83.3%) and 1,413 of 1,747 down-close sessions (80.9%), with 29 flat-close sessions excluded.

The historical research grid runs 09:30–16:15 ET. Four 2020 days with 79–80 non-empty bars plausibly explain the difference between the two total samples, but without the original scorer that inclusion rule cannot be confirmed. These are hindsight timing distributions, not live directional predictions.

Archived 18-bar opening-range result

The frozen scorecard records: “18-bar opening-range breakout: opposite extreme holds” at 83.5%, n = 3,578. The original executable scorer was not retained.

A later reconstruction forms the opening range from the first 18 five-minute bars, takes the first later close outside that range, and asks whether any subsequent wick exceeds the opposite session extreme that existed before the break. It returned 83.7%, n = 3,574. Because the reconstruction is close but not identical, it is evidence about the archived definition, not the exact source of the 83.5% tuple.

Current rolling 10-bar event

For every candidate bar, the detector takes the high and low of the immediately preceding 10 bars. The range must be no wider than 0.5× ADR5. The first close above the range high or below the range low is the event; only the first qualifying event per window and day is retained. A failure occurs when a later close crosses back through the breakout level.

Frozen RTH references used by the current API
Outcome horizonFailure rateEligible events
5 bars52.1%3,925
10 bars62.6%3,922
20 bars70.6%3,915

This rolling definition was recovered after the original RTH rates had already been published, then frozen before it was carried into other session windows. The RTH row is therefore a stable reference rate, not an independent replication of the original claim.

Conditional-model validation

The model that estimates whether an individual rolling event will close back through its level within 10 bars is a separate layer. The original ADR20 model, feature set and evaluation gates were specified before its first zero-shot NQ test. The production port then changed the volatility baseline to ADR5 and checked that version on NQ 2023+: AUC 0.646, expected calibration error 5.1%, n = 2,637. The exact ADR5 tuple is therefore a production-port validation of the pre-specified model, not the original pre-registration result. It validates discrimination and calibration for the rolling event; it does not turn either aggregate into a trading-strategy return.

Reproducibility boundary

The detector semantics are executable in the production code, and the archived opening-session table has a reconstruction. The proprietary source bars are not redistributed. The original archived scorer and a one-command generator for the exact current aggregate tuples are not part of this public site repository. We state those gaps instead of presenting the numbers as more reproducible than they are.

Download the machine-readable record, return to the ORB strategy statistics, or inspect the live field definitions in the API reference.