XAU: two validated per-TF gates — M15 mixed-regime block, M5 hour-9 block
M15 mixed-"trending" regime block (ADX strong, EMAs unaligned = momentum without direction): -6.8R/24 trades on 12mo, negative both halves; blocking scores +65.7R/499 PF 1.38 DD 10.4R vs +59.0R/521 PF 1.32 DD 12.6R, better both halves, OOS 2024-06->2025-03 neutral (-1.4R = the 4 such trades there). M5 never trades this regime. New XauStrategyConfig.blocked_regimes / sell_blocked_regimes knobs (default empty) + aggregator gate 6g2; M15 factory opts in. M5 hour-9 UTC block (post-London-open whipsaw): -28.9R/143 over the 6-year book, negative 5/7 calendar years. Full-history replay with block: +207.1R vs +178.3R, max DD 28.7R vs 35.5R, 2023 -13.0R -> breakeven; tuned 12mo book unchanged (139.0 vs 139.3). Hour 9 is positive on M15 (+1.7R 6yr, +8.6R OOS) so the block is factory M5-only. Rejected after validation (documented in xauusd.py + session memory): transitioning-SELL block (bull-market artifact, +5.7R in 2024 OOS), M15 trending_down block (M5 cross-TF contradiction), losing-streak circuit breakers, 30d efficiency-ratio trend gate, and all entry-level indicator filters (winners == losers at entry on every feature). Full-history context (Twelve Data 5min starts 2020-03-16): M5 6.3yr +207R PF ~1.3 post-fix with losing year 2021; M15 +152.6R PF 1.19 DD 49.7R — edge is regime-dependent, chop years are structural. Tests: 178 passed (new gate test + factory-equivalence updates). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -221,6 +221,13 @@ class XauStrategyConfig:
|
||||
# Volatility regimes in which SELL setups are allowed (low/normal-vol
|
||||
# shorts lose consistently against gold's macro uptrend).
|
||||
sell_vol_regimes: List[str] = field(default_factory=lambda: ["high", "extreme"])
|
||||
# Market regimes in which no XAU setup may fire (any direction).
|
||||
# Empty by default; per-timeframe factories opt in — e.g. the mixed
|
||||
# "trending" regime (strong ADX, EMAs disagree) on M15.
|
||||
blocked_regimes: List[str] = field(default_factory=list)
|
||||
# Market regimes in which XAU SELL setups may not fire. Empty by
|
||||
# default; per-timeframe factories opt in.
|
||||
sell_blocked_regimes: List[str] = field(default_factory=list)
|
||||
|
||||
# ── M5-specific filters ──────────────────────────────────────
|
||||
# M5 signals are noisy; require stronger confirmation before
|
||||
|
||||
Reference in New Issue
Block a user