the decision metric (compare_mc8.md caveat).
TL;DR
Deploy the C59 blend (mc8 59-sym universe, h5+h21 model blend, region-A config). It keeps the full 20y mega-cap CAGR but fixes the recent regime that made the current B59 deployment painful:
| metric | B59 mc8 h5 (deployed) | C59 mc8 h5+h21 (region-A) |
|---|---|---|
| full total | +1303.4% | +1310.2% |
| full CAGR | +14.30% | +14.34% |
| max DD | 32.9% | 36.6% |
| Sharpe | 0.81 | 0.81 |
| PF | 1.33 | 1.44 |
| 2021+ CAGR | +8.71% | +17.71% |
| trailing 1y | -6.9% | +10.2% |
| 2026 YTD | -12.0% | +3.9% |
The blend recovers essentially all of the h21-era edge (2026 +27% on the 51-sym A21, 2026 +3.9% at 59 syms) while keeping the mega-cap full-history return (B59 +1303%).
Overlay decision
Region-A stays. The held-out-validated overlay choice was already shipped to B59 and also validates on C59, but does not dominate region-A once blended:
- C59 region-A (ext=0.25 tl=0.00): full 14.34% CAGR, PF 1.44, 1y +10.2%, 2026 +3.9%. OOS test CAGR 17.71%. MC baseline +1310% (0/40 null beat it, p=0.000; P(loss)=0.000).
- C59 ext=0.25 tl=0.25: full 15.82% CAGR, PF 1.43, 1y +0.4%, 2026 -5.4%. OOS test CAGR 17.88% (best held-out), MC baseline +1716% (p=0.000; wider CI).
- C59 ext=0.60 tl=0.25: highest full CAGR (16.67%), OOS 17.80%, but 2026 +7.2% and OOS test DD 31.3% (vs 25.7%).
- C59 ext=0.40 tl=0.25: 16.22% CAGR, 2026 +10.5%, OOS 16.36% (mid-pack held-out).
Takeaway: the overlay edge that mattered on the h5 cache is compressed once h21 joins. Per the OOS discipline (compare_mc8 OOS chapter), do not hot-swap configs. Ship the blend at region-A; revisit the overlay only if a future OOS window supports it.
Validation summary (all on C59 blend)
| check | result |
|---|---|
| MC 40 perm / 10k bootstrap, region-A | p=0.000, P(loss)=0.000, 95% CI [1,011k, 2,616k] vs realized 1,410k |
| MC ext=0.25 tl=0.25 | p=0.000, CI [1,327k, 3,473k] vs realized 1,816k |
| OOS split (tune 16-20 / test 21-26) | top test CAGRs 17.7-17.9%; all 17 configs keep tune+test edge, no overfit signature |
| 2021+ regime | blend restores y21 CAGR from 8.71% (B59) to 17.71% |
What changed / artifacts
scripts/build_mc8_h21.py— h21 cache builder (PREDICTION_HORIZON=21).scripts/watchdog_mc8_h21.py— auto-restart watchdog (build completed 59 syms, ~06:03).scripts/flagship_expand.py— sweep/MC/OOS tool (now handles--only59correctly).- Caches:
phase1_..._w12_h21.pkl(new, 13.4 MB); blend built live in-memory. - Reports:
flagship_expand.md,flagship_expand_59.md,flagship_oos_split.md,flagship_oos_split_c59.md.
Deployment — DONE (2026-08-20)
The C59 blend is now the live flagship signal:
execution/flagship_signal.py— h21-tagged model checkpoints ({sym}_h21_{cutoff}.joblib, meta records horizon; h5 path unchanged for back-compat), parameterizedextend_scores(horizon=), andblend_live()producing the traded cachephase1_..._w12_live_h5h21.pkl(combined = 0.5·h5 + 0.5·h21, ml_active = AND).flagship_live.py updatenow runs h5 leg → h21 leg → blend;flagship_trader.pyand all reporting tools readLIVE_NAME(the blend) unchanged.- h21 leg pre-warmed offline (56 periods, 224 new bars, 30 min) — daily updates are incremental (fetch once per leg, predict, no retrain).
- Flagship loop restarted (new pid),
start_bots.py --status→[ OK ].
Deployment requirements from the pre-approval analysis:
execution/flagship_signal.pyruns daily extension for ONE horizon today (h5), and caches trained models atmodels/checkpoints/flagship/{sym}_{cutoff}.joblib. The h21 leg needs the same extension withPREDICTION_HORIZON=21— model checkpoints must be horizon-tagged or the two legs overwrite each other.- Two live caches (
..w12and..w12_h21) feed one blendedcombined= 0.5·h5.combined + 0.5·h21.combined withml_active= h5 AND h21. - Recommend adding an h21 extension job to
flagship_live.pydaily flow (fetch once, extend both, blend) — single fetch, two model legs.
Files
| file | purpose |
|---|---|
reports/flagship_expand.md | 4-bundle sweep + MC + OOS (51-sym / h5 era) |
reports/flagship_expand_59.md | C59 blend sweep (17 overlay configs) |
reports/flagship_oos_split.md | OOS split, mc8 h5 |
reports/flagship_oos_split_c59.md | OOS split, C59 blend |
reports/flagship_expand_final.md | this report |
scripts/flagship_expand.py | tooling to reproduce any table |