Skip to main content
Every tracked stablecoin gets a 0–100 risk score every 5 minutes (0 = pegged, 100 = critical depeg). It is a weighted composite of 16 normalized signals. A velocity boost catches escalating crises earlier; hysteresis prevents tier flapping on noisy ticks. Higher always means riskier.

The Final Outputs

OutputWhat it Means
Score (0–100)Overall depeg risk — weighted composite of all signals, adjusted for token type, momentum, and velocity.
Tierok / watch / warning / critical — bucketed label. Hysteresis-gated to prevent flapping.
premiumSpecial tier: token trading 2%+ above peg with no risk signal present (strong demand badge).
State Flags6 binary crisis labels surfaced alongside the score: liquidity_crisis, oracle_dislocation, cross_chain_fragmentation, supply_spike_alert, chain_supply_imbalance, death_spiral_candidate.
Recommendation (vault overlay)EXIT / REDUCE / MONITOR / WATCH — actionable signal fed into vault risk scoring when this stablecoin appears as vault collateral or underlying.
depeg_sub_scoreA separate 0–100 sub-score fed into the vault composite at 5% weight. Measures capital loss risk from peg deviation + persistence, distinct from real-time market stress.

Risk Tiers

Tier transitions require sustained elevated scores (hysteresis) — see the Hysteresis section below. This prevents a single noisy tick from triggering an alert.
TierScore RangeWhat It Means
Critical70 – 100Severe and active depeg risk. Immediate attention required. Vault positions backed by this token should consider exit.
Warning50 – 69Active depeg developing. Monitor closely; multiple signals elevated. Escalation likely if unresolved.
Watch25 – 49Early stress signals present. Track trend across next several ticks. Not yet a confirmed depeg.
OK0 – 24Normal peg conditions. Low risk. Token is liquid, stable, and on-peg across tracked chains.
PremiumSpecial: token is trading 2%+ above peg with no risk signal (strong demand). Not a risk indicator.

Signal Weights (the Building Blocks)

Each signal is normalized to 0–1 before weighting. When a signal has no data for a given token, it is skipped and all remaining weights are renormalized to sum to 1.0 — so missing data never produces a false low score.

Price & Peg Deviation

SignalWeightWhat It MeasuresMax threshold
Price Deviation (5m)40% (34% when CEX price present)Distance from peg using 5-minute VWAP. The single dominant signal — peg is the product’s promise.5% deviation → score 1.0 (USD stables). Yield/RWA types have wider tolerance bands.
CEX Price Deviation~6%Binance cross-rate price deviation from peg. Active only for USDT, USDC, DAI, and FDUSD. When present, the price_deviation_5m weight is reduced from 40% → 34% to accommodate this signal. Provides an independent centralized-venue confirmation of peg stress.5% deviation → score 1.0
Max Drawdown (5m)1%Worst single-tick price drop in the last 5 minutes.2% drop in 5 min → 1.0

Persistence (Duration Off-Peg)

SignalWeightWhat It MeasuresMax threshold
Persistence (50bp, 60m)16%Minutes spent >0.5% off-peg in the last 60 minutes. A brief spike is noise; 30+ minutes is a pattern.60 min continuously at 50bp → 1.0
Persistence (100bp, 60m)11%Minutes spent >1% off-peg in the last 60 minutes. A stiffer threshold for confirmed deviation.60 min continuously at 100bp → 1.0

Liquidity & Market Depth

SignalWeightWhat It MeasuresMax threshold
Slippage ($100k)10%Estimated slippage for a $100k trade routed on-chain. A proxy for real exit cost. Thin markets = high slippage even before price deviates.200 bps (2%) slippage → 1.0
Liquidity Decay2%Decline in available liquidity vs the 24h baseline. A slowly draining pool is a leading depeg indicator.100% decay → 1.0
Liquidity Available ($100k)1%Binary: can we route a $100k swap at all? False = illiquid enough to be dangerous.False → 1.0
Volume Anomaly1%Z-score of 5m and 60m volume vs recent baseline. Penalizes both volume collapse (panic absence of liquidity) and volume spikes (coordinated selling / front-running of a known depeg).z < −4 (collapse) → 1.0 · z > 4 (spike) → up to 0.5

Cross-Chain & Supply

SignalWeightWhat It MeasuresMax threshold
Chain Spread (5m)5%Price dispersion across all chains where the token trades. A 1%+ spread means cross-chain arbitrage has broken down — a leading signal for bridge stress or isolated depeg.1% spread → 1.0
Supply Spike5%Anomalous minting — either >10% in 1 hour (rolling) or >5% in a single block. The single-block threshold catches exploit-style emergency mints before price moves.>10% in 1h OR >5% in 1 block → 1.0

Reserve Attestation

SignalWeightWhat It MeasuresMax threshold
Reserve Attestation Staleness~4%How recently the issuer published a third-party reserve attestation or proof-of-reserves. Sourced from data/reserve_attestations.json.0 for attestations ≤30 days old; linear ramp to 1.0 at 180+ days. Only scored for tokens with a known attestation source.

