From 60def1155bb2dea58d9380c63a9e8a403f478003 Mon Sep 17 00:00:00 2001 From: Dennis Thiessen Date: Fri, 26 Jun 2026 15:36:39 +0200 Subject: [PATCH] fix: coverage-aware event-study headline instead of misleading median delta The "warned a median -18 days later" line was the median-over-1-event trap: the coincident baseline's 60d median is a single lucky event, while breadth warned on 7. Replace it with the honest coverage framing (7/11 vs 1/11) and flag that the median-lead comparison is unreliable when coverage differs this much. Co-Authored-By: Claude Opus 4.8 --- frontend/src/pages/RegimePage.tsx | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/frontend/src/pages/RegimePage.tsx b/frontend/src/pages/RegimePage.tsx index 42f69c7..d2e4b84 100644 --- a/frontend/src/pages/RegimePage.tsx +++ b/frontend/src/pages/RegimePage.tsx @@ -375,26 +375,25 @@ function EventStudyBody({ report }: { report: EventStudyReport }) { const recent = report.recent_breadth ?? []; const breadthVals = recent.map((r) => r.breadth); const divVals = recent.map((r) => r.divergence ?? 0); - const lead = report.lead_delta_days; + const moreCoverage = bd.events_with_signal > cd.events_with_signal; return (

{report.events?.length ?? 0} drawdown events (≥{report.params?.event_threshold_pct}%) on{' '} - {report.params?.benchmark} over ~5y. Higher median lead = earlier warning. + {report.params?.benchmark} over ~5y. With so few events, coverage (how many it warned before) matters + more than the median lead.

- 0} /> +
- {lead != null && ( -

- Breadth divergence warned a median{' '} - 0 ? 'text-emerald-400' : 'text-amber-400'}`}> - {lead > 0 ? '+' : ''}{lead} days - {' '} - {lead >= 0 ? 'earlier' : 'later'} than the coincident baseline. -

- )} +

+ Breadth divergence warned before{' '} + {bd.events_with_signal}/{bd.events_total} drawdowns + {bd.median_lead_days != null ? ` (median ${bd.median_lead_days}d lead)` : ''}; the coincident baseline only{' '} + {cd.events_with_signal}/{cd.events_total}. The median-lead + comparison is unreliable when coverage differs this much — see per-drawdown below. +

{report.per_event && report.per_event.length > 0 && (
Per drawdown (same events, both indicators)