Files
DOLPHIN/prod/configs/green_s6_table.yml
hjnormey 36d263eb91 feat(config/scripts): GREEN config wiring + S6 recompute tooling
prod/configs/green.yml:
- asset_bucket_ban_set: [4] (B4 banned at selector level)
- s6_size_table: inline bootstrap multipliers (B0→0.4, B1→0.3, B3→2.0,
  B5→0.5, B6→1.5) matching CRITICAL_ASSET_PICKING S6 scenario
- esof_sizing_table: FAV→1.2, MILD_POS→0.6, UNKNOWN→0.25,
  MILD_NEG→0.0, UNFAV→0.0
- use_int_leverage: true (1x fixed pending winrate analysis)
- s6_table_path: pointer to generated YAML (recompute updates this)
BLUE (blue.yml) carries none of these keys → BLUE math unchanged.

prod/configs/green_s6_table.yml: bootstrap stub with frontmatter
(generated_at, source_branch, n_trades). Regenerated by recompute script.

prod/scripts/recompute_s6_coefficients.py:
  Queries trade_events, maps assets to KMeans buckets, derives per-bucket
  sizing mults. Variance guard: >20% net-PnL move flags bucket in
  dolphin.s6_recompute_log for manual review before promote.

prod/s6_recompute_flow.py:
  Prefect flow wrapping the recompute script. Cadence via
  S6_RECOMPUTE_INTERVAL_DAYS env (default 30). Kill-switch:
  S6_RECOMPUTE_DISABLED=1.

prod/scripts/analyze_leverage_winrate.py:
  Read-only walk of CH trade_events; bins trades by leverage_raw,
  emits per-bin WR/net-PnL/avg-MAE. Output informs the int-leverage
  rounding rule choice (Option 1 round-half-up vs Option 2 banker's round
  vs stay-at-1x). Does not auto-apply a rule change.

Plan refs: Tasks 3, 8, 10.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 06:08:08 +02:00

35 lines
1.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GREEN S6 bucket sizing table
# ────────────────────────────────────────────────────────────────────────────
# Auto-generated by prod/scripts/recompute_s6_coefficients.py.
# Bucket → per-entry notional multiplier applied at the orchestrator single-site
# (`nautilus_dolphin/nautilus_dolphin/nautilus/esf_alpha_orchestrator.py`).
#
# Semantics:
# value == 1.0 → no-op (same as BLUE)
# value < 1.0 → size down (fractional)
# value > 1.0 → size up (leaned-into bucket)
# absent bucket → 1.0 (no-op)
# value == 0.0 → prefer banning via `asset_bucket_ban_set` in green.yml
# (selector-ban reroutes to next-ranked asset;
# sizer 0× would waste the slot)
#
# Regeneration cadence: env S6_RECOMPUTE_INTERVAL_DAYS (default 30).
# If any bucket's net-PnL moves > ~20% between runs, the recompute flow flags
# the change in CH `dolphin.s6_recompute_log` for manual review before apply.
# ────────────────────────────────────────────────────────────────────────────
meta:
generated_at: "2026-04-21T00:00:00Z" # replaced on each recompute
source_branch: "exp/green-s6-esof-aem-shadow-2026-04-21"
n_trades: 0 # populated by recompute script
note: "Bootstrap stub — regenerate with prod/scripts/recompute_s6_coefficients.py before staging"
# Bucket → multiplier. B4 excluded (banned at selector). B2 omitted (= 1.0 no-op).
# Seeded from the S6 scenario in prod/docs/CRITICAL_ASSET_PICKING_BRACKETS_VS._ROI_WR_AT_TRADES.md.
buckets:
0: 0.40
1: 0.30
3: 2.00
5: 0.50
6: 1.50