Volatility & Oracle

SignalWeightWhat It MeasuresMax threshold
Volatility Burst5%Sudden price volatility spike vs recent baseline. 5× baseline volatility means the market is in crisis mode, even if price hasn’t moved much yet.5× baseline → 1.0
Oracle Deviation1%Gap between on-chain Chainlink feed price and DEX VWAP. A widening gap means oracle is stale or DEX is moving without oracle awareness.200 bps gap → 1.0
Oracle Staleness1%Time since last Chainlink heartbeat update. Stale oracles are dangerous in lending markets — they enable overborrowing against inflated collateral.≥24h → 1.0 · ≥6h → 0.7 · ≥1h → 0.4
Price Source Disagreement1%Deviation across multiple price sources (DEX, oracle, CoinGecko). Divergence suggests manipulation or data quality issues.10% deviation → 1.0
DEX/CEX disagreement adjustment: When both DEX and CEX prices are available and disagree — DEX stressed but CEX calm — the DEX price_deviation_5m weight is reduced by 30%, since the stress is likely a DEX-specific liquidity issue rather than a real depeg. The cex_only_stress guard (see below) handles the reverse case: CEX stressed, DEX calm.

Scoring Guards & Modifiers

Six post-computation guards adjust the final score to reduce false positives and prevent single-signal dominance.
GuardWhen it firesEffect
Persistence gateCurrent price deviation is < 0.125% from peg (price_deviation_5m normalized < 0.025)Persistence signal weights capped at 30% of normal. Prevents 60 minutes of historical off-peg time from dominating the score when price has since fully recovered.
Corroboration gatepool_balance_drift, single_source, or blacklist_activity are active but no other signal has normalized value ≥ 0.10Weak signals capped at 40% of normal weight. Requires at least one independent corroborating signal before these signals contribute at full strength. corroboration_gated flag surfaces in drivers.
Confluence escalation gateScore is in Warning tier (50–69) but fewer than 2 signals have normalized value ≥ 0.10Tier demoted from Warning → Watch. The numeric score is unchanged; only the tier label changes. confluence_demotion flag surfaces in drivers. Critical tier (≥70) is exempt.
supply_spike_gatedCurrent snapshot shows a supply spike but supply_spike_prev is absent or false (i.e. first appearance — no prior snapshot also showed a spike)supply_spike signal weight capped at 20% of normal. Full weight restored when spike persists across 2+ consecutive snapshots (~5-10 min). Prevents flash-loan-induced single-snapshot events from driving the score.
bridge_flow_spikebridge_flow_pct > 80% — supply spike is primarily explained by L2 bridge inflows rather than organic mintingsupply_spike signal weight reduced to 50% of normal. Prevents bridge activity on Arbitrum, Base, and other L2s from being misread as an exploit or organic demand shock.
cex_only_stressCEX price shows stress (>20 bp deviation) but DEX price is calm (within normal range)Sentinel driver added to the alert list; score is not increased. CEX stress without DEX confirmation is flagged for investigation rather than scored — it may reflect a CEX-specific issue, a withdrawal freeze, or a pre-depeg signal requiring manual review.
When any guard fires, a meta-entry (corroboration_gated, confluence_demotion, bridge_flow_spike, cex_only_stress) is appended to the drivers array so the dashboard and alert callers can surface why a tier was adjusted.

Token Type Adjustments

Different token types have fundamentally different expected behaviors. A yield-bearing token like sUSDe is designed to accrue value above $1 — scoring it against a strict $1 peg would produce constant false positives. The model adjusts the price deviation normalization curve per type.
TypeAllowed RangeMax Deviation ThresholdExamples
Standard USD$0.99 – $1.015% deviation = max scoreUSDC, USDT, DAI, LUSD, crvUSD
Yield-bearing$1.00 – $1.35 (growing)±35% of expected yield-growth rangesUSDe, sfrxUSD, sDAI, USDS
RWA / Treasury$1.00 – $1.10±10% of expected NAVBUIDL, mTBILL, USDY, OUSG
Gold-pegged±5% of XAU spot5% deviation from XAU = max scorePAXG, XAUT
FX-pegged±10% of FX rate10% deviation from EUR/GBP/etc. = maxEURS, agEUR, EURT

Velocity Momentum & Hysteresis

Velocity Momentum Boost

A rapidly rising score gets a forward boost of up to +15 points, surfacing escalating crises earlier — even before the raw score crosses a tier threshold.
  • Velocity — score change per 5-min tick (positive = worsening)
  • Boost activates when velocity exceeds 10 pts/tick
  • Max boost: +15 points added to effective score
  • Accelerating events (velocity itself rising) amplify the boost

Hysteresis (Alert Fatigue Prevention)

Tier transitions require sustained elevated scores. A single noisy tick cannot flip the tier — preventing alert fatigue from short-lived spikes.
  • → Critical: 1 tick above threshold (fast — critical is urgent)
  • → Warning: 2 consecutive ticks above threshold
  • → Watch: 2 consecutive ticks above threshold
  • → OK: 2 consecutive ticks below clear threshold (35)
