Strategies · Record

A2.10 — Final-Hour Reversion v2

a2 / a2-final-hour-reversion-v2 @ a2-v1 · code b29299a

campaign strategyshadow runner armedLIVE SHADOW

A2Dot10ShadowRunner is deployed, wired into lib/live/webhookProcessor.ts, and ARMED at its verified production true-live boundary (2026-09-16T21:12:31.000Z). Only signals entering at or after that instant count toward the prospective sample -- see /api/live/a2dot10-tally.

Lifecycle
current
Outcome
Phase
Phase B
Research gate
FINAL_AUDIT
Engine
strategy lab
Market
MNQ
Timeframe
MNQ 1-minute OHLC
Side
BOTH

Tracking

Family, lineage and what this record needs next
Mechanism family
Session / time-of-day
a2-final-hour-reversion-v2
Mechanism parent
finalHourReversion
Phase detail
Prospective live-shadow evaluation, runner armed. No order execution.
Next required test
Continue accumulating prospective live-shadow observations toward its declared gate.

Integrity & certification

Signals as recorded; NOT_PASSED means not passed or not applicable
Engine certified
unknown
Execution certified
unknown
Integrity audit
not passed
Shadow verifier
unknown
Technical invalidation
None recorded.
Note
Holdout expectancy diverges materially from Validation's own -- treat as a fresh, not fully explained, open question.

Artifacts

Everything committed for this record
Campaign record (A2)
research-output/strategy-lab/campaigns/a2/campaign_state.json
Holdout artifacts
research-output/strategy-lab/campaigns/a2

Stage ladder

