"use client"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { Activity, Clock } from "lucide-react"; import { cn, getConfidenceColor } from "@/lib/utils"; import { useAnimatedValue } from "@/hooks/use-animated-value"; interface RegimeCardProps { name: string; volatility: number; confidence: number; updatedAt?: string; h1Bias?: string; } export function RegimeCard({ name, volatility, confidence, updatedAt, h1Bias }: RegimeCardProps) { const getRegimeBadgeVariant = (regime: string) => { const lower = regime.toLowerCase(); if (lower.includes("high") || lower.includes("volatile") || lower.includes("crisis")) return "danger"; if (lower.includes("low") || lower.includes("ranging")) return "success"; if (lower.includes("trend")) return "info"; return "warning"; }; const confidencePercent = confidence * 100; const animVol = useAnimatedValue(volatility); const animConf = useAnimatedValue(confidencePercent); return ( Regime {updatedAt && ( {updatedAt} )}
{name || "Unknown"}

Click for detail

Volatility {animVol.displayValue.toFixed(2)}
Confidence {animConf.displayValue.toFixed(0)}%
{h1Bias && (
H1 Bias {h1Bias === "BULLISH" ? "^ " : h1Bias === "BEARISH" ? "v " : ""}{h1Bias}
)}
Market Regime Detail HMM-detected market regime and volatility analysis
{name || "Unknown"} {updatedAt && {updatedAt}}
Volatility

{volatility.toFixed(4)}

Confidence

{confidencePercent.toFixed(1)}%

= 70 ? "bar-green" : confidencePercent >= 50 ? "bar-orange" : "bar-red")} style={{ width: `${confidencePercent}%` }} />
{h1Bias && (
H1 Timeframe Bias

{h1Bias}

)}

The Hidden Markov Model classifies market states based on volatility patterns. Regime transitions affect position sizing, signal thresholds, and exit management.

); }