'use client'; import React, { useState, useMemo } from 'react'; import { useSandboxStore, InsiderTrade, CongressTrade, WhaleTrade } from '@/lib/store'; import { calculateRollingZScore, detectInsiderClusters, coupleBayesianRebound } from '@/lib/math/statistics'; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, ReferenceLine } from 'recharts'; import 'katex/dist/katex.min.css'; import { BlockMath, InlineMath } from 'react-katex'; import { Shield, User, ArrowDownRight, ArrowUpRight, DollarSign, Calendar, Landmark, ChevronDown, ChevronUp, Search, Radio, Building2, AlertTriangle, Layers, Percent } from 'lucide-react'; export default function InsiderDemo() { const { insiderTrades, congressTrades, whaleTrades, insiderVolumes, priorProbability } = useSandboxStore(); // Component local UI states const [activeSegment, setActiveSegment] = useState<'executives' | 'congress' | 'whales'>('executives'); const [searchQuery, setSearchQuery] = useState(''); const [selectedTicker, setSelectedTicker] = useState(null); const [scanning, setScanning] = useState(false); const [scanResults, setScanResults] = useState<{ ticker: string; zScore: number; clusterCount: number; multiplier: number; isAnomaly: boolean; coupledRebound: number; }[] | null>(null); const [showMathAccordion, setShowMathAccordion] = useState(false); // Run Global Flow Scan const handleGlobalFlowScan = () => { setScanning(true); setTimeout(() => { const results = Object.keys(insiderVolumes).map((ticker) => { const volumes = insiderVolumes[ticker]; const zResult = calculateRollingZScore(volumes); // Filter trades for this ticker to detect clusters const tickerTrades = insiderTrades.filter(t => t.ticker === ticker); const clusterResult = detectInsiderClusters(tickerTrades); // Bayesian coupling const coupled = coupleBayesianRebound(priorProbability, zResult.latest); return { ticker, zScore: parseFloat(zResult.latest.toFixed(2)), clusterCount: clusterResult.count, multiplier: parseFloat(clusterResult.multiplier.toFixed(2)), isAnomaly: zResult.isAnomaly || clusterResult.isCluster, coupledRebound: coupled, }; }); // Sort anomalies to the top results.sort((a, b) => (b.isAnomaly ? 1 : 0) - (a.isAnomaly ? 1 : 0) || b.zScore - a.zScore); setScanResults(results); setScanning(false); }, 1000); }; // Perform Ticker Lookup const handleTickerLookup = (e: React.FormEvent) => { e.preventDefault(); const query = searchQuery.trim().toUpperCase(); if (query) { setSelectedTicker(query); } else { setSelectedTicker(null); } }; // Compute stats for selected ticker const tickerStats = useMemo(() => { if (!selectedTicker) return null; const volumes = insiderVolumes[selectedTicker] || [5000, 4800, 5200, 6000, 4500, 5000]; // fallback const zResult = calculateRollingZScore(volumes); const tickerTrades = insiderTrades.filter(t => t.ticker === selectedTicker); const clusterResult = detectInsiderClusters(tickerTrades); const coupled = coupleBayesianRebound(priorProbability, zResult.latest); return { zScore: zResult.latest, isAnomaly: zResult.isAnomaly, clusterCount: clusterResult.count, isCluster: clusterResult.isCluster, multiplier: clusterResult.multiplier, coupledRebound: coupled, volumes, }; }, [selectedTicker, insiderVolumes, insiderTrades, priorProbability]); // Volumes chart data for selected ticker const volumeChartData = useMemo(() => { if (!tickerStats || !selectedTicker) return []; return tickerStats.volumes.map((vol, idx) => ({ month: `M-${tickerStats.volumes.length - idx - 1}`, 'Volumen (Shares)': vol, })); }, [tickerStats, selectedTicker]); return (
{/* Header */}
Element 3

Institutional & Insider Flow Tracker

Bayesianische Kopplung

Prior Rebound: {(priorProbability * 100).toFixed(0)}%

{/* SECTION 1: Dual-Query Actions */}

Global Flow Outlier Scan

Filtert den Markt nach statistisch signifikanten Kaufvolumina (Z-Score > 2.0) und konzertierten Käufen (Insider-Cluster).

Ticker Lookup (Einzelauswertung)

Gezielte Abfrage von Insider-Z-Scores und Bayesianischen Kopplungs-Updates (z.B. PLTR, RACE, AMZN, AAPL).

setSearchQuery(e.target.value)} />
{/* Ticker Stats / Lookup Section */} {selectedTicker && tickerStats && (

{selectedTicker} Einzelauswertung

{tickerStats.isAnomaly && FLOW OUTLIER}
Volumetrischer Z-Score: Z = {tickerStats.zScore.toFixed(2)}
Konzertiertes Cluster (14 Tage): {tickerStats.isCluster ? `JA (${tickerStats.clusterCount} Insiders)` : `NEIN (${tickerStats.clusterCount})`}
{tickerStats.isCluster && (
Cluster Exponent-Multiplikator: x{tickerStats.multiplier.toFixed(2)}
)}
Gekoppelte Rebound-Wahrsch.: {(tickerStats.coupledRebound * 100).toFixed(0)}%
{/* Volume chart */}
Insider Handelsvolumen (24 Monate Baseline)
)} {/* Global Scan Outlier List */} {scanResults && (

Ergebnisse des Global Flow Scans

{scanResults.map((res) => (
setSelectedTicker(res.ticker)} className={`p-3 rounded-xl border cursor-pointer hover:bg-slate-900/60 transition-colors ${res.isAnomaly ? 'border-purple-500/40 bg-purple-500/5' : 'border-slate-850 bg-slate-900/40'}`} >
{res.ticker} {res.isAnomaly && }
Z-Score: {res.zScore}
Cluster: {res.clusterCount} Traders
Rebound: {Math.round(res.coupledRebound * 100)}%
))}
)} {/* SECTION 2: Smart Money Segment Tabs */}
{/* Ledger displays */}
{activeSegment === 'executives' && ( {insiderTrades.map((t) => { const isBuy = t.type === 'BUY'; return ( ); })}
Ticker Insider Name Position Transaktion Stücke Wert ($)
{t.ticker} {t.insiderName} {t.relation} {isBuy ? 'KAUF' : 'VERKAUF'} {t.shares.toLocaleString()} ${t.value.toLocaleString()}
)} {activeSegment === 'congress' && (
U.S. Congress Stock Act Offenlegungslags: Abgeordnete müssen Käufe innerhalb von 30 bis 45 Tagen offenlegen. Der Alpha-Lag in der Tabelle visualisiert diese Meldeverzögerung. Käufe können verzögert eingepreist sein.
{congressTrades.map((c) => { const isBuy = c.type === 'BUY'; return ( ); })}
Ticker Abgeordneter Kammer Transaktion Volumen-Spanne Handelsdatum Meldedatum Alpha-Lag (Tage)
{c.ticker} {c.representative} {c.chamber} {isBuy ? 'KAUF' : 'VERKAUF'} {c.valueRange} {c.transactionDate} {c.filingDate} {c.lagDays} Tage
)} {activeSegment === 'whales' && ( {whaleTrades.map((w) => { const isBuy = w.type === 'BUY' || w.type === 'NEW'; return ( ); })}
Ticker Institution (13F Filers) Art Gehandelte Anteile Aktueller Bestand Meldedatum Geschätzter Wert ($)
{w.ticker} {w.institution} {w.type} {w.sharesTraded.toLocaleString()} {w.sharesHeld.toLocaleString()} {w.filingDate} ${w.estimatedValue.toLocaleString()}
)}
{/* SECTION 3: Mathematical LaTeX Accordion */}
{showMathAccordion && (

1. Volumetrischer Z-Score (Statistische Signifikanz)

Der Z-Score gibt an, um wie viele Standardabweichungen das aktuelle Transaktionsvolumen vom historischen Durchschnitt abweicht:

Ein Z-Score > 2.0 wird als Ausreißer (Anomaly Trigger) eingestuft, was einer Wahrscheinlichkeit von unter 2.27% für einen zufälligen Anstieg entspricht (einseitiger Test bei Normalverteilung).

2. Bayesianische Kopplung (Rebound-Wahrscheinlichkeit)

Wir verknüpfen den Preisdrop-Sentiment (Element 2) mit den Insider-Z-Scores (Element 3), um die A-Posteriori-Wahrscheinlichkeit eines echten Rebounds zu ermitteln:

wobei die Prior-Wahrscheinlichkeit ist. Ist der Z-Score hoch (Käufe), steigt die Likelihood stark an und maximiert den Rebound-Erwartungswert.

)}
); }