Record
89,2% headline hit rate across 327.715 backfilled calls. This is a BACKFILL, not a live-tracked record — see the note below.
Gemeten kansen. Geen handelsaanbevelingen. wat dit betekent →
This is a backfill, not a live record
This is a BACKFILL: the v3 rule replayed over 2010-2026 history (2017-07+ for RTY), not a live-tracked record. Live publication starts only once /ranges' cron (parity/DESIGN.md task 6b) has actually been deployed and run -- see manifests's own known_gaps for what a fully honest live record still needs (the first-year-of-history walk-forward gap, EXPIRED handling).
Parameter disclosure
d_target and d_inv are PRODUCT PARAMETERS chosen by grid sweep to match the shape of leppyrd's published record20yr.csv signature (hit rate, decision speed, MFE/MAE, payoff, tier spread) - they are NOT a discovered fact about market structure and are not fitted to our own data's outcomes. Given that choice, the ODDS themselves are still walk-forward calibrated honestly (fit on year<Y, applied to year Y) - the parameter choice sets the RULE, the walk-forward sets the PROBABILITY under that rule. See sweep_v3.csv for the full 48-cell grid this was chosen from.
The rule
At TF-bar close t: range_N = max(High,N)-min(Low,N) over last N TF bars. position = (Close_t - min(Low,N))/range_N. prior_move_atr = (Close_t - Close_(t-N)) / mean(High-Low,N). Extreme-high setup (position>=0.97, prior_move_atr>=+0.50) -> CALL UP (continuation). Extreme-low setup (position<=0.03, prior_move_atr<=-0.50) -> CALL DOWN. Winning lookback: N=40.
ASYMMETRIC RACE, v3 (DESIGN.md #1). HIT = a later TF bar's High/Low TOUCHES entry +/- d_target*ATR_N(t). MISS = a later TF bar's CLOSE is beyond entry -/+ d_inv*ATR_N(t). HIT has precedence over MISS within the same bar. Neither within 40 periods -> EXPIRED (reported separately, excluded from the odds fit).
EXPIRED (neither target nor invalidation hit within the 40-period cap): 0,002% of calls (7) — excluded from the odds fit and from every tier's hit rate.
Stated vs. actual, by tier
| tier | stated | actual | gap | n | reportable |
|---|---|---|---|---|---|
| A | 84,3% | 86,4% | +2,06 pp | 92.249 | yes |
| B | 79,7% | 82,3% | +2,58 pp | 9.668 | yes |
| D | 74,7% | 82,7% | +7,97 pp | 231 | no |
| S | 90,1% | 90,9% | +0,83 pp | 217.164 | yes |
Stated vs. actual, by year
| year | stated | actual | gap | n | reportable |
|---|---|---|---|---|---|
| 2011 | 86,1% | 87,8% | +1,77 pp | 16.846 | yes |
| 2012 | 87,1% | 88,4% | +1,33 pp | 14.071 | yes |
| 2013 | 87,6% | 85,6% | -2,01 pp | 13.988 | yes |
| 2014 | 87,3% | 87,3% | -0,02 pp | 14.076 | yes |
| 2015 | 87,6% | 88,3% | +0,69 pp | 13.988 | yes |
| 2016 | 87,5% | 88,6% | +1,07 pp | 16.764 | yes |
| 2017 | 87,5% | 87,7% | +0,14 pp | 16.506 | yes |
| 2018 | 87,8% | 90,0% | +2,17 pp | 22.427 | yes |
| 2019 | 88,1% | 89,2% | +1,08 pp | 19.459 | yes |
| 2020 | 87,9% | 90,2% | +2,29 pp | 23.459 | yes |
| 2021 | 88,6% | 90,2% | +1,54 pp | 24.529 | yes |
| 2022 | 88,9% | 89,7% | +0,82 pp | 26.156 | yes |
| 2023 | 88,8% | 89,8% | +1,04 pp | 26.235 | yes |
| 2024 | 88,7% | 89,8% | +1,04 pp | 27.928 | yes |
| 2025 | 88,8% | 91,0% | +2,22 pp | 26.902 | yes |
| 2026 | 89,0% | 92,0% | +3,02 pp | 15.978 | yes |
Stated vs. actual, by market
| market | stated | actual | gap | n | reportable |
|---|---|---|---|---|---|
| CL | 87,9% | 89,5% | +1,61 pp | 45.553 | yes |
| ES | 88,2% | 89,5% | +1,30 pp | 64.025 | yes |
| GC | 88,0% | 90,1% | +2,08 pp | 36.297 | yes |
| NQ | 88,1% | 89,5% | +1,37 pp | 71.967 | yes |
| RTY | 88,4% | 88,7% | +0,32 pp | 40.676 | yes |
| YM | 88,0% | 88,9% | +0,87 pp | 60.794 | yes |
Stated vs. actual, by timeframe
| TF | stated | actual | gap | n | reportable |
|---|---|---|---|---|---|
| 15m | 87,3% | 88,9% | +1,55 pp | 99.613 | yes |
| 30m | 88,1% | 89,1% | +1,04 pp | 52.584 | yes |
| 45m | 88,6% | 89,8% | +1,20 pp | 38.018 | yes |
| 60m | 87,9% | 89,3% | +1,45 pp | 30.092 | yes |
| 75m | 89,1% | 89,7% | +0,67 pp | 25.466 | yes |
| 90m | 88,3% | 89,7% | +1,41 pp | 21.764 | yes |
| 105m | 88,9% | 90,1% | +1,18 pp | 19.486 | yes |
| 120m | 88,2% | 89,3% | +1,10 pp | 17.670 | yes |
| 150m | 89,3% | 89,9% | +0,62 pp | 14.619 | yes |
Payoff
Average move size (in ATR) on hits vs. misses, and expected value per call.
| tier | win % | payoff (mean) | EV/call (ATR) |
|---|---|---|---|
| overall | 89,2% | 0,982 | 0,515 |
| A | 86,4% | 1,047 | 0,498 |
| B | 82,3% | 1,036 | 0,490 |
| D | 85,7% | 0,960 | 0,420 |
| S | 90,9% | 0,951 | 0,527 |
Fixed-horizon side number
1-period close-vs-entry outcome, reported ALONGSIDE the v3 asymmetric-race status (target touch / invalidation close) per parity/DESIGN.md #6 -- 'hit is not whether it paid'. Independent field, not a substitute for the main HIT/MISS/EXPIRED status.
| tier | 1-period rate | n |
|---|---|---|
| A | 45,1% | 87.837 |
| B | 43,3% | 9.040 |
| D | 42,8% | 8.181 |
| S | 48,8% | 212.591 |
Download
Every backfilled call, unfiltered: record-backfill.csv (17.6 MB, CSV)
Known gaps
- SIGNATURE MISMATCH (central finding, explicitly requested): NO cell in the 48-cell sweep reproduces leppyrd's MISS decision speed. Their record20yr.csv shows MISS median 5-8 periods; every single cell in our grid (d_target in [0.05,0.20] ATR, d_inv in [0.15,1.00] ATR, both N=10 and N=40 lookbacks) gives MISS median 1-3 periods - see sweep_v3.csv column miss_median_period, min=1.0 max=3.0 across all 48 rows. Mechanically this is because ATR is itself the AVERAGE single-bar range, so a single bar's CLOSE crossing a threshold of 0.15-1.00x ATR from entry is a routine, often-1-bar event, especially right after the momentum push that generated the setup. PROPOSAL for the next iteration: replace the single-bar-close invalidation with either (a) a WIDE, TF-scaled invalidation that requires touching a boundary several ATR away (this is what v2's N-bar-range invalidation did, and it DID produce slow MISS - median 17 periods - but was too wide, given hit rate 99.3%), suggesting the true invalidation distance is between v2's N-range width and v3's single-ATR band; or (b) a PERSISTENCE requirement - K consecutive bar closes beyond d_inv before registering MISS, which would let isolated single-bar spikes revert while forcing MISS to wait out a genuine trend, matching HIT staying fast. Neither implemented here (out of scope for this pass) - recommend (b) as the next sweep axis since it directly targets bar-count without re-opening the near/far ATR-distance search.
- Because of the mismatch above, the winning cell is a best-available choice under the documented distance metric, not a close match: hit_pct in the 2-symbol sweep was 90.6% (vs target 80%) and the full 6-market walk-forward gives 89.2% - still meaningfully above the leppyrd 80% target, though the tier distribution now genuinely spans S/A/B/D (unlike v2's near-monolithic S).
- PARAMETER_DISCLOSURE above applies throughout: d_target=0.05 ATR / d_inv=0.15 ATR are a chosen design, not derived truth.
- v1 (literal close-vs-entry rule) kept as *_v1_literal.*; v2 (near=touch-ladder ATR, far=N-range boundary) kept as *_v2_range.* - both superseded by this v3 run for the live deliverable but preserved for audit trail.
- 8396 resolved (HIT/MISS) calls in each market's first calendar year of history have no walk-forward odds (no prior year to fit on) and are dropped from backfill_record.csv, not fabricated.
- No proximity/edge trading gate applied (parity/DESIGN.md point 4) - this is a probability product output, not a trade recommendation.
- Continuous 24h Globex session used, no RTH-only filter. RTY history starts 2017-07 (fewer fold-years than ES/NQ/YM/GC/CL, which start 2010-06).
- EXPIRED (40-period cap, neither side touched) is 0.002% of all calls in the full 6-market build (vs ~0.008% in the 2-symbol sweep) - excluded from the odds fit and from backfill_record.csv, reported separately here.
- DESIGN.md point 2 (call_side/confidence_held/rate_held two-sided grading schema, unified 2026-09-01 evening) is NOT yet implemented in these exports - our calls are already single-directional by construction (the trigger picks UP or DOWN, not both sides of a table cell), so grade is derived directly from odds_assigned without a call_side flip step. This should be reconciled with the /roadmap and /pulse packages' schema in a follow-up pass; flagged here rather than silently left inconsistent.