feat: regime quadrant plot in place of the combined gauge
The combined score collapsed two distinct signals into one not-very-meaningful number. Replace its gauge with a quadrant scatter that shows both axes directly: x = regime index (coincident), y = early warning (breadth divergence), with a trail of the last 60 sessions and today highlighted. The four quadrants make the readings legible — ① hot & brittle (narrow melt-up, shakeout risk), ② transition, ③ healthy & broad, ④ real downturn — and the trail surfaces the actual tell: the ①→④ move (early warning rolling over as the regime index climbs = divergence resolving downward). Combined still shows as a line in the score-history chart. Frontend-only; reuses the history endpoint. Lazy-loaded. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -18,6 +18,7 @@ import {
|
||||
|
||||
// Lazy so recharts (heavy) ships in its own chunk, loaded only on this tab.
|
||||
const ScoreHistoryChart = lazy(() => import('../components/regime/ScoreHistoryChart'));
|
||||
const RegimeQuadrant = lazy(() => import('../components/regime/RegimeQuadrant'));
|
||||
import type {
|
||||
RegimeBand,
|
||||
RegimeSignal,
|
||||
@@ -554,17 +555,9 @@ export default function RegimePage() {
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
<ScoreGauge
|
||||
label="Combined · observational blend"
|
||||
score={monitor.data.combined?.score}
|
||||
band={monitor.data.combined?.band}
|
||||
trend={monitor.data.combined}
|
||||
size="md"
|
||||
footnote={
|
||||
<>A weighted mean of the index and the early warning — for observation only. Tune the mix via the
|
||||
regime config.</>
|
||||
}
|
||||
/>
|
||||
<Suspense fallback={<SkeletonCard className="h-80" />}>
|
||||
<RegimeQuadrant />
|
||||
</Suspense>
|
||||
<Suspense fallback={<SkeletonCard className="h-72" />}>
|
||||
<ScoreHistoryChart />
|
||||
</Suspense>
|
||||
|
||||
Reference in New Issue
Block a user