GREEN sprint: S6 asset picker + EsoF regime gate + AEM shadow-complete [S6 sizing suspended — overfitting] #1
Reference in New Issue
Block a user
No description provided.
Delete Branch "exp/green-s6-esof-aem-shadow-2026-04-21"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
GREEN S6/EsoF/AEM sprint —
exp/green-s6-esof-aem-shadow-2026-04-21.V7 stays authoritative (most likely cause of GREEN's ROI-positive delta vs BLUE). AEM stays shadow-only. All three sprint features are toggle-gated; one config flip reverts GREEN to pre-sprint behaviour.
Commits (6)
1 ·
ce7f3ce— AlphaAssetSelector bucket-ban kwargs (BLUE no-op)alpha_asset_selector.py— Addsasset_bucket_ban_set/asset_bucket_assignmentskwargs. Banned-bucket assets are skipped so the next-ranked asset takes the slot — capital preserved vs a 0× sizer which wastes the slot. Both defaultNone→ BLUE unchanged.2 ·
0da46d8— Orchestrator single-site: S6 + EsoF + int-leverage gateesf_alpha_orchestrator.py— All sizing mults applied at one location (_try_entry~line 565). EsoF regime gate at_try_entrytop; S6 per-bucket mult; integer-leverage gate (leverage_int=1FIXED pending winrate analysis,leverage_rawpreserved for CH);notional≤0→Noneguard; NDPosition extended with observability fields.3 ·
af5156f— EsoF NEUTRAL→UNKNOWN rename + backward-compat aliasesof_advisor.py,esof_gate.py,prod/docs/ESOF_LABEL_MIGRATION.md— 637-trade retrospective shows mid-band is worst-ROI (signals in conflict, not neutral).NEUTRALalias kept in all dicts so historical CH rows resolve.4 ·
48dcf3f— AEM per-bucket MAE_MULT + shadow logging completenessadaptive_exit_engine.py,dolphin_actor.py— Shadow-only.MAE_MULT_BY_BUCKET: B3→None (natural winners, disables stop), B4→2.0 (strict), B6→6.0 (extreme vol). Shadow schema extended with Nullable columns;log_shadow()carries V7 head-to-head + naive counterfactual for future demotion analysis.5 ·
36d263e— GREEN config wiring + S6 recompute toolinggreen.yml,green_s6_table.yml,prod/scripts/—green.yml: ban_set=[4], s6_size_table, esof_sizing_table (UNKNOWN→0.25, UNFAV→0.0), use_int_leverage.blue.ymlunchanged. Recompute script + Prefect flow (30d cadence, 20%-variance guard). Leverage winrate analysis script (read-only).6 ·
aac4484— GREEN-only feature teststest_green_only_features.py— Toggles-OFF identity, selector ban slot-rerouting, AEM MAE table values, EsoF rename+alias, int-leverage still at 1x with option comments. Existing 104-test parity file left intact.Kill-switch
Merge gate
Per
prod/docs/BRANCHING_CONVENTION.md: merge tomasteronly after integration replay reproduces expected counterfactual, parity tests pass, and 24h staging monitor is clean.🤖 Generated with Claude Code
⚠️ Fix committed: S6 coefficients suspended (commit
ea65e2d)Root cause: S6 sizing multipliers (B3→2.0×, B6→1.5×, etc.) were overfitting to the ~600-trade research window ending 2026-04-19. ~100+ trades since that window showed regime reversal — bucket PnL rankings did not generalise out-of-sample.
Applied fix:
green.yml:s6_size_table: null— all non-B4 buckets now size uniformly at 1.0× (no-op)s6_table_pathcommented outMAE_MULT_BY_BUCKETretained — grounded in asset vol characteristics, not point-in-time PnL.Infrastructure intact. Routing layer, recompute script (
recompute_s6_coefficients.py), and Prefect flow are all present and functional. Re-enable path: run recompute across multiple non-overlapping windows, confirm variance guard (< 20% bucket PnL move between runs) passes consistently, then sets6_table_pathingreen.yml.System naming clarification (2026-04-22):
Post-mortem note added to
prod/docs/CRITICAL_ASSET_PICKING_BRACKETS_VS._ROI_WR_AT_TRADES.md.GREEN sprint: S6 asset picker + EsoF regime gate + AEM shadow-completeto GREEN sprint: S6 asset picker + EsoF regime gate + AEM shadow-complete [S6 sizing suspended — overfitting]View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.