feat: add standalone AI/Tech regime-change monitor tab
Deploy / lint (push) Successful in 7s
Deploy / test (push) Successful in 46s
Deploy / deploy (push) Successful in 27s

A new /regime tab scoring how far the AI/Tech bull regime has deteriorated
toward a re-rating as a single 0-100 index with per-signal breakdown and a
7/30-day trend. Intentionally decoupled: nothing reads its output to gate or
score trades — the daily-pipeline membership is scheduling only.

- regime_monitor_service: price sub-scores (P1-P6 via Alpaca, like
  market_regime), VIX + HY credit spreads via a small FRED helper, weighted
  aggregation over available signals (missing source -> n/a, dropped from the
  denominator), one snapshot row/day, and a ~90-day history backfill by
  replaying the already-fetched series as-of each past day.
- F1/F3 fundamentals proposed by the configured grounded LLM (reuses
  sentiment_provider_service config resolution), with a manual override + lock.
- regime_snapshots table (migration 011); endpoints on the existing market
  router; admin-editable weights/threshold; standalone /regime page.

Data needs: prices via Alpaca, VIX/credit via FRED (optional key — signals show
n/a without it). No LLM needed for history.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-26 11:51:45 +02:00
co-authored by Claude Opus 4.8
parent 5605915d45
commit ebff19940b
18 changed files with 1600 additions and 3 deletions
+2
View File
@@ -6,6 +6,7 @@ import RegisterPage from './pages/RegisterPage';
import DashboardPage from './pages/DashboardPage';
import MarketPage from './pages/MarketPage';
import SignalsPage from './pages/SignalsPage';
import RegimePage from './pages/RegimePage';
import TickerDetailPage from './pages/TickerDetailPage';
import AdminPage from './pages/AdminPage';
@@ -19,6 +20,7 @@ export default function App() {
<Route path="/" element={<DashboardPage />} />
<Route path="/market" element={<MarketPage />} />
<Route path="/signals" element={<SignalsPage />} />
<Route path="/regime" element={<RegimePage />} />
<Route path="/ticker/:symbol" element={<TickerDetailPage />} />
{/* Legacy routes from the old 6-page layout */}
<Route path="/watchlist" element={<Navigate to="/market" replace />} />