Amended Master Plan — Thin-Sample Universe Expansion + Infrastructure Gates + COT-Corrected COMMODITY
cot_positioning was using CFTC Tuesday-settled data before Friday release. CT=F paper-pilot's reported DSR=1.0 / WR 90% / n=100 is likely overstated; lag-corrected WR predicted ~45-55%. v1's COMMODITY STABLE_EDGE verdict is now PROVISIONAL.futures_momentum on ZN=F, not real bond_* picks. Zero genuine bond strategy closed picks yet. BOND_ELITE_FLOOR=32 attacks Layer 1 only; Layers 2 (forward-gate override) + 3 (active_picks merge) still open.v1 treated thin sample as a "wait for n to grow naturally" problem. That's slow and assumes the emission pipeline is already firing. For three of our six asset classes, emission is the bottleneck, not data-fetch.
| Class | Data-fetch universe (config.py) | Production-emission universe (gates) | Closed-pick n today | Bottleneck |
|---|---|---|---|---|
| CRYPTO | broad (Binance liquid set) | broad post-quan_engine cap | 7,800 | not emission-bound |
| EQUITY | broad | broad | 447 | not emission-bound |
| FOREX | broad | sizing_allowed=false per PR #909 | 1,357 | intentionally capped until PF≥0.8 |
| ETF | 50+ symbols | same as data-fetch | 107 | just past charter floor |
| COMMODITY | 24 symbols | restricted to HG=F + PL=F per PR #535 | 178 raw / 27 post-filter | emission gate too narrow for the data we have |
| BOND | 14 symbols | bond_* strategies emit 0 picks/run; BOND_ELITE_FLOOR was 40, now 32 | 0 real bond_* / 21 legacy ZN=F | curation gate + forward-gate + active_picks integration all dam the stream |
| FUTURES | 16 symbols | silent-dead after kills with no replacements | 0 | no strategies emitting |
Current PR #535 emission allowlist = HG=F + PL=F only. This restriction was correct for the production sizing path (the killed sub-classes had real losses), but it leaves the walk-forward at n=27 (HG=F=27 / PL=F=0). v1's "STABLE_EDGE" verdict was on the broader 178-row historical sample.
Proposal: add a COMMODITY_SHADOW_UNIVERSE tier that permits emission for {PA=F palladium, BZ=F brent, GC=F gold} at 0% sizing for the next 60 days. Picks accumulate in active_picks.json for tracking but cannot be sized for capital. After 60 days, re-evaluate per-symbol via the mutate-before-kill protocol (docs/MUTATION_THREE_AXIS_PROTOCOL.md) using only the new shadow-period data.
Acceptance: COMMODITY walk-forward n ≥ 100 within 90 days post-COT-lag-patch with PF maintained ≥ 1.5 on the broader universe. If a shadow symbol's WR < 40% on its own n ≥ 25, remove from shadow.
P1 universe-expansionBOND_SYMBOLS already has 14 liquid ETFs (TLT/IEF/SHY/LQD/HYG/JNK/EMB/TLH/MUB/TIP/AGG/BND/BNDX/GOVT). The bottleneck is gates, not symbols.
Layer 1 (SHIPPED): vars.BOND_ELITE_FLOOR=32. Should unblock 7/7 raw signals being rejected at curation.
Layer 2 (open): FORWARD_GATE_OVERRIDES["bond"] = 10 in alpha_engine/forward_validator.py. Currently every bond_* strategy fails the global FORWARD_GATE_MIN_TRADES=50 with 0 closed picks. Per-class override defensible because bond ETFs have lower idiosyncratic vol — 10 trades carry ~the weight of 50 crypto trades.
Layer 3 (open): merge non_crypto_agent/data/bond_picks.json → alpha_engine/data/active_picks.json in the bond-agent workflow. Today bond picks are stats-only via orphan_emitter_bond; they never reach the live sizing path.
Plus Connors RSI2 wire on TLT/IEF/LQD (~120 trades/yr) + credit-spread bond_credit_spread_mean_reversion (env-enabled via PR #545; LQD-HYG pair).
Acceptance: /audit BOND n rises from 21 toward 50+ within 60 days; PF maintains ≥ 1.5 on the new picks (legacy ZN=F pool can stay at 0.66, it'll wash out as real picks accumulate).
P0 3-layer fix clusterFUTURES_SYMBOLS has 16 liquid contracts (ES/NQ/YM/RTY equity index + ZN/ZT/ZB rates + GC/SI/HG metals + 6E/6B/6J/6A/6C FX). Universe is fine; strategies are dead.
Proposal: per the v1 plan + memory, FUTURES was silent-dead after 2 strategies got killed with no replacements. Apply mutate-before-kill (docs/MUTATION_THREE_AXIS_PROTOCOL.md) to the killed pair on the SHORT direction axis (FOREX taught us SHORT-only mutations recover 30-40% of dead strategy classes — updates/2026-05-06-forex-mutation-decisions.md).
If mutation produces a SHORT-axis variant with WR ≥ 50% on n ≥ 20 paper, promote to SHADOW with 0% sizing for 60 days.
P2 mutation-replayETF is at PF 1.34 / WR 56.1% / n=107. Crossed n≥100 charter floor this session. Universe is 50+ symbols; data-fetch isn't bound.
Proposal: apply v1's P1-C floor reductions (Trust -20%, Score -15%, Smart Picks gate 85→70, min-hold ≥ 4h). Target PF 1.5 (T2 PF floor) within 30 days. ETF was the only class with surfaced signal in the research orchestrator's P5 verdicts.
P1 gate-loosenExternal-model review (DeepSeek V4-Pro + Loker 480B + GPT-OSS 120B) converged: infrastructure gates every asset-class promotion, not just CRYPTO/FOREX. The v1 5-plan synthesis missed these. They are now top priority.
| # | Item | Why money-ready needs it | Where it lives |
|---|---|---|---|
| P0.5-1 | Explicit position sizing | Currently sizing_allowed=true is meaningless without vol-targeting + max-allocation-per-name. One high-conviction coin can torch the book. | alpha_engine/position_sizer.py (new) wired into scanner.py + quality_gates.py |
| P0.5-2 | Slippage + execution cost model | No cost model = backtest PF is a fantasy. HG=F futures fills could destroy COMMODITY PF 3.94 once realistic spreads/impact deducted. | per-class bps deduction in outcome_resolver.py + reflected in walk_forward_validate |
| P0.5-3 | Drift circuit-breaker | CRYPTO −31.12pp backtest-live gap is currently charted but not acted on. Need: if realized_wr_30d < backtest_wr - 2σ, auto-flip sizing_allowed=false. | alpha_engine/drift_circuit_breaker.py (new) called from same place PR #909's FOREX sizing-cap fired |
| P0.5-4 | Concentration / correlation controls | COMMODITY = 100% HG=F today. No same-sector CRYPTO limit. A copper rally or single-coin crash can dwarf class diversification. | new tier of quality_gates.py per-class concentration caps |
| P0.5-5 | Portfolio-level MDD limit | Charter §7 specifies daily −3% cap; not verified wired anywhere. Per-class limits don't bite during correlated sell-offs. | alpha_engine/portfolio_circuit_breaker.py already exists; verify wired or wire it |
Sequencing: P0.5-1 (sizing) and P0.5-2 (slippage) are prerequisites for any live-capital decision. P0.5-3 (drift breaker) and P0.5-4 (concentration) are prerequisites for sizing > 0. P0.5-5 (portfolio MDD) is the kill-switch above all of these.
PF 1.55 / WR 53.2% / n=447 — meets Tier 2. Strongest broad candidate per all 5 v1 plans + this session's verification. Path to T2 live capital: after P0.5 infra ships.
Tier 2 ✓Live PF 3.94 / WR 67.8% / n=425 verdict-grade. v1 plan called this "STABLE_EDGE" at PF 3.61. But: CT=F's cot_positioning 90% WR contribution is timing-leakage-confirmed (98%). PR #941 ships the 3-day publication-lag patch. 2026-05-23 paper-pilot graduation gate now requires lag-corrected WR ≥ 75% on full 100-pick history. If WR drops to predicted 45-55%, pilot returns to REHAB.
PF 1.34 / WR 56.1% / n=107. Crossed n≥100. 0.16 short of T2 PF floor.
Tier 3 → T2 nextPF 0.66 / WR 54.5% / n=21 legacy ZN=F (no real bond_* picks closed). Layer 1 shipped (BOND_ELITE_FLOOR=32); Layers 2 + 3 outstanding.
n=0. No emission. Universe is fine; strategies dead.
mutate-before-kill replayReal-money gate (unchanged from v1): ≥ 2 asset classes at Tier 2 (PF > 1.5, WR > 50, MDD < 20, n ≥ 100, walk-forward consistency ≥ 70%) AND P0.5-1 through P0.5-5 all shipped.
Realistic 2-class T2 lineup at 60-day horizon (post-COT-correction): EQUITY + ETF (if PF clears 1.5) or EQUITY + COMMODITY (if lag-corrected WR holds ≥ 60%). BOND is 90-day horizon dependent on Layers 2 + 3.
BOND_ELITE_FLOOR=32 via gh variable set (GH_ALLREPO_KEYS token)External-model second-opinion is now part of the standard toolkit. When internal swarms converge on a plan, query 2-3 external models (DeepSeek V4-Pro, Loker 480B, GPT-OSS 120B via Ollama Cloud) in parallel. Where they converge on a specific hypothesis, dispatch an Explore subagent to code-audit. Where they converge on a generic infra gap, queue it as P0.5. Cost is trivial (~$0.02/round for DeepSeek); catches consensus risk that single-agent or single-internal-swarm sessions miss.
The COT timing-leakage caught this round — before any real capital touched the CT=F paper pilot — justifies the procedure indefinitely.