TradeAC Experiment Queue — Series 2 (Q12+)
Purpose. The next pre-registered batch of experiments, continuing Series 1
(Q01–Q11, exp 33–43, all executed and folded into book/CLAIMS.md /
book/EVIDENCE.md). Each entry targets a still-unproven HYPOTHESIS from the
book or an open question flagged in CLAIMS.md/book/README.md, and follows the
Series-1 discipline: one variable changed vs the exp-26 reference, acceptance
fixed BEFORE the run, sequential execution, trace-first, verify-then-close.
Reference / control (MUST reproduce first). exp 26 (21afc6af…, mlflow exp
25) is the campaign baseline; exp 39 (Q07, weekly rebalance) is the best
construction. Reference config is byte-reproduced in workflows/exp26/ on the
exp/26-… branch and in this dir's workflows/*.yaml.
| Config element | exp-26 reference value |
|---|---|
| Universe | 50-ETF panel (UNIVERSE below) |
| Features | compact stochastic 25-field set (no ou/hmm/moments/garch) |
| Label | Ref($close,-6)/Ref($close,-1)-1 (5d) |
| Model | RankICEnsembleLGBModel, seeds 42,7,2026,99,123, lr 0.02, leaves 31, 3000 rounds, ES 200 |
| Segments | train 2016-01-04..2025-09-01 / valid 2025-09-03..2026-01-03 / test 2026-01-04..2026-08-10 |
| Strategy | TopkDropout, topk 10, n_drop 1, risk_degree 0.95 |
| Costs | open 0.0005 / close 0.0015 / min $5, deal $close, SPY benchmark, $1M |
Reference metrics to beat (EVIDENCE#015): net_ann +2.13%, net_IR 0.21, gross +7.02%, maxDD −7.69%, RankIC 0.0663, RankICIR 0.2545, L/S Sharpe 4.54. Weekly (Q07, EVIDENCE#028): net +12.51%, IR 1.24, maxDD −4.13%, ~1.1pp cost drag.
The queue (ordered by value × feasibility)
| ID | Title / hypothesis | Change vs reference (ONE var) | Acceptance | Config | Ready? |
|---|---|---|---|---|---|
| Q12 | 22d label + weekly recompute — the untested combo: Q05's label edge (IC 0.097, RankIC 0.117) with Q07's cost relief | label → 22d AND strategy → weekly (two coupled, explicitly pre-registered) | net_IR > 0.5, net_ann > +5%, cost drag ≤ 2pp | workflows/q12_label22d_weekly.yaml |
✅ |
| Q13 | Weekly rebalance reproduction on a 2nd window — Q07 was a single OOS window; reproduce on test 2025-01-02..2025-12-31 before promoting to a live round | segments only (shifted) | net_IR > 0.21, net_ann > +2.13% on the new window | workflows/q13_weekly_second_window.yaml |
✅ |
| Q14 | Out-of-universe validation — compact stochastic set generalizes off the 50-ETF panel to a single-stock universe | universe → 30 liquid single names | RankIC > 0.03, ICIR > 0.15, net IR > 0 on stocks | workflows/q14_out_of_universe.yaml |
⚠️ needs stock-lake backfill (see design) |
| Q15 | 5-seed vs single-model clean A/B — seed-count claim (exp 12 idea, re-validated exp 22–24, never a clean A/B) | seeds → 1 (2026) |
single-model RankIC/IR < 5-seed ref; net_IR ≥ 0.21 acceptable if ≥ single | workflows/q15_single_seed.yaml |
✅ |
| Q16 | HMM family added as features — settles "dropping model-specific (ou,hmm) improves signal" (exp 25 tested OU; hmm-as-feature untested) | features += sp_hmm_p_regime1,sp_hmm_state |
no improvement: RankIC ≤ 0.0663, net_IR ≤ 0.21 | workflows/q16_hmm_features.yaml |
✅ |
| Q17 | Realized-moments family added — settles "moment/volatility families regress" (exp 11 idea, never clean A/B) | features += sp_rskew_5,sp_rskew_22,sp_rkurt_5,sp_rkurt_22,sp_dsv_5,sp_dsv_22 |
no improvement: RankIC ≤ 0.0663, net_IR ≤ 0.21 | workflows/q17_moments_features.yaml |
✅ |
| Q18 | OptimalStopControl clean re-test — exp 13/14 claim (TopkDropout > stop-control) never re-tested post-reset | strategy → OptimalStopControl (exp-13 params) |
TopkDropout net_IR ≥ stop-control net_IR; document cost drag | workflows/q18_optstop.yaml |
✅ (module verified in venv) |
| Q19 | Martingale / variance-ratio study close-out — exp 19 never closed; VR<1 at 5–20d on clean lake | ad-hoc script (no qrun) | VR stats + drift decomposition on 50-ETF panel | designs/q19_martingale_vr.md |
✅ script |
| Q20 | Effective independent names (≈4) — eigenvalue analysis on clean-lake covariance | ad-hoc script | eigenvalue spectrum + effective-rank count | designs/q20_effective_names.md |
✅ script |
Deferred (methodology / infra, P3)
- Purged / walk-forward CV (was queue's old Q12) — methodology, not an alpha lever.
- PSI-based drift-aware retraining cadence — needs a drift-gate module + a retrain decision rule.
- No-trade buffer band / notional-vs-qty sizing — siblings of Q12/Q13; queue only if weekly reproduces.
- Macro/drift overlays (SPY>200d regime gate, momentum tilt) — needs new data pipeline.
Execution protocol (per queued run)
- Validate the lake first (
validate_lake_dataset+rd_status) — clean-lake lesson: silent NaN-drops and hollow coverage invalidate a run. Q14 additionally requires backfilling the single-stock universe (bars + sp/ta features, full range, explicitstart/end). - Trace before running (
rd_trace_startwith the hypothesis asrational, freshexperiment_name,evolved_from=auto). - Run
rd_run_workflow config_path=<abs path to the queue YAML> experiment_name=<fresh name>—wait=false, pollrd_exp_get_rununtilFINISHED. - Verify against acceptance via
rd_exp_result(headline + backtest risk). - Finish the trace (
rd_trace_finishwithmetrics+evaluation), snapshot any changed contrib modules. - Report to the book — PROVE/REFUTE → update
book/CLAIMS.md+book/EVIDENCE.md.
Sequential execution only (concurrent runs hang — chat-ideas.md ops lesson). Any
custom strategy/module changed here must be copied into the venv site-packages
snapshot before rd_run_workflow can import it (see /app/AGENTS.md). As of
2026-08-20 WeeklyRebalanceDropoutStrategy and OptimalStopControl are verified
in sync with the venv snapshot; the lake already persists the sp_hmm_* and
sp_moments families on the 50-ETF panel.
Provenance
Mined 2026-08-20 from book/CLAIMS.md, book/EVIDENCE.md, book/README.md,
book/references/chat-ideas.md, and Series-1 queue/ (Q01–Q11, executed exp
33–43). Reference numbers are post-clean-lake (exp 21+).