Live news gate: stop capping signal confidence near events (XAU default)

Replaying the live danger/caution gates against the validated 12mo XAU
M5 book showed they suppress 25-35 trades worth +4.6..+7.2R/yr — trades
entered near USD releases outperform the book average (+0.475R vs
+0.256R). New NewsConfig.event_risk_caps_signals (default False =
XAU-tuned) keeps EVENT RISK warnings in alerts but no longer guts
confidence; EUR factory re-enables the caps (evidence is gold-specific).
Pinned XAU M5 regression: 547 trades, +139.94R, trade-identical.
Tests: 177 passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Harwinder Sekhon
2026-07-11 10:02:27 -04:00
parent 2842351f9b
commit 02bd61f378
4 changed files with 58 additions and 3 deletions
+8 -3
View File
@@ -1138,10 +1138,14 @@ class SignalAggregator:
confidence += 5
# ── Event risk (hard cap, separate from penalty system) ───
# Warning always shown; the confidence cap is config-gated
# (news.event_risk_caps_signals) — see NewsConfig for the audit
# showing the cap costs R on XAU.
if report.event_risk == "danger":
report.warnings.append(f"EVENT RISK: {report.event_description}")
confidence = min(confidence, 30)
report.action_recommendation = f"WAIT — {report.event_description}"
if self.config.news.event_risk_caps_signals:
confidence = min(confidence, 30)
report.action_recommendation = f"WAIT — {report.event_description}"
# ── Penalties (diminishing cap system) ────────────────────
# Collect all applicable penalties, then apply with exponential
@@ -1163,7 +1167,8 @@ class SignalAggregator:
if report.event_risk == "caution":
report.warnings.append(f"Upcoming event: {report.event_description}")
penalties.append(("event_caution", 15))
if self.config.news.event_risk_caps_signals:
penalties.append(("event_caution", 15))
is_counter_trend = (
(report.market_regime == "trending_up" and score < 0) or