The combination of velocity boost + hysteresis means the system surfaces emerging crises early (momentum) while suppressing false alerts from brief liquidity blips (hysteresis). UST’s 2022 depeg, for example, would have triggered Watch → Warning → Critical over approximately 6 ticks as both the score and velocity accelerated simultaneously.

Low Signal Coverage Guard

When a score reaches ≥50 (Warning range) but fewer than 5 signals have data AND the price is currently at peg, the tier is automatically demoted from warning to watch. This prevents a thin-data token from entering a warning state on the strength of one or two signals alone. All 5+ active signals must agree before a warning is confirmed.

State Flags (Binary Crisis Indicators)

These six flags are computed separately from the numeric score and surfaced alongside it in the API. They name specific crisis types that are active right now — a score of 72 tells you how bad; the flags tell you what kind.
FlagTrigger ConditionWhat It Means
liquidity_crisisSlippage >150 bps OR cannot route $100k OR (slippage >80 bps AND liquidity decay >40%)The market is too thin to exit a meaningful position without significant price impact. Normal redemption is impaired.
oracle_dislocationOracle deviation >200 bps OR feed stale >24hThe Chainlink feed has significantly diverged from on-chain DEX prices, or has stopped updating. Lending markets relying on this oracle are at risk of enabling under-collateralized borrowing.
cross_chain_fragmentationChain spread >0.5%The same token is trading at meaningfully different prices on different chains. Cross-chain arbitrage has broken down — typically signals bridge stress or isolated chain liquidity failure.
supply_spike_alertSupply minted >5% in 1h OR >2% in a single blockAnomalous on-chain minting detected. Single-block spikes are especially concerning as they match exploit-style emergency mints seen in Terra, IRON Finance, and similar.
chain_supply_imbalanceOn-chain supply on one chain exceeds DeFiLlama per-chain circulating by ≥20%The tracked on-chain supply does not match the official circulating supply data. A leading indicator of bridge exploits or unbacked minting.
death_spiral_candidateAdjusted price deviation >2% AND persistence >20 min AND (liquidity decay >30% OR slippage >100 bps OR liquidity unavailable)Multi-signal stress confluence. Price is off-peg, it has been sustained, and exit liquidity is deteriorating simultaneously. This is the pattern seen in terminal depeg events. Requires immediate attention. Note: yield and RWA tokens apply type-adjusted deviation thresholds so expected trading premiums do not trigger this flag.

How Depeg Risk Feeds into Vault Scoring

The live depeg monitor output is merged into every vault’s composite risk score via the depeg overlay module. It runs at pipeline time, applies the worst-case signal across all chains where the underlying token trades, and contributes to the vault composite at 5% weight.

depeg_sub_score vs monitor score

The monitor score measures real-time market stress (all 16 signals: slippage, persistence, supply, oracle). The depeg_sub_score fed into the vault composite is narrower — it focuses on capital loss risk from peg deviation and persistence alone, plus a floor from the monitor score to catch liquidity collapse events even before price moves.

Vault Recommendation Actions

When a depeg is active, the overlay generates a recommendation for vault holders:
  • EXIT — critical tier + ≥30% peg deviation
  • REDUCE — critical + ≥5% deviation
  • MONITOR — critical/warning + any deviation
  • WATCH — warning tier OR score ≥50
depeg_sub_score ComponentContribution
Peg deviation score (graduated)Base: 0.1% dev → 5pts · 0.5% → 15pts · 1% → 30pts · 2% → 50pts · 3% → 65pts · 5%+ → 80–95pts
Persistence bonus+10 pts max after 120 minutes of continuous off-peg deviation
Monitor score floormax(peg_score + bonus, monitor_score × 15%) — ensures liquidity collapse is not ignored even when price hasn’t moved yet
Supply spike boost+5 to +20 pts when minted_24h_pct >40% (large unexpected minting alongside any deviation is a danger signal)
Final cap0–100 range; fed into vault composite at 5% weight

API Response Fields

The /api/latest endpoint returns a snapshot of every tracked token. Vault objects from /api/vaults include monitor_tier and per-composition depeg_score.
FieldTypeDescription
scorenumber (0–100)Live composite risk score. Higher = riskier.
tierstringok / watch / warning / critical / premium
abs_dev_cleannumber | nullAbsolute peg deviation (clean, outlier-stripped)
tsnumberSnapshot timestamp (epoch ms)
symbolstringToken symbol (USDC, USDT, etc.)
chainstringChain where this snapshot was taken
addressstringToken contract address
monitor_tierstring | null(Vault field) Live risk tier for the vault’s underlying token — watch / warning / critical / null
depeg_scorenumber | null(Vault composition field) Monitor score for each token in the vault’s composition

Signal Weight Hierarchy at a Glance

Screenshot 2026 04 13 At 10 58 52 AM