Each cell carries the campaign runner's own classification label — hover for the verdict and its reason
Intake
passed
Pre-reg
passed
Lightning
passed
Robust
passed
Exec/stat
passed
Validation
passed
H-eligible
passed
Holdout
passed
Audit
inconclusive
Closed
inconclusive
INTAKE
Registered into campaign A2 at code version b29299a.
PREREGISTRATION
Pre-test passed: distinct, causal, executable, required data available.
LIGHTNING
SURVIVED_LIGHTNING_SCREENAggregate expectancy 0.3016R (PF=1.708) over 451 resolved trades, 3/4 qualifying years (n>=15) agree with the aggregate sign, top-10 winner concentration 14.7% (below the 50% concentration flag). Survives the Lightning Screen -- NOT validated.
ROBUSTNESS
ROBUSTNESS_SURVIVEDNo single-year dependence, no severe winner concentration (no preregistered neighborhood declared).
EXECUTION STAT
EXECUTION_STAT_SURVIVEDBootstrap CI excludes zero and the edge survives up to 0.5pt adverse slippage.
VALIDATION
VALIDATION_SURVIVEDValidation expectancy 0.4091R holds sign and reasonable magnitude relative to Discovery's 0.2661R.
HOLDOUT ELIGIBILITY
HOLDOUT_ELIGIBLESurvived Lightning Screen, the Robustness Gauntlet, the Execution+Statistical Gate, and the Validation/Walk-Forward Gate against 357 Discovery and 88 Validation trades.
HOLDOUT
HOLDOUT_OPENED_ONCEDiscovery: n=357, expectancy=0.2661R, PF=1.609. Validation: n=88, expectancy=0.4091R, PF=2.029. Holdout (this run, sealed bank immediately after A12's consumed slice, stop reason=FORMAL_TARGET_100): n=100, expectancy=0.2600R, PF=1.553.
FINAL AUDIT
a2-final-hour-reversion-v2@a2-v1: economic credibility=true, statistical credibility=true, executable=true, stable=true, distinct=true. 1 unresolved risk(s) flagged.
CLOSED
RESERVE_RESEARCH_VERSION_REQUIREDSurvived Holdout but the Final Research Audit flagged unresolved risk(s): Holdout expectancy diverges materially from Validation's own -- treat as a fresh, not fully explained, open question..

Evidence recorded

Quoted from the campaign record — never recomputed here
Screen n (FIXED_2R)
451
Expectancy
+0.302R
Profit factor
1.71
Win rate
57.4%
Total R
136
Max DD
13R
Longest L streak
5
Trades / year
128.4
SplitWindownExpectancyPFMax DD
Discovery2022-06-03..2025-03-31357+0.266R1.6113R
Validation2025-04-01..2025-12-3188+0.409R2.033R
Holdoutsealed bank slice100+0.260R1.557R
Discovery → Validation
Expectancy degradation -0.143R (positive means Validation came in weaker than Discovery).
Bootstrap CI
95% CI +0.169R .. +0.441R · P(expectancy > 0) = 100%
Winner concentration
Top 5 7.4% · top 10 14.7% · top 20 29.4% of total R.
Leave-one-year-out
No sign flip when any single year is removed.
Holdout vs prior evidence
Discovery: n=357, expectancy=0.2661R, PF=1.609. Validation: n=88, expectancy=0.4091R, PF=2.029. Holdout (this run, sealed bank immediately after A12's consumed slice, stop reason=FORMAL_TARGET_100): n=100, expectancy=0.2600R, PF=1.553.

Read from research-output/strategy-lab/campaigns/a2/campaign_state.json

Holdout position

One-shot, sealed, never retried
Eligible
Yes — the campaign recorded Holdout eligibility.
Authorised
Yes, 2026-09-16 02:39Z
Authorised by
AJ <meatham07@gmail.com> -- explicit chat authorization ('AJ APPROVAL -- A2.10 UNTOUCHED HOLDOUT'), trade-count-based deterministic Holdout consumption policy, 2026-09-16
Specification frozen
Fully frozen before the Holdout was opened.
Sealed data consumed
Yes — this Holdout is spent and can never be re-run.
Slice consumed
2019-05-21 11:26Z → 2020-04-20 19:05Z · 315,910 bars · 100 trades · stop reason FORMAL_TARGET_100
Preserved unused
749,233 sealed bars left for later strategies.
Validation data consumed
Yes.

Read from research-output/strategy-lab/campaigns/a2/A2_10_HOLDOUT_LEDGER.json · research-output/strategy-lab/campaigns/a2/A2_10_HOLDOUT_RESULT_REPORT.json

Lineage

Declared at intake, carrying any prior negative result
Relation to prior work
experimental descendant
Parent
finalHourReversion
Note
Adds a cross-day realized-volatility-regime condition (today's RTH range-so-far vs a trailing 20-day baseline of the same statistic) that FLIPS the parent's unconditional fade to continuation on high-volatility days. This is a genuine new causal mechanism (a regime-conditional bidirectional model), not a different threshold/stop/target/window/long-short filter on the same fade -- the parent's own fade logic is reused verbatim for the non-flipped branch.

Bot testers on this strategy

Automated harnesses producing its evidence
armed
A2.10 Final-Hour Reversion v2 shadow runnerlib/strategy-engine/research/a2Dot10Shadow/runner.ts

Frozen specification

Snapshotted at intake — not re-read from a live module
Mechanism hypothesis
Late-session range-extreme mean-reversion (the parent Final-Hour Reversion thesis) only holds on calm days; on days whose own realized range-so-far is unusually large relative to recent history, the late-session extreme instead tends to continue rather than revert.
Long rule
At the first RTH bar at/after 15:00 ET, score that bar's close against the day's own prior RTH high/low (from 09:30, strictly before this bar). Compute ratio = (today's prior RTH range) / (trailing 20-day average of that same statistic, prior days only). If ratio >= 1.5: trade CONTINUATION (long if close is near the range top, short if near the bottom). Otherwise: trade the ORIGINAL fade (short if near the top, long if near the bottom) -- identical to the parent Final-Hour Reversion engine. No trade if fewer than 20 prior days are recorded yet.
Short rule
Symmetric direction mapping as described above.
Entry trigger
The first RTH bar at/after 15:00 ET whose close is within 0.15 of the day's own prior RTH high or low, with direction determined by the realized-volatility-regime ratio described above.
Earliest executable entry
Next 1-minute bar's open after the triggering bar closes.
Initial stop
The day's own prior RTH extreme relevant to the trade direction (already fully known at trigger time) -- identical to the parent.
Exit
FIXED_2R only (this A2 batch's declared scope), via the shared TradeTracker; 5-day max-hold expiry as a backstop.
Causality
priorRthHigh/priorRthLow only accumulate from bars strictly before the current one (identical to the parent). The trailing-day baseline only ever includes days strictly before today, and today's own value is never included in its own baseline. Entry is deferred to the next 1-minute bar's open after the trigger bar closes. No same-bar entry.
Expected frequency
LOW
Required data
MNQ 1-minute OHLC
Campaign data window
MNQ 2022-06-03..2026-09-15
Parameters
extremeThreshold = 0.85 (number) — Range-position threshold for a bar to count as near an extreme (identical to the parent).realizedVolLookbackDays = 20 (integer) — Trading days of trailing baseline for today's own RTH-range-so-far statistic.highVolRatioThreshold = 1.5 (number) — Ratio at/above which the economic thesis flips from fade to continuation.

Read from research-output/strategy-lab/campaigns/a2/campaign_state.json

History

Every dated event this record appears in, newest first
2026-09-16
Holdout result recorded for A2.10RESERVE_RESEARCH_VERSION_REQUIRED
100 trades consumed · stop reason FORMAL_TARGET_100 · 749,233 sealed bars preserved unused · Survived Holdout but the Final Research Audit flagged unresolved risk(s): Holdout expectancy diverges materially from Validation's own -- treat as a fresh, not fully explained, open question..
research-output/strategy-lab/campaigns/a2/A2_10_HOLDOUT_RESULT_REPORT.json
2026-09-16
One-shot sealed Holdout authorised for a2-final-hour-reversion-v2
AJ <meatham07@gmail.com> -- explicit chat authorization ('AJ APPROVAL -- A2.10 UNTOUCHED HOLDOUT'), trade-count-based deterministic Holdout consumption policy, 2026-09-16
research-output/strategy-lab/campaigns/a2/campaign_state.json
2026-09-16
Sealed Holdout slice assigned to A2.10
Evaluated chronologically forward from 2019-05-21T11:26:00.000Z, frozen before evaluation.
research-output/strategy-lab/campaigns/a2/A2_10_HOLDOUT_LEDGER.json
2026-09-16
a2-final-hour-reversion-v2@a2-v1 registeredACTIVE_RESEARCH · HOLDOUT
[a2] Holdout-eligible but awaiting explicit human authorization -- automatic routing stops here per spec Sec. A#.6, never opens Holdout on its own.
research-output/strategy-lab/experiment_registry.json