← all research
VALIDATED

"Flagship Expansion — Final Decision Report (2026-08-20)"

2026-08-20

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:

metricB59 mc8 h5 (deployed)C59 mc8 h5+h21 (region-A)
full total+1303.4%+1310.2%
full CAGR+14.30%+14.34%
max DD32.9%36.6%
Sharpe0.810.81
PF1.331.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:

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)

checkresult
MC 40 perm / 10k bootstrap, region-Ap=0.000, P(loss)=0.000, 95% CI [1,011k, 2,616k] vs realized 1,410k
MC ext=0.25 tl=0.25p=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+ regimeblend restores y21 CAGR from 8.71% (B59) to 17.71%

What changed / artifacts

Deployment — DONE (2026-08-20)

The C59 blend is now the live flagship signal:

  1. execution/flagship_signal.py — h21-tagged model checkpoints ({sym}_h21_{cutoff}.joblib, meta records horizon; h5 path unchanged for back-compat), parameterized extend_scores(horizon=), and blend_live() producing the traded cache phase1_..._w12_live_h5h21.pkl (combined = 0.5·h5 + 0.5·h21, ml_active = AND).
  2. flagship_live.py update now runs h5 leg → h21 leg → blend; flagship_trader.py and all reporting tools read LIVE_NAME (the blend) unchanged.
  3. h21 leg pre-warmed offline (56 periods, 224 new bars, 30 min) — daily updates are incremental (fetch once per leg, predict, no retrain).
  4. Flagship loop restarted (new pid), start_bots.py --status[ OK ].

Deployment requirements from the pre-approval analysis:

  1. execution/flagship_signal.py runs daily extension for ONE horizon today (h5), and caches trained models at models/checkpoints/flagship/{sym}_{cutoff}.joblib. The h21 leg needs the same extension with PREDICTION_HORIZON=21 — model checkpoints must be horizon-tagged or the two legs overwrite each other.
  2. Two live caches (..w12 and ..w12_h21) feed one blended combined = 0.5·h5.combined + 0.5·h21.combined with ml_active = h5 AND h21.
  3. Recommend adding an h21 extension job to flagship_live.py daily flow (fetch once, extend both, blend) — single fetch, two model legs.

Files

filepurpose
reports/flagship_expand.md4-bundle sweep + MC + OOS (51-sym / h5 era)
reports/flagship_expand_59.mdC59 blend sweep (17 overlay configs)
reports/flagship_oos_split.mdOOS split, mc8 h5
reports/flagship_oos_split_c59.mdOOS split, C59 blend
reports/flagship_expand_final.mdthis report
scripts/flagship_expand.pytooling to reproduce any table