Add GTL cohort composition backtest

This commit is contained in:
2026-07-13 14:22:56 +02:00
parent 3f86aec0be
commit 623dc08875
8 changed files with 755 additions and 6 deletions
+34
View File
@@ -845,6 +845,40 @@ the top 5%. Passing identifies a candidate for forward paper validation, not an
automatic deployment. The post-2024 interval has already influenced this
research, so the split is a robustness check rather than a pristine holdout.
Result on the 2026-07-13 snapshot: **20/20 arms completed; no replacement arm
passed all six checks.** The frozen control remained best on full-period Sharpe
(2.03), CAGR (50.0%), and post-2024 Sharpe (2.78), with 321 production trades
and 21.4% drawdown. The closest replacement, 0.25% touch padding, still fell to
Sharpe 1.94 / CAGR 47.9%. This rejects direct constant replacement; the inherited
behavior is not explained by one obvious GTL knob.
The paired cohorts do expose a narrower mechanism worth testing:
| Variant | Retained control setups | Added by variant | Removed from control |
|---|---|---|---|
| 0.25% touch | 1,049 at +0.214R (+0.058 ex-top-5%) | 18 at -0.235R | 37 at -0.056R |
| Strength 1000 | 1,037 at +0.225R (+0.069) | 122 at +0.301R (+0.152) | 49 at +0.142R (-0.044) |
| 0.25% merge | 791 at +0.238R (+0.078) | 365 at +0.161R (+0.023) | 295 at +0.129R (-0.008) |
| Grid without pivots | 428 at +0.232R (+0.100) | 392 at +0.176R (+0.046) | 658 at +0.208R (+0.041) |
Replacement mixes the retained and added cohorts and also discards the removed
cohort, so its portfolio result cannot say which part helped. The follow-up
`gtl_confirmation` matrix therefore preserves frozen control geometry and
decomposes each selected variant into:
- **intersection** — only control setups also core-qualified by the variant;
- **union** — all core-qualified control setups plus genuinely added variant
setups, using tuned geometry only for those additions.
It also tests pre-registered intersections among the three high-breadth
confirmers. Its control path must exactly reproduce the completed tuning
matrix before any research arm is accepted.
```bash
.venv/bin/python scripts/run_gtl_confirmation_matrix.py \
backtest_snapshots/prod.sqlite --workers 12
```
The post-2024 window has been opened and is now analysis data, not a valid final
promotion holdout. These arms can isolate mechanism, but neither may ship without
new future data or a separately pre-registered walk-forward protocol.