Trading Bot HQModels & runsTestsResearch

Test catalog — every test the project has run, by kind

As of 2026-07-25. Sources of record: bot/runs/registry.db (execution-level runs), bot/runs/experiments.db (scans/measurements, 137/2000 hypotheses), preregistrations in bot/preregistrations/, scan declarations in engine/scans/.

Kind 1 — Walk-forward backtests (parameters FITTED, then tested out-of-sample)

Grid-searched on in-sample windows, evaluated only on stitched out-of-sample windows (walkforward.py). Used whenever a spec has tunable parameters.

Run Strategy Instrument Verdict
1 donchian_external GBPUSD FAIL
2 london_breakout GBPUSD FAIL
3 dual_thrust EURUSD FAIL
5 expansion (mentor v1) GBPUSD FAIL
8 expansion_v2 GBPUSD FAIL
9 expansion_v2 EURUSD FAIL
16 fable_mentor_internal XAUUSD FAIL (net; gross signal held)
18 fable_mentor_internal_btc BTCUSD (normalized index) FAIL (signal inverted)

Kind 2 — Zero-free-parameter event-follow backtests (nothing fitted → no walk-forward needed)

Every constant inherited from a prior declared scan and frozen in a prereg BEFORE the run; sequential simulation with stops/costs; coin-flip control on identical events. Walk-forward exists to stop fitted parameters leaking; with zero fitted parameters there is nothing to leak — the residual risk is hypothesis selection, handled by Kind 4.

Run Strategy Split Verdict
17 mentor_btc_v1 (screenshot-derived arms) Research FAIL (H1 refuted, n=11,836)
19 disp_follow_btc_v1 Research BAR MET (+0.28R net A2)
21 streak_follow_btc_v1 Research BAR MET (+0.107R net)

Kind 3 — True holdout test (the only genuine out-of-sample evidence)

Frozen spec, never-scanned data, pre-registered criteria, machinery guard (bit-exact reproduction of the research run first), one shot, fail-is-final.

Run Strategy Split Verdict
20 disp_follow_btc_v1 Validation 2023-01→2025-06 (look 1/10) VALIDATION FAIL

Kind 4 — Layer-3 event-study scans (no execution; four-null battery)

Declared-then-run through Edge Lab (or its bespoke predecessor). No fills, stops, or costs — pure "does the market move after X" with unconditional, frequency-matched-random, label-shuffle, and ISO-week block-bootstrap nulls. All on the Research split.

Ledger Scan Instrument Verdict
2 displacement continuation BTCUSD STRONG (later Validation-failed at execution)
3 displacement replication XAUUSD 2.5y underpowered
4 displacement replication GBPUSD not comparable
5 displacement replication XAUUSD 10y REFUTED (sign inverts)
6 displacement replication ETHUSDT CONFIRMED (crypto-class)
8 level-reaction (R7) BTCUSD NULL all 16 cells
9 H4-open ignition (R3) BTCUSD FAIL (anchored moves reverse)
10 rhythm falsification (R4) BTCUSD survived narrowly (up-streak≥8 only)
11 session structure BTCUSD Europe vol-elevated; window NOT an amplifier
12 up-streak replication ETHUSDT REPLICATED (all 4 criteria)

Kind 5 — Descriptive measurements (Track M; no returns evaluated)

Ledger Test Verdict
7 B4 fit: mentor's stops vs R7 levels (n=20, 10k-permutation null) NOT CONFIRMED

Kind 6 — Robustness characterization (not evidence of edge)

Artifact Test Result
reports/montecarlo/trades-A2-mc.* Block-bootstrap MC on run 19 trades machinery demo
reports/montecarlo/trades-A1-mc.* Block-bootstrap MC on run 21 trades p95 DD 68R; median path 40% under water

Kind 7 — Machinery verification (proves the tools, not the market)

The overfitting question, answered honestly

Protections in force: pre-registration before every run (constants frozen, one run per registration); zero-free-parameter execution specs; every hypothesis logged (137/2000) with project-wide BH-FDR; four-null batteries; coin-flip controls on identical events; dose-response/neighborhood checks instead of single-point thresholds; two-instrument replication requirements; the ex-ante cost kill rule; and the Research/Validation/Vault split with a 10-look lifetime budget enforced in code.

Residual risk, stated plainly: research-split results are still selected — the streak finding emerged from scanning that same data, so its +0.107R is best read as an upper bound. That selection effect is exactly what the Validation split exists to catch — and run 20 proves the catch works: displacement looked at least as good on research and failed the holdout decisively. Nothing in this project is called an edge until it survives a Validation look, and nothing is called deployable until Vault + paper. By design, the honest answer to "did we overfit?" is: the research numbers probably flatter; the process assumes so; the holdout decides.