// METHODOLOGY
Every derived metric, signal, and composite score on Sapinover is calculated from verifiable market data and documented here. This page serves as the institutional audit trail for all quantitative analysis displayed across the platform.
Hover over or click the metric name in the headers to anchor your browser. Share these links with colleagues to reference specific calculation methodologies. All sources, inputs, and calculation steps are fully transparent.
SOURCES
CALCULATION
Finnhub headlines and real-time market stress indicators (VIX, Gold, Crude, DXY, 10Y yield) are injected into a structured Claude prompt. Claude returns a 1-10 risk score, a plain-language brief, and 7 dimension scores in a single inference pass. The result is cached and served via 30-minute ISR on Vercel.
Refreshed every 30 minutes via Vercel cron dispatch + 30-minute ISR cache. LLM output is non-deterministic; the same inputs may produce slightly different scores across runs.
SOURCES
CALCULATION
A hybrid quantitative-then-qualitative process: real-time market stress indicators (VIX level, Gold % change, Crude % change, DXY % change, 10Y yield % change) are computed first and injected as context into a Claude prompt alongside recent Finnhub headlines. Claude synthesizes both the quantitative stress signals and the qualitative news content to produce an integer 1-10 risk score, a label, a plain-language brief, one primary threat vector, and 7 dimension scores. The LLM rationale is visible in the 'brief' field displayed below the score.
INPUTS
ISR cache: 30 minutes. Score is 1 (minimal risk) to 10 (extreme risk). The LLM rationale for each score is auditable in the brief field. Because both quantitative market data and qualitative news feed into Claude, scores reflect the model's read of combined signals — not a purely deterministic formula.
CALCULATION
Each of the 7 dimensions receives a 0-10 score from Claude per assessment cycle. Claude reads current Finnhub headlines and market stress context, then assigns each dimension a severity score reflecting headline density and severity within that thematic bucket. Scores are rendered on the radar chart; the highest-scoring dimension is flagged as the primary threat vector.
INPUTS
Dimension scores are LLM-generated and reflect Claude's read of headline severity within each thematic bucket. They are not deterministic statistical scores. The radar chart's hover panel shows the driver signals for each dimension.
SOURCES
CALCULATION
Aggregates 11 cross-asset signals into a single weighted score ranging from -10 (strong defensive) to +10 (strong growth-oriented). Each factor contributes: direction signal (+1 or -1) × asset weight × magnitude scale, where magnitude = min(abs(% change), 5%) to prevent outliers from dominating. Raw weighted sum is normalized by the theoretical maximum (sum of all weights × 5%) to produce a -1 to +1 value, then scaled to -10/+10 for display.
INPUTS
Equity guard: when all three core equity futures (ES, NQ, RTY) are negative, the label caps at NEUTRAL regardless of other factors — prevents a misleading 'growth-oriented' reading during volatility compression with equities red. Symmetrically, all three up prevents a DEFENSIVE label. Score and all 11 factor contributions are stored in Supabase market_regime_signals every 5 minutes.
SOURCES
CALCULATION
A 0-100 composite index that blends the Claude geopolitical risk level with independent market stress signals. Each input is normalized to a 0-100 risk signal before weighting. VIX uses a logarithmic scale (VIX 10 = 0 risk, VIX 80 = 100 risk). Gold and DXY are directional signals (up = risk). Crude and 10Y yield use absolute % change (volatility = risk). Dimension concentration measures how concentrated the 7 dimension scores are (high concentration = one acute threat domain dominating).
INPUTS
Output range: 0 (LOW) to 100 (SEVERE). Thresholds: 0-20 LOW, 20-35 GUARDED, 35-50 ELEVATED, 50-70 HIGH, 70+ SEVERE. The 30-day trailing chart uses one reading per day (latest of that day). This composite is a Sapinover-proprietary index; it is not published by any external data vendor.
SOURCES
CALCULATION
^VIX is the CBOE's 30-day implied volatility measure derived from SPX option prices across a wide range of strikes, calculated in real time during regular US equity market hours. The index reflects the market's expectation of 30-day forward volatility on the S&P 500.
^VIX trades 9:30 AM – 4:15 PM ET and closes at the end of each session. Outside those hours the displayed value is the last close and is therefore stale. During overnight hours, VX=F (VIX front-month futures) is substituted where available, as futures trade 24h on CME Globex. A 'STALE' label is shown when the cash index is closed.
SOURCES
CALCULATION
The DXY is a geometrically weighted index of the US dollar against a basket of 6 major currencies: EUR (57.6%), JPY (13.6%), GBP (11.9%), CAD (9.1%), SEK (4.2%), CHF (3.6%). ICE calculates and publishes the index. The quote shown is sourced from Yahoo Finance.
The FX market trades 24 hours/5 days per week, so DXY is considered LIVE outside US equity hours. Weights are fixed and reviewed infrequently; the EUR weight has been unchanged since 1999.
SOURCES
CALCULATION
^TNX tracks the yield on the on-the-run 10-Year US Treasury note as published by CBOE. The quote represents the annualized yield expressed as a percentage. Change is shown in basis points (bps): 1 bps = 0.01%.
Treasury yields are quoted during US bond market hours (approximately 8 AM – 3 PM ET). Outside those hours the displayed value is the last close and is stale. In the directional performance bar, TNX is treated as a 'haven' signal (inverted): a rapid yield spike indicates rate stress, not risk appetite.
SOURCES
CALCULATION
Continuous score on a -1 to +1 normalized scale, displayed as -10 to +10. Computed by the DirectionalPerformanceBar model: each of 11 factors contributes direction (+1/-1) × asset weight × min(|% change|, 5%). Raw sum is divided by theoretical maximum (sum of all weights × 5) to normalize. Equity guard caps the effective score at NEUTRAL (±0.05) when all core equity futures point the same direction opposite the model result.
INPUTS
Equity guard is active when all three US equity futures (ES, NQ, RTY) are simultaneously negative (caps at NEUTRAL) or simultaneously positive (prevents DEFENSIVE label). The score and all factor contributions are persisted to Supabase every 5 minutes for the Regime History time-series chart.
SOURCES
CALCULATION
Market data snapshot and recent headlines are injected into a structured Claude prompt. Claude returns a 1-2 sentence summary targeted to the selected audience lens (retail = plain English; institutional = desk view). Four scopes exist: US quick, US deep, global quick, global deep. The result is stored in the market_summaries table and served from cache. The 'Go Deeper' button fetches the deep variant on demand.
Refreshed every 30 minutes by the Vercel cron dispatcher. Weekend mode (Saturday all day + Sunday before 5 PM ET) applies a 6-hour freshness throttle and uses a separate prompt focused on past-week reflection and next-week framing. Clickable asset mentions in the summary text open the TradingView chart drawer.
SOURCES
CALCULATION
The API queries the 96 most-recent regime signal rows from Supabase (DESC order). Analytics computed server-side: (1) current label and normalized score from the newest row; (2) trend direction by comparing avg score of newest 24 rows vs rows 25-48; (3) label distribution across all 96 rows; (4) equity guard fire count; (5) factor aggregation from the 5 most-recent signals — each factor's net direction (growth-oriented vs defensive) is voted across the 5 snapshots. These analytics are passed to Claude, which writes a 3-sentence outlook: current positioning + trend, dominant driving factor, and a risk/watch item. Response is cached for 15 minutes via s-maxage=900.
INPUTS
15-minute ISR cache (s-maxage=900, stale-while-revalidate=300). Requires minimum 12 signal rows to generate; returns ok=false with reason='insufficient data' otherwise. LLM output is non-deterministic.
SOURCES
CALCULATION
Each asset group fetches live quotes and computes % change from prior close. Color intensity scales from near-flat (6% opacity) to extreme move (50% opacity) in 6 steps. Treasury yields display as percentage values; all others as price with 2-decimal formatting. Groups show primary assets by default; expanded view (institutional lens) reveals all tracked instruments. The weighted average toggle computes a simple equal-weight mean of all group members' % changes for a one-line summary.
Refreshed every 2 minutes via Vercel ISR (s-maxage=120). Market-hours badges per group reflect approximate regional trading hours and may not account for all holidays. Institutional lens (EXPANDED VIEW) shows all instruments; retail lens (PRIMARY ONLY) shows the top 3-5 per group.
SOURCES
CALCULATION
The API polls Alpaca's overnight feed for the current watchlist. Symbols with a non-null lastPrice are considered active. Results are sorted by session volume (descending). The panel shows symbol, last price, session volume, and last-trade timestamp. A 'LIVE SESSION' badge fires when sessionActive=true; 'SESSION CLOSED' when outside BOATS trading hours (Sun-Thu 8 PM - 4 AM ET).
Data is 15 minutes delayed per Alpaca's overnight feed terms. The watchlist is dynamic and may not include all BOATS-active symbols. Panel polled every 2 minutes when the page is visible.
SOURCES
CALCULATION
Each dot represents one 5-minute regime snapshot: label (GROWTH-ORIENTED / NEUTRAL / DEFENSIVE / etc.), normalized score (-1 to +1), bar_percent (0=defensive to 100=growth-oriented), equity_guard_active flag, and per-factor contributions. The Y-axis maps bar_percent to chart height. Green zone = bar_percent above 60; red zone = below 40; amber center line = 50 (neutral). The cyan WMA line is a 12-point weighted moving average (most-recent point gets highest weight) computed client-side.
INPUTS
Time windows: 24h, 7d, 30d. Auto-selected on load based on data span. Hover any dot for score, factor count, and 6 key asset moves at that moment. Expand button opens a full-screen modal with a taller chart. Regime distribution badges below the chart show how many snapshots fell in each label bucket for the selected window.
SOURCES
CALCULATION
A site-wide toggle stored in localStorage. Two modes: RETAIL (plain-English framing, primary-only asset view, simplified narrative) and INSTITUTIONAL (full quant detail, expanded asset groups, desk-view terminology). The lens is read from AudienceLensProvider context and consumed by CutThruNoise, GlobalMarketsHeatmap, DirectionalPerformanceBar, and other components to adjust depth and tone.
INPUTS
Toggle is in the site header (nav bar). Selection persists via localStorage and is restored on page load. Default is RETAIL. The AudienceLensBadge in the bottom-right corner shows the active mode at all times.
All quantitative inputs are sourced from free, publicly available data APIs unless otherwise noted. Data feeds include Yahoo Finance v8 chart API (equities, indices, commodities, FX, yields), Finnhub (news, economic calendar, quotes), CoinGecko (crypto), Alpaca Markets (overnight ATS), SEC EDGAR (13F holdings), and FINRA OTC Transparency (alternative trading system metrics).
LLM-Generated Analysis: Geopolitical risk scores, threat dimension assessments, and market summaries (“Cut Thru the Noise”) are generated by Claude (Anthropic’s claude-sonnet-4-6 model) based on structured prompts and live market data. While the synthesis is auditable (you can inspect the market data inputs used by the LLM), Claude outputs are non-deterministic; the same inputs may produce slightly different textual conclusions across runs. Scores are probabilistic, not deterministic formulas.
Research Use Only: All content and derived metrics on Sapinover are provided for research and informational purposes only and do not constitute investment advice, a recommendation to buy or sell any security, or an offer to provide professional investment advisory services. Past performance is not indicative of future results.
Institutional Auditability: This methodology page is designed for institutional readers to independently verify all quantitative calculations. Each metric’s inputs, weights, and transformations are documented in sufficient detail for replication in external systems.
Data Latency & Staleness: Some instruments (e.g., CBOE Volatility Index ^VIX, US Treasury yields) close or have limited trading hours. Overnight quotes are labeled as STALE. Futures (VX=F, ES, NQ, RTY, GC, CL) trade 24h on CME Globex and are labeled as LIVE when cash markets are closed. Always review the timestamp and market status label before interpreting overnight signals.