Add GTL strength confirmation sensitivity

This commit is contained in:
2026-07-13 15:42:47 +02:00
parent 30fd5a029b
commit 7162272cc0
5 changed files with 369 additions and 0 deletions
+27
View File
@@ -879,6 +879,33 @@ matrix before any research arm is accepted.
backtest_snapshots/prod.sqlite --workers 12
```
Result: **13/13 arms completed with exact control parity; no arm passed all six
guardrails.** The decomposition does identify one near-hit:
| Arm | Full Sharpe | Train | Post-2024 | CAGR | Max DD | Trades |
|---|---:|---:|---:|---:|---:|---:|
| Control | 2.03 | 1.28 | 2.78 | 50.0% | 21.4% | 321 |
| Strength-1000 intersection | **2.06** | **1.30** | **2.82** | **50.7%** | 21.7% | 316 |
Strength confirmation removes only 49 of 1,086 qualified control setups. Those
removed setups average +0.142R, but turn negative after removing their largest
5% of outcomes (-0.044R); the retained 1,037 average +0.212R and +0.054R
ex-top-5%. This is consistent with a weak tail-dependence filter. It is not yet
a winner: the original drawdown guardrail remains fixed, and 21.7% is worse
than 21.4% even though the difference is small.
The final parameter test is therefore deliberately one-dimensional. It sweeps
coarse strength scales around 1000 (625, 750, 875, 1000, 1125, 1250, 1500,
2000), using intersection only. It must reproduce both the frozen control and
the completed strength-1000 result exactly. Promotion requires at least two
adjacent non-control scales to pass all six original checks; an isolated winner
is rejected as sensitivity.
```bash
.venv/bin/python scripts/run_gtl_strength_sensitivity.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.