Methodology
How Pharos grades stablecoins: transparent scoring across safety, peg stability, V10 mint control, liquidity, yield, and dependency risk.
Safety Score methodology v10.40 · updated
Treat this page like a reference manual, not a marketing explainer. All scoring methodologies operate over the active subset of tracked stablecoins; pre-launch and frozen coins are excluded from new computations and live aggregates.
Reader guide
Reader mode keeps summaries up front. Switch to Analyst for formulas, caveats, and worked examples.
Page rhythm: summary, quick facts, worked example, technical notes.
Summary
Model purpose and the core signal to scan first.
Quick facts
Cadence, score range, dependencies, and failure behavior.
Worked examples
Real inputs run through the same functions used in production.
Technical notes
Expanded formulas, caveats, and changelog links when you need them.
Reader guide
Reader mode keeps summaries up front. Switch to Analyst for formulas, caveats, and worked examples. Use the jump rail toggle to switch modes without losing your place in the page.
New to stablecoin design? Learn how each stablecoin design produces its peg before the scoring formulas.
Editorial preface
How Pharos grades every stablecoin, and what it refuses to grade.
Every safety grade Pharos publishes is the answer to one question: if this stablecoin started bleeding tomorrow, how much of the loss would the holder eat before the system stopped it? V10 answers through three material pillars. Backing (40%) measures the assets and loss-absorption structure behind the claim. Exit (35%) measures whether holders can leave through executable market or redemption routes. Economic Control (25%) measures who can change, freeze, mint, or otherwise impair that claim.
V10 does not let a strong unrelated pillar average away a weak material path. Its bounded aggregation grants limited headroom above the weakest pillar, then peg behavior, evidence sufficiency, track record, structural caps, dependencies, and wrapper-local risks can only constrain the published result. A missing required fact returns NR unless a reviewed bounded policy states exactly why the remaining uncertainty is rateable.
Dependencies are causal inputs rather than a standalone score. A serial wrapper cannot escape its parent; basket exposure is weighted and bounded according to reviewed materiality. Wrapper-local custody, control, transfer, and redemption facts remain visible alongside the inherited limit, so the downstream claim can be worse than its parent but cannot become safer by averaging in unrelated strengths. When a product's risk-absorption label does not establish who operates it, reviewed ownership selects the existing wrapper form: third-party wrappers receive strategy-vault treatment, while parent-protocol wrappers receive native-staked treatment.
Yield tokens get flagged, not folded. Pharos tracks yield-bearing and NAV tokens through a separate yield-risk pipeline because the failure modes are different in kind, not just degree. A holder of a $1.00 stablecoin and a holder of a $1.04 wrapper are not running the same trade. The wrapper carries source risk, sustainability risk, and benchmark drift that have no analog in the underlying peg. Until those signals are sourced to a standard we will publish against, we surface them on the yield page and leave the safety score honest about what it does and does not measure. Configured NAV wrappers can still inherit peg risk from a referenced base; pure fund-share tokens with no peg reference receive a peg multiplier of 1.0 and are graded on the structural dimensions alone.
— Pharos, July 2026
Stablecoin Lifecycle Phases
Lifecycle phase is a data-collection policy. No per-domain methodology version is bumped when a coin transitions between phases.
Every tracked stablecoin is in one of five lifecycle phases. The phase determines which surfaces ingest, score, and read back the coin's data. Scoring methodologies always operate over the active subset; every non-active phase is excluded from new computations and live aggregates.
Active
Default state. Full worker data collection (supply, price, blacklist, mint/burn, DEX liquidity, yield), subject to each domain's coverage and listing-class eligibility. Active status does not guarantee inclusion in every score or live aggregate: PSI monetary aggregation includes only active core stablecoins and cash equivalents, not tracked variants or stable-value investment products. Listed in the homepage table, search, compare picker, and sitemap.
Pre-launch
Tracked for visibility before launch. No live data yet, so the coin is excluded from score computations and live aggregates. Surfaced on /upcoming with milestone metadata and on its own pre-launch detail page; not in the homepage table, active taxonomy pages, portfolio picker, or live comparison picker.
Quarantined
Temporarily withheld after a reviewed inability to establish positive circulating supply or market cap. The static profile, reason, and review date remain public, but providers are not refreshed and the record is excluded from live surfaces. Missing price coverage or a genuine depeg alone does not trigger quarantine; those remain active monitoring failures.
Delisted
Reviewed as outside the listing scope. The canonical static profile and sourced decision remain readable. Delisted records never enter live aggregates, alerts, or score recomputation.
Frozen
The coin is effectively defunct (issuer abandonment, supply trending to zero, irrecoverable depeg, regulatory shutdown) but its historical data and detail page are preserved as an archive. No new data is collected, and the coin is excluded from PSI, DEWS, Safety Score recomputations, Bank Run Gauge, and other live aggregates. Frozen entries appear in the cemetery with an "archived data available" link to the preserved detail page. The report card shows an all-F stub matching the existing dead-stablecoin pattern.
TRACKED
The complete catalog across all five phases. Used for canonical identity, validation, and static detail routes.
ACTIVE
Active subset only. Write-side collection and live aggregates apply their domain coverage and listing-class eligibility within this subset.
READABLE
Every post-launch record: active, quarantined, delisted, and frozen. Historical/read-only use only.
FROZEN
Frozen subset only. Drives the cemetery merge and the dataset export.
See also: Cemetery · Upcoming launches · Listing policy · Operator runbook: docs/freezing-stablecoins.md
Version increments when price sources, consensus, supply attribution, enrichment, or validation rules change.
The pricing pipeline collects observed quotes from aggregators, exchanges, oracles and on-chain pools, then applies reviewed protocol/NAV marks and bounded fallback enrichment. Source identity, confidence and observation provenance stay attached to the published price.
Consensus uses fully pairwise agreement clusters and publishes the winning cluster median, retaining its strongest member for provenance. Large independent DEX protocols can challenge soft consensus; executable wrapper redemption marks remain distinct from issuer-conversion references and nominal par. Neither a listed provider nor a nominal reference proves an observed market.
Freshness belongs to the observation, not the publication. Upstream timestamps are preferred; local-fetch and unknown modes remain explicit. Carries, retries and child valuations preserve original clocks and source-specific age limits. Replay-safe continuity may preserve a confirmed signal without inventing a new one.
Unavailable prices remain unavailable, never zero or a nominal peg fill. Supply and lifecycle rows can remain visible while price gaps degrade cron and public health. Recovery needs a fresh admitted publication; release dates, provider registration and local comparisons do not prove production acceptance.
Pricing release history · Native Hive activation and acceptance · Observed SOFID source cutover · Supply and original-clock changes
Update cadence
15m refresh
Sources
20+ live voices
Output
Price + confidence tag per asset
Preconditions & Failure Modes
Minimum data
At least 1 source must return a price; consensus requires 2+ for high confidence
Circuit breakers
Most live upstream families are breaker-gated: opens after 3 failures, probes every 30 min
Failure behavior
Degraded sources are excluded from consensus; enrichment pipeline fills remaining gaps; stale cache used as last resort
Worked example: USDC price consensus across 6 sources
Sources: CoinGecko=1.0001 (w2), DL-list=0.9999 (w1), Binance=1.0001 (w2), Kraken=1.0000 (w2), Coinbase=0.9998 (w2), Curve=1.0003 (w3)
Peg ref=1.0, threshold=50 bps. All 6 within 50 bps of each other → single cluster of 6.
Published price = cluster median = 1.00005 (midpoint of 1.0000 and 1.0001, not a four-decimal display rounding). Internal selected source for provenance = Curve (highest-weight member).
Result: price 1.00005, confidence “high”, source label from the full agreeing cluster.
Technical details: source weights, consensus algorithm, overrides, enrichment, and validation
Current source admission and exceptions
Hive internal market (HBD/HIVE) evidence is HIVE/USD divided by the native midpoint. At least 500 HBD per side within 2%, narrow spread, recent non-self turnover, fresh non-regressing node heads and an independently timestamped CoinGecko HIVE/USD parent are required. The parent must be within five minutes; the effective local-fetch clock is the earlier leg, and neither publication nor retry refreshes either leg. This is one CoinGecko-dependent soft observation, not two independent votes or a conversion-price guarantee. It remains single-source without independent agreement and requires depeg confirmation, ordinary validation and pool challenge; a near-par direct CG quote can win the family over a native depeg. Failed gates remain unavailable. HBD supply is the protocol's own debt perimeter, current HBD supply minus the liquid DAO treasury, read from the same bracketed node proof; CoinGecko caps do not override it and a failed read withholds supply.
SOFID uses exact-identity CoinGecko/Kraken observed market consensus, not a nominal protocol-par override. Discounts and premiums keep their value and original clock; Kraken remains local-fetch and confirm_required. Missing quotes and carried nominal references stay unavailable, not $1. Issuer-conversion references for ONED/PYUSDx do not establish direct-wrapper identity or guaranteed liquid pegs, and fresh own-market discounts win.
CoinGecko Onchain is the sole enabled exact-address augmentation provider, key-gated and explicitly allowlisted. Only canonical deployments with missing prices or below-target source depth qualify, under identity, freshness, liquidity and request-budget gates. Unknown addressed tokens are not reinterpreted by symbol; reviewed deployment narrowing must still match current metadata. Eligible exact reviewed overrides reserve one bounded request before network round-robin; fairness rotates inside priority cohorts and persistent active gaps precede breadth refresh. Hourly corroboration and quarter-hour missing/address-priced refresh do not renew source clocks. DexScreener exact-pool fallback is separate from this address-provider adapter.
Promoted DEX lanes carry structured source-filter telemetry and confidence profiles; a lone protocol needs hard-source corroboration unless no non-DEX voice exists. Their presence withholds overlapping aggregate fallback even when their candidates fail corroboration. Direct-API quote legs prefer tracked live stablecoin prices, not unconditional $1 symbols.
Challenger snapshots retain qualifying protocol diversity before their TVL coverage cap. Challenger and DEX-bridge pools must pass pair-price coherence: the tracked leg's USD price agrees with the pool pair ratio × the counter-leg's USD price. A DEX row without a usable primary for deviation, outlier and display guards is withheld. Pool challenge uses per-protocol medians, not one rogue pool; high-TVL multi-protocol and narrowly hard-corroborated single-protocol exceptions retain their technical gates. NAV tokens are excluded from challenge. Replacement updates candidate prices; corroborated severe downside including depeg-authoritative evidence may lose confidence but retains its price and satisfies the temporal-jump guard. Blocked DEX slugs such as Bunni cannot contribute.
CoinGecko discovery tickers are price-only evidence, separate from curated Kinesis ticker/CEX primary lanes. Non-stale, non-anomalous USD-equivalent quotes need positive finite prices, at least $1,000 observed USD flow and non-future registry freshness within 24 hours. Exchange prices are volume-weighted; aggregate weights use observed flow × ticker confidence 0.55, never synthetic depth or TVL. Tickers request no depth and attribute zero TVL, including legacy rows; genuine pools retain TVL-based weights. Zero-source-TVL price publication still needs usable primary, peg, outlier and display guards and cannot clear primary, UI or depeg DEX trust floors. Price-observation counts may include tickers; liquidity pool counts cannot.
FX uses supported Chainlink intraday/commodity references, Frankfurter and the dated secondary mirror, with ExchangeRate-API as tertiary daily fallback. A failed live fetch can carry only in-cadence dated references; independent OXR, Chainlink and metals probes continue so a recovered intraday subset can return live. CZK/PLN use business-daily ECB via Frankfurter and AED the calendar-daily secondary feed, with currency-specific validation and supported CoinGecko native quotes. Validation bands and the dirham peg never substitute for an admitted provider/reference. Native-peg corroboration can fill or correct divergent weak/mixed USD marks and veto/resolve derived USD/FX depeg moves, but is not replay-safe primary consensus. Historical non-USD replay prefers direct CoinGecko native-fiat history against 1.0 before USD history.
JLTXX needs exact Token Class transaction NAV with its original dealing date and separate five-day business-day checks, finalized EIP-1898 native shares/observed decimals/canonical hash/time and a reviewed temporal/legal perimeter, even with positive CoinGecko market cap. Class assets are never circulating supply. Staged bootstrap only captures evidence; it cannot activate JLTXX or publish scores. Quarantine persists until approved runtime price/market-cap admission.
Reviewed USDU Uniswap V3 USDU/USDT recovery requires QuoterV2 sells of 1,000 and 100,000 USDU agreeing within 5%, actual inventory, code/implementation/pool identity and canonical-block checks. Both block and trusted USDT parent must be newer than five minutes. It never replaces a publishable price and has no replay-safe or standalone depeg authority. AUDm/CHFm/CADm/COPm/JPYm may use verified Mento pool/Broker sells × fresh USDm under identity, fee, capacity and trading-limit gates. BD uses reviewed Aero BD/USDC code, exact pool, transferable inventory and bounded impact; the older block/USDC clock governs five minutes. Legacy USDv uses Jupiter sells matched to live Meteora state, active-bin inventory and fresh Solana clocks. These routes retain fallback confidence and weak-source safeguards.
Source registry freshness kinds and maximum trusted ages govern admission. CoinGecko precision=full and upstream last_updated_at keep unrounded threshold inputs and reject stale rows. Bitstamp, Coinbase and Curve on-chain use upstream-observed provenance; crvUSD's dedicated Curve oracle circuit enforces five-minute block freshness. Replay cache also enforces each source's native age inside the composite six-hour cap. Hard single-source depeg authority requires source-native freshness, not a local collection timestamp.
Fallback enrichment retains budgets, circuits, exact identity, liquidity/depth, corroboration and peg-aware plausibility gates. Thin executable routes can qualify for fallback display but not standalone depeg mutation or replay continuity. Exact reviewed pools precede lower-fidelity duplicates. DexScreener complete single-token pool discovery and multi-address batch pricing use separate endpoints; symbol-only search is retired. Weak fallback/search-family address quotes must stay within 500 bps of a fixed peg unless stronger evidence corroborates them. DefiLlama contract and DexScreener discovery/liquidity paths retain dedicated circuits; provider diagnostics and GeckoTerminal probe statistics remain visible in /api/status. Guarded AZND no-quotes are coverage gaps, while thrown/timed-out work fails the circuit.
Live protocol recovery is limited to active registry assets, excluding frozen/quarantined budget consumers. Optional already-priced refresh failure does not poison the recovery circuit while the incumbent remains usable. Severe fixed-peg downside needs independent-family corroboration unless an explicit protocol redemption or pool-challenge mark applies; list-only aggregator pairs remain single-source. Corroborating candidates survive subsequent validation when the selected result is unchanged, and fresh replay-safe price_cache can preserve confirmed severe-depeg continuity. Unresolved routes remain fail-closed.
Short-lived DefiLlama contract and Jupiter quotes refresh quarter-hourly under separate 25-second pass budgets. Reviewed gaps remain hourly unless a publishable current quote is source-owned; stale labels do not qualify. Missing M and XO remain eligible. Named supplemental prices cannot re-enter as DefiLlama-list observations; reviewed USDFC low-volume quotes retain fallback confidence and original clocks within seven days.
DefiLlama chain current at zero, missing or at most half a vetted baseline triggers reviewed on-chain/chart repair or unavailable chain supply. Material gaps quarantine the asset, carrying last vetted values for at most seven days. After that, supply becomes unavailable, unless the deficit is at most 5% of the vetted total: then the observed remainder publishes as labeled partial coverage, with the chain still null and quarantined. Time alone cannot turn the drop into a redemption. Disappearing chain rows cannot release quarantine. Reviewed release requires observed list current and a review between that incident's first detection and the run clock; omitted chains and later incidents cannot inherit old reviews. A reviewed issuer-native on-chain read (EVM or Solana) that confirms the collapse can release a chain, including one the list omits, at the native amount. Releases do not add supply or override DefiLlama aggregates.
CoinGecko-detail caps can receive a chain split from complete reviewed on-chain shares within a calibrated entry band and wider retain band. Only previous entered/retained admission grants retain hysteresis; a fresh read after carried evidence must pass entry again. CoinGecko keeps the total, source, observation clock and historical aggregate buckets. The same admitted supply price values the on-chain ratio; NAV/yield-bearing assets never assume par. Canonical/escrow accounting prevents double counting and leaves unresolved custody unattributed. Unreadable legs and deadline-skipped reads may carry admitted shares within the existing restore ceiling, preserving original observation evidence. Whole-row restores also label valid partition evidence carried. Ratio rejection and missing valuation cannot carry. Per-asset chainPartition identifies entered, retained or carried shares. Candidate reads rotate under a bounded stage. Preferred supply fails closed; USTB and gtUSDCp reject fresh or carried partitions.
Unavailable supply and completeness survive fallbacks and history: old chain current stays null, observed zero stays zero (including at supplemental merges), and historical buckets require complete peg/supplemental evidence within the 14-day as-of budget. Joined circulation/escrow accounting uses canonical blocks, historical valuations match supply timestamps, and 7D/30D comparisons never silently lengthen their windows. USDC-denominated redemptions use observed USDC/USD, Solayer uses canonical SPL accrual, and FX/cache carries preserve cadence and original age; partial FX stays incomplete. Coverage and replay describe admitted rows, not rejected candidates.
Challenger eligibility and weights use the actual quote source's bounded TVL, never unrelated retained inventory. Composite prices inherit their parent's original clock; sync writes and DEX publication cannot refresh family quotes or aggregate contributors. Future or impossible FX days and out-of-policy epochs stay unavailable until genuinely replaced. USDT-denominated Curve ratios use admitted USDT/USD, with DOLA retaining composite depth two.
Zephyr scanner quotes with known invalid, stale or excessively future clocks cannot become undated prices or fund dependent ZYS NAV valuation. Genuinely absent clocks retain the existing undated policy. Independent ZSD official circulation and preferred market quotes keep their own provenance; rejected scanner prices do not erase them.
Aggregators
CG (w2), DL-list (w1)CoinGecko (w2)
DL list (w1)
Exchanges
BN (w2), KR (w2), CB (w2), BS (w1)Binance (w2), Kraken (w2)
Coinbase (w2), Bitstamp (w1)
Reserve NAV
CL/SS/JPM (w3)Chainlink / Superstate
JPMorgan (w3)
On-chain
Curve (w3), DEX/address (w1), protocol DEX (w2-w3), GT (w1)Curve (w3)
DEX agg/address (w1), protocol DEX (w2-w3), GT (w1)
N-Source Consensus
Pairwise clusters; publish cluster median, keep best member for provenance
Pool Challenge
Soft-only → replace with protocol-aware weighted mediansSoft-only consensus challenged; replacement uses protocol-aware weighted medians
Authoritative Overrides
Protocol redemption (cUSD, iUSD) after market probes
Enrichment Pipeline
5-pass fallback with Jupiter before DexScreener5-pass fallback with Solana-native Jupiter recovery
Price Validation + Confidence
high / single-source / low / fallback
Source weights
| Source | Weight | Type | Notes |
|---|---|---|---|
| CoinGecko | 2 | Aggregator | Primary market data via /simple/price |
| CoinGecko ticker | 2 | Exchange ticker | Curated ticker corroboration path for tracked exchange pairs |
| DefiLlama (list) | 1 | Aggregator | Independent stablecoins list price via stablecoins.llama.fi |
| Binance | 2 | CEX | Single batch call for all spot tickers |
| Kraken | 2 | CEX | Explicit pair mapping with alias-safe response handling |
| Bitstamp | 1 | CEX | Lower-weight corroboration via the all-tickers endpoint |
| Coinbase | 2 | CEX | Per-symbol spot prices |
| Curve on-chain | 3 | On-chain | StableSwap implied prices via explicit direct, one-hop, and opt-in chained-hop get_dy() routes |
| Curve oracle | 3 | On-chain | Additional primary-consensus voice for crvusd-curve |
| DEX pools | 1 | On-chain | Aggregate DEX voice, withheld once an overlapping protocol DEX candidate passes registry, freshness, price and TVL checks, even if corroboration later fails; the reviewed VUSD route may enter primary publication at the existing $250K UI floor while remaining soft and non-depeg-authoritative |
| Protocol DEX APIs | 2-3 | On-chain / pool-state API | Primary-consensus protocol promotion currently supports Fluid, Balancer, Curve, Uniswap V3, Uniswap V4, Raydium, Orca, Meteora, PancakeSwap, Aerodrome Slipstream, Velodrome Slipstream, and Aero when the protocol lane survives registry, TVL, freshness, and corroboration gates. |
| GeckoTerminal | 1 | On-chain | Pool-level cross-check for weak CG / DL-list soft-source outcomes (≥$10K TVL) |
| CoinGecko Onchain (address) | 1 | Exact-address augmentation | Key-gated and allowlisted; canonical deployments only, targeting missing prices or below-target source depth. Hourly corroboration plus quarter-hour refresh of missing/address-priced rows retains freshness, liquidity and request-budget gates. DexScreener exact-pool fallback is separate. |
Consensus algorithm
The consensus engine clusters all available source prices for an asset and picks the most reliable result:
- Collect all source prices with non-failed circuit breakers
- Collapse repeated quotes from one source to their median, then count each registered provider family as one independent voice by retaining its strongest representative
- Find the largest fully pairwise cluster of sources that agree within
50 bps(fixed pegs) or500 bps(NAV tokens) - Break equal-size clusters by total weight, then stronger trust tier, then tighter spread, then peg proximity when available
- If the winning cluster has 2+ members, publish its median price and separately keep the best cluster member for provenance
- Choose that internal selected source by weight, then trust tier, then peg proximity, then source key
- If no cluster of 2+ forms, fixed pegs stay on fixed-peg rules and fall back to the best trusted single source
- Pool challenge: if all agreeing sources are challenge-eligible (CG, DL-list, DEX average, or promoted protocol DEX sources without a hard-source corroborator), check each large priced DEX pool (≥$100K TVL) from the published challenger snapshot built from the full retained pool set. If any protocol-level median diverges beyond the peg-type-aware threshold (500 bps for USD pegs,
min(2 × depeg threshold, 500)for non-USD pegs), downgrade tolow, and replace the price when at least two independent protocol-level medians corroborate that divergence unless severe-downside preservation applies. A high-TVL multi-protocol replacement can also use the peg depeg threshold when the published price is inside that threshold and at least two $5M+ protocol medians are depeg-sized in the same direction and mutually coherent inside the pool-challenge bps band. A one-protocol replacement remains allowed only when the protocol median has at least $5M TVL, the DEX median crosses the peg depeg threshold, and a hard primary candidate agrees within the normal consensus threshold
agree(a,b) = |a.price − b.price| / midpoint(a,b) × 10000 ≤ thresholdBpsAuthoritative price overrides
For wrapper-style assets whose executable value is set by direct protocol redemption, or by an instantly redeemable tracked base asset, rather than by secondary-market liquidity, the pipeline switches to an authoritative redemption-based mark:
- cUSD (Cap):
getBurnAmount()— cUSD → USDC redemption rate - iUSD (infiniFi):
receiptToAsset()— iUSD → USDC redemption rate - USDai: inherits tracked
PYUSDpricing because base USDAI is treated as an instantly redeemable PYUSD wrapper - iUSD (Initia) / USDCx: inherit tracked
AUSDorUSDCpricing when the parent rail is fresh and replay-safe - M / USDK / XO / USDnr: inherit tracked
wMpricing because Pharos treats them as base-unit or instantly redeemable M0 extension paths rather than free-floating market-priced assets; M requires wM itself to report fresh replay-safe single-source confidence - ONED / PYUSDx: reviewed one-for-one issuer-conversion references use tracked USDC or PYUSD. Fresh admitted own market prices win, including discounts; own market history is retained rather than replaced with parent history. These routes do not establish direct-wrapper classifications or guaranteed liquid market pegs
- Nominal par references: source-reviewed USD and FX redeemables with observable supply carry par as a separate
nominalPriceReference(sourceprotocol-par). Non-USD par is converted through a fresh or static FX reference, recorded on the reference asfxReferenceTypeandfxObservedAt. Par is never an observed price: a market quote wins only when the depeg detector would act on it without confirmation (fresh, not cached or fallback, and backed by depeg-authoritative exchange, oracle or on-chain sources). CoinGecko and DefiLlama agreement alone, thin, stale, cached or fallback marks never displace par. Otherwise the published price is par withpriceObservedAtMode = "nominal_reference", no observation time and no confidence, which cannot open depeg events, and replay preserves existing history instead of synthesizing par points. SoFiUSD has no nominal override and instead uses its contract-verified CoinGecko/Kraken market consensus; unavailable observed quotes remain missing, and the ordinary depeg-authority gates are unchanged - ERC-4626 NAV wrappers: reviewed vaults such as Sky sUSDS, Ethena sUSDe, Spark Savings, Gauntlet, Steakhouse, Sentora, Falcon, Resupply, Frax, Keyrock, Wintermute, Galaxy, Clearstar, Hyperithm, Yearn, Avant, Noon, Yuzu, and Aave Umbrella use canonical-chain
convertToAssets()reads multiplied by a fresh trusted tracked parent price, including EURCV for euro-denominated shares; without that parent price, the wrapper remains unpriced. Legacy Spark USDC is a separate 18-decimal-share deployment from 6-decimal-share Spark V2 - sGHO / Idle tranches: protocol-specific
previewRedeem()orvirtualPrice()reads price assets whose executable value is not represented by thin secondary markets - AZND thin-pool recovery: the exact Curve AZND/USDC route must pass identity, freshness, balance-floor, and quote-impact guards; a guarded no-quote remains an explicit coverage gap, while a thrown provider failure counts against the route circuit
- crvUSD (Curve):
PriceAggregator.price()enters primary consensus as a live market voice, not a protocol override
Sentora pathUSD's exact Tempo vault route can use a fresh replay-safe single-source pathUSD parent. The resulting NAV retains the parent's market source, single-source confidence and original observation time; it does not gain protocol-authoritative confidence. Stale, fallback, cached and non-replay-safe single-source parents remain unavailable.
Pre-intake NAV supply valuation uses the same reviewed vault allowlist and the configured Worker RPC map as live enrichment, including Robinhood's existing keyed Dwellir route. It adds no endpoint or nominal-par fallback; an unavailable route or untrusted parent leaves valuation unavailable.
DEX pool discovery uses DexScreener's complete single-token token-pairs/v1 endpoint; the bounded multi-address pricing fallback remains on the separate tokens/v1 endpoint.
Apart from nominal par references, these overrides set priceSource = "protocol-redeem" and priceConfidence = "high" when the quote validates against peg bounds, and they are applied after the GeckoTerminal probe so later market checks cannot overwrite them. Recovery scheduling treats a current price as usable only when it is positive and carries publishable source and observation-time provenance, and each live candidate has a bounded slice of the shared budget so one stalled wrapper cannot skip the remaining active gaps. Parent trust is judged on the composite's replay-safe core, so an agreeing non-replay-safe corroborator that joins a parent's consensus label can neither strip trust from a high-confidence parent nor upgrade one the gate would otherwise reject. Vault NAV routes persist their last-good on-chain rate, and a failed live read can publish that cached rate times the fresh trusted parent price as an explicit low-confidence protocol-redeem-cached-rate source — bounded to 24 hours, never replacing a live price, and never depeg-authoritative. Audited wrapper exceptions can use a fresh high-confidence same-run parent consensus for live pricing while keeping historical replay on replay-safe sources.
CoinGecko Supply Gap-Fill Limits
DefiLlama list totals remain the canonical supply for DefiLlama-backed assets. When exactly one reviewed deployment is missing from DefiLlama's chain breakdown, a fresh CoinGecko market cap may raise the aggregate only while CoinGecko/DefiLlama stays inside a bounded band: a new fill needs a ratio above 1.05 and at most 1.45, an existing fill is kept above 1.02 (hysteresis), and no fill ever exceeds 1.50 at current or at any compared 1d/7d/30d point. All admitted aggregate buckets come from one CoinGecko series, and the row exposes supplyGapFill provenance with the retained DefiLlama total. Since v6.47, each historical remainder is attributed to the missing chain only when every existing chain has an observed bucket and their sum matches the DefiLlama baseline within max($0.01, baseline × 1e-6). Otherwise that missing-chain bucket is null and withheldHistoricalBuckets names the unavailable window; observed chain values are never scaled and admitted aggregates are unchanged. Aggregate admission still fails closed for out-of-band, incomplete or ambiguous supplemental evidence.
Enrichment Pipeline (6-pass fallback)
Assets still missing prices after primary consensus go through a staged enrichment pipeline:
- Pass 1: Canonical tracked contract identity → DefiLlama coins API, but only prices that pass peg-aware validation can resolve the asset
- Pass 1b: Tracked alternate deployment fallback only (no synthetic same-address cross-chain probing; same validation gate as pass 1)
- Pass 2: CoinMarketCap category plus exact-slug quotes; truncated category pages ignore returned rows until the exact targeted lane validates active status, contracts, volume, freshness, and peg bounds
- Pass 3: Jupiter Price API for tracked Solana mints (authenticated when configured, block-freshness checked, peg-aware, and able to add bounded soft evidence to agreeing low-depth Solana prices)
- Pass 4: DexScreener exact token-address pools only; the older unique-symbol search fallback is retired, and each run makes at most one same-chain batch of 30 exact addresses with rotating chain and within-chain coverage
- Pass 5: Allowlisted low-volume CoinGecko recovery, including reviewed NXUSD, Hermetica USDh, Crown BRLV and USDFC observations, published only with fallback confidence and the original observation clock inside the seven-day freshness budget
Broad fallback collection runs hourly outside the primary publication invocation. Pricing v6.52 refreshes short-lived DefiLlama contract and Jupiter quotes every 15 minutes alongside the existing exact-address and exact-DEX refresh. Missing-price or source-owned rows qualify, but reviewed gaps stay hourly unless a publishable current quote is already source-owned; a stale source label is insufficient. The contract and Jupiter passes each have a separate 25-second budget. The same admission guards and original observation clocks apply; staged recovery retains fallback confidence and does not become a trusted parent price for another asset.
Pricing v6.52 also requires a chain-dropout release review to fall between that quarantine's first detection and the current run. An observed list current is still required; an omitted chain or a later incident cannot inherit an older review. Reviewed releases do not add supply or override the DefiLlama aggregate.
Pricing v6.55 stops one small quarantined chain from blanking a whole asset. Once the seven-day carry has expired, a quarantined deficit of at most 5% of the vetted whole-asset total publishes the observed remainder as partial coverage. Nothing is carried or added, the excluded chain stays unavailable and quarantined, and the stablecoin page labels its market cap “Partial supply” with the excluded chain names. A larger deficit keeps supply unavailable. Elapsed time still never accepts the collapse.
DefiLlama-list consensus inputs must retain a DefiLlama origin or an absent legacy source label. Named supplemental prices cannot be relabeled as a second DefiLlama observation; CoinGecko-fallback supply rows remain excluded from this input.
Confidence levels
| Level | Condition | Downstream effect |
|---|---|---|
| high | Independent agreeing cluster survives list-aggregator downgrade and pool challenge | Published as the agreeing cluster median; depeg detection still checks authoritative-source trust before skipping confirmation |
| single-source | One usable source, or a non-independent list-aggregator cluster treated as one source | Depeg detection requires pending confirmation |
| low | Sources disagree beyond threshold, or pool challenge fired | Pool challenge: TVL-weighted pool price used; otherwise closest to peg reference; depeg requires confirmation |
| fallback | All primary sources down; enrichment or cache used | Depeg mutations blocked; stale banner shown on frontend |
Price validation
Every price is validated before entering the replay cache. Validation is context-aware with four modes:
- Authoritative primary: can admit deep downside for fixed pegs, but publication still requires corroboration unless the mark is protocol redemption or a pool-challenge replacement
- Fallback enrichment: rejects isolated bad prints below a lower bound
- DEX pool observation: requires the existing $50K TVL floor; independent ticker prices require at least $1,000 observed USD flow with zero TVL attribution and unchanged publication/trust guards
- Historical backfill: validates against per-timestamp peg references
USD and fiat-FX pegs share the same upside tolerance ratio when a usable reference exists, while commodity tokens (gold, silver) keep the broader 2x reference band and scale references by commodityOunces for gram- and 1/1000-ounce assets. NAV tokens use broad positive-price checks. Replay-safe cache storage is limited to strong, replayable prices and now expires after 6 hours.
Version increments when PSI formula, caps, bands, component definitions, or other score-affecting input semantics change.
The Pharos Stability Index (PSI) is a market-level 0–100 health score for the stablecoin ecosystem. It is recomputed every 30 minutes from live depeg conditions and stress signals, then aggregated into daily history snapshots. Its monetary aggregate contains active core stablecoins and cash equivalents; tracked variants and stable-value investment products remain browsable but do not count as independent supply.
Methodology v3.67 can change repaired historical scores without changing formula weights or bands. Audit repairs and bounded backfills share canonical daily-price, native-domain and DEWS archive inputs with a twenty-one-day supply lookback. Historical trend compares paired admitted supply identities; an unavailable prior denominator or required missing DEWS archive preserves the accepted day rather than inventing flat growth or zero stress. Event exclusion and restoration rebuild the post-audit eligible universe atomically with event provenance. Fixed-clock replay and owner review remain release prerequisites, not completed historical repair claims.
See also: PegScore + DEWS · Safety Scores
Update cadence
30m refresh
Score range
0-100 market health
Main use
Bands: BEDROCK to MELTDOWN
Preconditions & Failure Modes
Aggregate universe
Active core stablecoins and cash equivalents, plus PSI historical assets for continuity; variants and stable-value investments are excluded
Minimum data
Scorer accepts empty depeg and zero warning-band DEWS stress rows, but the cron requires finite positive aggregate market cap and paired previous-week denominator, readable active-depeg inputs, and a fresh non-empty published DEWS generation
Required sources
Observed finite nonnegative current market caps (explicit zero is valid), paired usable previous-week supply, active depeg inputs (observed USD prices or recent replay-safe price_cache; native events use directly observed per-event CoinGecko quotes retained in D1 or timestamped start/recovery evidence strictly younger than six hours), and exact fresh DEWS rows within 3600 seconds
Failure behavior
The cron preserves the last sample when aggregate market cap, paired trend denominator, active-depeg reads or DEWS inputs are unavailable. Assets without usable supply leave denominators, stressed weights and contributors; unpriced open events are omitted, never assigned synthetic calm. Successful partial publication is ok with quality and disclosed supply/trend omission IDs. Native quotes are not inferred from USD prices or FX; PSI adds no network requests
Historical replay
Backfills score any depeg overlapping the UTC day, canonicalize legacy depeg IDs into the current PSI universe, use same-day supply_history prices when they capture the move, cap replayed daily deviation at the event peak, and keep peak event deviation as a start-day floor only when the depeg stayed open through the UTC close and the daily snapshot misses the move
Worked example (verified against computeStabilityIndex)
Inputs: bps=-120, depegMcap=$2B, totalMcap=$200B, age=10d, trend=+1.2, stressBreadth=1.5
severity=1.141, breadth=4.243, score=100-1.141-4.243-1.5+1.2=94.316→94.3
Result: PSI 94.3 (BEDROCK).
Technical details: formula, component math, depeg handling, and condition bands
Scoring formula
Score = 100 − severity − breadth − stressBreadth + trendThe final value is clamped to [0, 100] and rounded to one decimal.
Severity
0–68
Breadth
0–17
Stress Breadth
0–5
Trend
−5 to +5
Compute PSI
100 − penalties + trend
Condition band
BEDROCK through MELTDOWN
Components
| Component | Range | Formula | Purpose |
|---|---|---|---|
| Severity | 0–68 | min(68, Σ(abs(bps)/100 × share × log2(1+mcap/1B) × 60 × factor)) | Magnitude-weighted depeg damage with extra emphasis on mega-cap instability |
| Breadth | 0–17 | min(17, Σ(sqrt(mcap/1B) × 3 × factor)) | How widely depegs are spreading across unique coins |
| Stress Breadth | 0–5 | min(5, dewsStressBreadth) | Early-warning pressure from DEWS stress signals before full depegs |
| Trend | −5 to +5 | clamp(-5, 5, mcap7dChangePct) | 7-day stablecoin market-cap momentum (supports or offsets penalties) |
Depeg handling rules
- Core-universe boundary: tracked variants and stable-value investment products do not contribute market cap, trend, depeg penalties, or DEWS stress breadth; their detail and research surfaces remain available.
- Per-coin deduplication: active events are grouped by coin; each coin contributes once using the worst current deviation.
- Native quote domains: non-USD native events never divide a USD price by a native reference. Live and historical inputs use timestamped native start or recovery evidence retained in D1, strictly as-of and younger than six hours. Continuous native quotes are not retained; other windows disclose unavailable price evidence rather than inventing a deviation.
- Daily provenance: daily scores average all samples, including methodology transitions, with the version breakdown and component sample counts disclosed. All-null components are stored as null and display as unavailable chart gaps; observed zero stays zero. Partially observed components average their observed samples and disclose the count.
- Historical rebuild parity: completed-day backfills score any depeg overlapping the UTC day, canonicalize legacy depeg IDs into the current PSI universe, replay USD-domain deviation from `supply_history.price` when possible, never exceed the event's recorded `peak_deviation_bps`, and keep `peak_deviation_bps` as a start-day floor only when the event remained active through the UTC close and a daily snapshot misses the move. Unless that floor applies, a start day whose restored daily price is back inside the configured threshold drops out of the replay. Later days of an active event keep their daily-price deviation. Restore jobs also repair replay-critical daily price coverage, including PSI historical assets, before the PSI rebuild is rerun.
- Age-aware depreciation: fresh depegs get full weight for 30 days, then decay linearly to a 25% floor by asset age 120 days. Contributor costs use the full-precision scoring factor; rounding applies only to visible age, percentage and cost text.
factor = ageDays ≤ 30 ? 1.0 : max(0.25, 1.0 − (ageDays − 30)/120)Condition bands
| Range | Band | Meaning |
|---|---|---|
| [90, 100] | BEDROCK | Near-ideal market stability |
| [75, 90) | STEADY | Normal conditions with minor stress |
| [60, 75) | TREMOR | Meaningful instability emerging |
| [40, 60) | FRACTURE | Broad, significant market stress |
| [20, 40) | CRISIS | Contagion-level instability |
| [0, 20) | MELTDOWN | Systemic peg failure conditions |
V10 is the sole active publication and consumer contract. V8.17 remains available only in version history.
Safety Score V10 evaluates Backing, Exit and Economic Control at original weights 40%, 35% and 25%. At least two pillars need usable evidence; an unavailable third is explicitly priced at its cause-keyed unknown quality (U when unclassified), not dropped or renormalized. Compute Q = m + 20 × tanh((M − m)/20), where m is the weakest of all three priced pillars and M their weighted mean. Keep peg exponent 0.4 and nearest-integer own-score rounding. Missing subfactors are bounded uncertainty, not measured failure; pricing a missing pillar does not make it usable evidence.
See also: Safety Score changelog · PegScore + DEWS · Liquidity Score · Infrastructure
Model shape
3 pillars + bounded aggregation
Grade output
A+ to F; NR and Pipeline gap are distinct
Publication state
Current or held; never V8 fallback
A+
87–100
A
83–86
A-
80–82
B+
75–79
B
70–74
B-
65–69
C+
60–64
C
55–59
C-
50–54
D
40–49
F
0–39
Preconditions & Failure Modes
Minimum data
At least two usable evidenced pillars; price an unavailable third at C/U with original weights
Required sources
Backing, exit, control, peg, dependency, and evidence-provenance inputs
Failure behavior
Technical gaps have no score/grade; NR requires genuine unavailability, never a low score; global failures hold accepted state
Current evidence rules and admission constraints
Published letter grades use two-consecutive-publication hysteresis. When a new raw band is not yet confirmed, gradeHold names that band and the prior accepted generation; numeric scores, pillars, limits and dependency inputs stay raw. Children consume premium-free inheritable parent scores, not held letters. NR and pipeline-gap transitions are never delayed.
Raw grade cutoffs after nearest-integer own-score rounding are A+ ≥87, A ≥83, A− ≥80, B+ ≥75, B ≥70, B− ≥65, C+ ≥60, C ≥55, C− ≥50, D ≥40 and F <40. A held letter can differ from the current raw band; the numeric score and gradeHold make that distinction explicit.
Unknown pricing is keyed by responsibility for Backing and Control: researched issuer non-disclosure (C) uses Backing 35, Exit 50 and Control 50; Pharos research/infrastructure uncertainty (U or unclassified) uses 50, 50 and 60. Exit's published C/U cause label is presentation-only: both price uncertainty at 50, avoiding the Exit-35 plateau revived when priced and published causes were aligned. Apply this to genuinely missing subfactors and unavailable pillars on otherwise rateable cards, retaining known components, measured adverse values and source witnesses. Missing reconciliation or supervision earns no assurance credit.
Verified worse facts score lower than unresolved ones: proving that an opaque controller is a single key lowers its authority base from 60 to 50. Unknown is priced as uncertainty, not as safety; research can lower a score.
A rated card is Provisional when more than 50% of its original scoring weight is priced at unknown constants. The public provisional flag and unknownPricedWeightShare disclose that share, computed from cause-bearing components and effective weights, mixed reserve subfactors, controlling paths and a priced unavailable third pillar. Measured adverse facts, excluded factors and verified pool-less Exit supply are not unknown weight. The label changes no score, grade or availability; older archives without the fields remain unlabelled. No new ±1-point boundary hold is introduced; existing publication-grade hysteresis remains.
One economic-authority ladder replaces D33, D29, D30, H, seasoning and the separate verified fallback. The weakest effective mint, upgrade, fee/accountant, allocator, curator, custody-transfer or parameter path competes: single signer 50; opaque controller 60; verified quorum 65; quorum with unavoidable delay 70; public governance/minority veto with unavoidable delay 75; reviewed immutable execution without discretionary economic power 90. An enforceable bound preserved by every bypass and upgrade adds 10. Reconciliation adds at most 15; prudential supervision adds 15 or attestation-only 10, never both; assurance is at most 30. Clamp each authority component after credits at 90 and the overall Control pillar at 90, including non-authority paths; this is not another whole-score cap. Control above 80 does not require supervision. Proven compromised/exploited authority remains 25 without credits. A contract address, deposit gate or immutable proxy does not prove controller topology, bounded accountant powers or immutable economic logic.
Safety Score v10.31 prices known-share local mint/admin/upgrade authority, including bounded powers and local active incidents, without a materiality threshold. The Control pillar retains global paths; local-admin deployment rows disclose quality and supply share. For disjoint deployment/liability slices take the worst quality q per slice: preCap = R(B) − Σ s × (R(B) − R(B_q)), where B is priced-unknown aggregation times peg, B_q uses resolved Control min(C,q), and R resolves non-authority deployment risk. Caps, rounding and the USDT premium apply afterward once. Dominated paths cost zero; 100% local exposure equals global pricing even with infrastructure siblings. Shared controller identity does not suppress a worse local power. Null-share binding, bridges (including bridge mint authority) and oracle behavior remain unchanged.
Local-authority shares are neither normalized nor trimmed. Every slice keeps its own share; total authority loss is the smaller of the share-weighted sum and the worst global-equivalent loss. Totals through 1.001 are tolerated rounding noise; larger totals emit an explicit overlap diagnostic. Fully supported local-only inventories use neutral pre-authority Control90, not missing evidence. Exact mint/upgrade controller common-mode rows owned by the authority lane remain diagnostic; independent chain, bridge and oracle infrastructure stays priced. Infrastructure facts and policy qualities are unchanged, though deductions may change after authority leaves their allocation pool.
Safety Score v10.32 publishes hourly instead of every 30 minutes. Bounds defined as two publication cycles double with it: an accepted publication stays current, and remains admissible as previous lender-collateral evidence, for two hours. Score arithmetic, grade thresholds, weights and evidence-age policy constants are unchanged.
Resolved authority incidents have an initial Control limit of 55 through day 365, then relax linearly to 100 at day 730: min(100, 55 + 45 × max(0, ageDays − 365) / 365). Use the original incident date and exact elapsed days; an unknown date retains 55. Active compromised authority remains 25 and never decays. Distinct authority failures retain this component treatment without duplicate whole-score holder-loss charges; there is no permanent 70/85 history ceiling.
Issuer-administered NAV/fund pricing always needs an applicable top-level pricing review for Treasury funds, credit funds and UCITS/TRS funds. Missing or stale research is U60, not a silently omitted oracle or an invented adverse tier; reviewed privileged/single-source pricing remains 45 and reviewed external relays retain their own quality. A current reviewed savings-rate setter is authority, not an independent liquidation oracle: price it once on the existing authority ladder, using only admitted governance, unavoidable-delay and bypass facts. Missing setter proof is U60; a DAO name or contract address proves no favorable topology.
There are five whole-score limit families: current active depeg (the maximum absolute peak among open events: at least 10% deviation limits to 49 in D, at least 25% to 25 and at least 50% to 10, both within F), known implementation age under 24 months (84), required parents/wrappers, realized holder loss, and the speculative-credit residual limit (59). The restored 24-to-under-36-month tier at 86 is removed; unknown implementation dates have no age ceiling. The residual limit applies only to high speculative-credit signals with measured-adverse responsibility at reserve/global-claim scope, or admitted legacy unscoped signals with absent or measured-adverse responsibility; pillar pricing does not suppress it. Deployment/access-only scopes do not qualify. The broad structural signal matrix, shared-controller and mint caps, and duplicate evidence ceilings remain retired; no other structural cap is restored.
A source-supported realized holder-claim loss of at least 25% limits the score to 39; a loss of at least 1% but below 25% limits it to 49. Hold the selected initial limit L for 365 days, then relax linearly to 100 over the next 365: min(100, L + (100 − L) × max(0, ageDays − 365) / 365). Take the minimum admitted event limit and floor once. Actual root/share NAV impairment or an imposed withdrawal haircut qualifies; market discounts, trade slippage, gross protocol losses and treasury-covered losses do not. Require original event dates, exact scope, a supported holder-claim denominator and primary sources; do not duplicate a whole-score charge for the same event. The 1% and 25% thresholds and recovery periods are calibration choices.
Every rated card has a read-only headline explaining its current limiting constraint. A binding cap keeps its reason; otherwise a score-matching binding Economic Control component takes precedence over unrelated gaps, and Exit reasons follow the credited route. Public factor labels, route descriptions and rounded display scores replace internal field names, route IDs and float noise; exact machine identities and scoring precision remain. An active deployment-incident line needs at least 0.5 directly attributed score points, unless a compromised authority itself binds Control. Inherited risk is explained by the parent limit rather than repeating an unquantified incident claim. This presentation threshold changes no score and retains all detailed deployment adjustments.
Runtime carry-forward has separate bounded lanes: run-admitted redemption disclosures, current-aggregate re-derivation of prior wM/XAUT attribution, and retained per-asset circulating observations without an attribution packet. Original clocks, source generations, effective budgets and deadlines remain explicit; expired or missing evidence stays unavailable. This renews no authority review or lender-class/book evidence and invents no payout or capacity.
Retained per-asset circulating observations without attribution can size Exit through 5,400 seconds instead of 1,800, keeping the original supplyObservedAt and naming current captured chain-supply generation/content. Fresh observations replace them; missing clocks and attributed/economic partitions keep their own budgets. Rejected-zero/positive restoration remains a known upstream limitation. sFRAX's producer still requires complete same-run stock conservation and five-minute components; an explicit published hold is unavailable and clockless, so cannot carry. Without a published hold, a prior positive cached sFRAX observation may qualify for the generic consumer window: Score does not reapply its perimeter or five-minute producer gate. This is conditional fact admission, not fresh observation, economic-claim reconciliation or accepted-publication proof.
Economic-supply captures align independently selected safe EVM heads before reading quantities, without moving the oldest pin forward, and align non-rewindable Solana observations with safe EVM pins. Actual finality remains required for pending-history proof; explicitly reviewed chains may prefer authenticated finalized pins over heuristic delays. The 120-second skew and 30-minute age limits, canonical hashes, original clocks and full conservation checks still bind, with only the named wM/XAUT carry-forward windows above and, since v10.33, one reviewed finalized-head lag margin per asset for partitions on Arbitrum or Base (600 seconds), Optimism (900 seconds) or MegaETH (1,500 seconds), because rollup finality trails Ethereum's. Reviewed bridge creation and initial-sequence witnesses do not waive complete history or current finalized liabilities. Missing history and stale issuer disclosures stay rejected; recovery needs fresh admitted evidence, not a routing change.
Evidence binds to its actual source and scope. Fatal warnings invalidate retained live reserves regardless of display severity or degraded-warning exceptions. Audited fallback baskets retain admitted tracked exposures; live dependency graphs age from each asset's reserve fetch, not a fresher sibling. Missing or expired evidence stays unavailable, never zero or renewed proof. Since v10.34, a reviewed report stays admissible while a newer unreviewed report awaits review, until its own source-age budget, which follows the publisher's measured cadence.
A current explicit assurance or recovery component review governs its own admitted evidence clock after report-scope and technical-observation gates. A separate historical report stays diagnostic and cannot expire the newer governing fact. Future or same-day inadmissible components retain report history without quality credit or orphaned references; original review starts, expiry budgets and strict evidence-reference validation remain. Documentary recovery design alone does not establish current reserve composition, independent financial assurance, funded capacity or a holder guarantee.
Exit follows the selected route's actual payout, not reserve allocations. Single stablecoin outputs have full weight; basket impairment stays unquantified without admitted payout weights. Measured depth and maturity age each original quote at assessment and bind one canonical block hash across proof and execution. An executed method refusal differs from an unavailable read. Non-USD peg fallback requires fresh per-peg FX whose source time is no later than capture; independent capacity, cost, access and settlement gates remain. Exact-request model reviews remain valid through their exact expiry instant, but a current review alone establishes no executable capacity.
A dated, source-backed configured redemption channel without an admitted observation remains a diagnostic unavailable rail at its original review clock. Empty or measured-zero DEX coverage cannot prove that separate channel exhausted. The witness grants no executable capacity, fee bound, output valuation, settlement guarantee or independent backup credit; exact-channel suspensions and reserve quarantine retain precedence. Explicit issuer-undisclosed payout identity stays unresolved before generic collateral, fiat or wrapper-parent inference, never implicit USD parity.
Chain-contract redemption dependencies bind the exact canonical chain and endpoint used by execution certificates, not an execution-model label such as erc4626-instant. Distinct vaults do not become one critical dependency merely by sharing a producer model. Genuine shared endpoints and explicitly reviewed controller, oracle and resource domains remain; protocol/issuer-scoped rails and DEX protocol grouping are unchanged.
Numeric upstream constraints survive unresolved provenance: same-slice known and unresolved losses use their maximum, not their sum. Supported constraints retain their own evidence despite unknown sibling obligations; an unsupported aggregate does not borrow a supported sibling's published proof. Review-level evidence remains available, and inherited Backing alone does not make an asset a wrapper. Shared mint and upgrade controllers are diagnostic only within the same reviewed issuer group; common leading words do not join names. Exact reviewed aliases cover MakerDAO/Sky governance and the StraitsX SGD/USD issuance group. Grouping does not merge legal issuers or reserve pools; unresolved or crossed groups retain common-mode risk.
Supply attribution, aggregate fallback and bridge-route clocks retain their existing admission gates. On-chain quantities and executable identities bind the same canonical hash; bridge receipts are assigned to their exact directed lane before authentication, never enlarged by unrelated sends.
Explicit current-price collection failure remains unavailable even with no historical peg events; it does not establish parity or erase adverse history. Observations cannot postdate their review. Peg adversity uses full precision, not the six-decimal public rounding.
Pillar and aggregate freshness retain categorical current, stale or unknown wire values, with compact source-clock operands where available. Exit uses its original captured DEX observation, generation and inclusive age budget; missing or future clocks are unknown. Backing and Economic Control do not expose a complete pillar clock, so aggregate freshness is not assessed unless all pillar clocks are available; public summaries say 'not assessed', not that every underlying review is undated. A stale wired pillar still makes the aggregate stale. Publication time never substitutes for evidence time; this metadata changes no scores or admission budgets.
Direct Morpho Blue lender-vault Backing uses allocation-weighted collateral-book risk across reviewed VaultV2/MetaMorpho V1/V1.1 deployments, including non-USDC denominations. This is not a general ERC-4626 or indirect issuer-reserve rule. Denomination remains the reserve principal; borrower collateral is not a new holding or dependency edge. At one finalized block, idle cash plus included accrued lender claims must reconcile exactly to the source-accounted book: VaultV2 realAssets, otherwise MetaMorpho totalAssets excluding skimmable donations. VaultV2 separately proves totalAssets = min(realAssets, max-rate-capped accrual) and records the undistributed buffer, without market-specific deductions or an idle/dust plug. Backing and oracle weights use this complete book denominator. Nonfungible deployments are evaluated separately and the minimum reserve quality binds; every required deployment must be available.
Collateral quality q uses Backing from the frozen previous accepted publication when chain/token identity matches exactly one eligible active asset; tracked quality wins whether higher or lower than its authored class. No recursive evaluator or curator grade is used. Held, stale or unavailable parent quality falls back to admitted class facts, never zero. Known class qualities remain native ETH 95; BTC wrappers, ETH LSTs and precious-metal receipts 85; yield/restaked ETH 80; major non-BTC/ETH L1 assets and receipts 70; synthetic dollars, principal tokens and yield-bearing stables 55; structured credit 35. Genuinely unknown collateral uses the cause-keyed Backing value, U50 or C35, not measured loss. Intermediary identities alone do not establish underlying parity.
Methodology policy owns class qualities; exact chain/token mappings live separately in lender-collateral-classes-v1.json with strict admission, original dates, reviewer provenance and sources. Registry identity and digest bind the compiler evidence and evaluation-build closure. The registry includes ssftUSD strategy receipts and PT-USD3 principal tokens at existing quality 55, and Pareto FalconX credit LP plus Robinhood Jersey debt securities at 35. Receipt identity grants neither underlying-token parity nor direct equity ownership. Accepted Backing precedence, future-review rejection and unknown fallback remain; the split creates no bridge-aware ETH or automatic USCC class.
For collateralized markets, fractional LLTV l gives transmission t = l² and lender quality L = 100 − t × (100 − q). With deployed claim weights w, Q = Σ(w × L). Effective parent Backing P blends as R = min(P, idleShare × P + deployedShare × P × Q / 100). Higher LLTV transmits more collateral-quality deficit without asserting actual borrower LTV equals LLTV. Genuine collateral-free debt-bearing lending transmits fully; verified zero-parameter idle sentinels remain idle. A complete all-idle book retains P with Q not applicable; zero NAV is unavailable. Both inherited reserve and concentration contributions use R without double charging or a favorable generic-floor escape. These are dimensionless methodology scores, not probabilities of loss, recovery forecasts or financial assurance. Capital reuse, parent caps, mechanism evidence, Exit, peg, pillar weights and grade bands are unchanged.
Sum all admitted reserve rows referencing the exact same required parent before testing the existing 99% inheritance threshold, including eligible idle and strategy slices. A split balance is economically equivalent to one row, but denomination alone cannot establish strategy look-through. Keep complete-book reconciliation, exact identity, cycle, parent availability and lender-quality constraints. Lender-book eligibility follows supported adapters and complete actual books, not an asset allowlist; unresolved mechanism evidence does not erase known reserve contributions.
The live on-chain producer runs in the existing four-hour ERC-4626 reserve adapter, not score preparation. Identities, queues, claims and idle cash are finalized-block-pinned and exactly reconciled. The older of block and acquisition clocks must fit the inclusive eight-hour book budget; previous accepted collateral scores independently need a current identity-matched publication within two hours (two hourly publications since v10.32). Missing, failed, stale, unsupported or unreconciled books grant no safe-book credit and do not erase valid denomination/redemption observations. A successfully measured book with unknown collateral uses cause-keyed Backing pricing. Old captures remain explicitly legacy-unobserved, with no invented books.
The separate Morpho oracle rule groups claims by deployment/core/market branch and combines accounts before testing 100 × branch assets ≥ (deployment realAssets ?? totalAssets). Exactly 1% of source-accounted NAV, including idle cash and the VaultV2 undistributed buffer, is material; smaller branches stay disclosed and fully weighted in Backing without a binding weak-oracle cap. Unknown reviewed weights remain material. An unmatched or ambiguous positive claim disables the NAV exception and retains the pre-v10.19 reviewed aggregate with a diagnostic, not an invented opaque tier or new missing-kind obligation; the exception never worsens that aggregate. Worst material tier binds across deployments. The exact reviewed vault-share NAV accounting path is preserved, along with all authored branches and five-kind completeness; unrelated top-level pricing paths and unresolved applicability still block relief. An all-idle book retains the authored tier rather than proving oracleless. Missing or rejected books and non-Morpho/CDP rules keep their existing behavior; LLTV and class quality do not alter oracle tiers.
Route-exclusive A/B gaps on unscored optional Exit alternatives stay diagnostic without a partial flag; contributing and whole-pillar, peg/methodology, wrapper-local and inherited-parent exclusions remain, including HBD. Reviewed unpriced ERC-4626 shares can use same-block NAV with fresh observed underlying prices. Unfunded canonical attempts remain diagnostic; smaller successful receipts prove only executed lower bounds and settlement, not canonical completion or exhaustion.
Complete published fee schedules can establish conservative request-specific bounds; contractual business-day completion guarantees require the full reviewed calendar horizon. Exact execution receipts and fresh output valuation determine capacity, not previews, static balances or sampled fees. Suspended channels retain measured adverse treatment and no capacity without erasing genuine whole-Exit uncertainty or independent alternatives. Pipeline A requires a captured scoped rejection and original source clock. Exact-control/deployment incidents keep local signals and independently admitted materiality; unknown shares remain unavailable, never zero or whole-asset loss.
Independently dated oracle-kind and mechanism-component reviews resolve only their own questions, not unreviewed feeds or expired sibling measurements. Hardware-wallet storage is not independent quorum, MPC or HSM credit. Native external transfer tiers do not certify rail administrators or bridge materiality. Named agreed-upon-procedures reports support historical composition only at static-validated strength, not financial assurance or current-book coverage. Wrapper-local accounting, emergency and withdrawal reviews do not establish executable capacity or settlement guarantees.
Exact-controller MPC/HSM custody needs the admitting control profile's own complete, current review; incomplete or expired reviews withhold technical credit, with no parent-review renewal or invented custody date. Custody-only questions retain admitted technical evidence and scoped U. MPC/HSM and hardware storage do not establish independent humans, a quorum, unavoidable delay or execution closure; those facts need their own proof under the authority ladder.
Wrapper-local authority, solvency and withdrawal evidence is priced in its relevant pillar, not a nine-factor sum or incomplete-fact fallback. A required parent remains necessary even when local evidence is strong. Form follows economic function: pure 3, native-staked 5, active strategy-allocation vault 10, regardless of marketing name.
The wrapper parent limit is max(0, floor(min(required parents' premium-free inheritable scores) minus form deduction)). Final score is the lesser of that limit and the independently constrained own score; do not subtract form again from an already weaker own score. Risk-transfer credits and the mild-risk D floor are retired. Wrappers never exceed required parents, and genuinely unavailable required parents remain unavailable. The USDT longevity premium returns to +12 after the artefact fixes, with maximum 87 and unchanged eligibility, but children never inherit the premium.
A child receives the pure-wrapper parent limit (premium-free parent score minus 3) only when at least 99% of admitted direct reserve rows are classified stablecoin or fund-share in that same scored parent token. Sum qualifying same-parent rows; protocol-position denomination and composite strategy claims do not qualify. Dust cannot defeat the limit; keep a lower own score and any stricter serial-parent limit. Missing or unadmitted dependencies prove no concentrated claim. The trace names the concentrated-collateral parent separately from Backing-only inheritance.
Track record follows the newest required implementation layer across a variant and its parent chain, using each layer's implementation launch date or product launch fallback. Year, month, quarter and half-year dates use the inclusive period end, capped to the fixed scoring UTC date so an unfinished period claims zero whole months. Cycle detection stops repeated traversal; age is measured in whole calendar months.
Excluded dependency events do not dilute measured loss or uncertainty; binding exit/control/oracle limits retain measured-adverse causes through subsequent hops. Measured certificate costs at the exact request budget receive zero cost credit. Global no-exit findings require current exhaustive deployment coverage reconciled to aggregate supply, with each deployment independently fresh. USDtb shortfalls, unreadable Reserve Protocol plugin status, incomplete JupUSD holding units and malformed shared Sky debt cannot establish clean independent backing. Quote-quality warnings and original reserve clocks remain admission gates.
Exit compares every admissible route alone and every independently usable pair, then takes the best feasible portfolio. The stronger member is primary; its backup adds min(10, 100 − primary score) × backup score / 100. An improving correlated alternative cannot displace a better independent pair. Capacity, output, fees, access, settlement and shared-resource checks still apply. Cards show selected routes, backup credit and stress-request completion separately; standalone route scores are not the Safety Score Exit pillar. Same-resource observations remain selectable alternatives, but overlapping inventory supplies at most its maximum admitted capacity and never independent backup credit. Stale or diagnostic observations cannot reserve a resource against a current alternative.
Exit retains R1's capacity materiality gates after replay showed tiny pools becoming primary exits. Admission uses an asset-relative denominator of 5% of usable supply clamped to $100k–$25m, separately from the $1m stress floor. A route is material at either 1% of that denominator in raw executable capacity or $100k absolute capacity; missing/stale supply uses $25m. Raising stress cannot remove measured thin depth and replace it with U50. Submaterial non-exhaustive lower bounds remain diagnostic; exhaustive submaterial measurements retain zero route credit. Valued completion below 1% of the actual stress request caps a material route at 50 before confidence. Coverage and absolute-capacity curves still price admitted capacity; low measured Exit scores are never lifted to unknown quality.
AM17: if every route is excluded as immaterial while applicable rails or their inventory retain C/U gaps, Exit uses unknown quality 50 for either cause, not a fabricated exhaustion zero. The scorer retains the same cause set that the card publishes, including relevant route-factor gaps; the C/U label is presentation-only for Exit. A current aggregate-reconciled verified-no-pools share z remains measured zero on z: no-route Exit is (1 − z) × 50. Only uncovered supply is unknown; unsupported-chain dust cannot turn a measured zero into whole-pillar U50.
Exit P1: known supply sizes a continuous 5% request clamped to $1m–$25m; the stress request is never below $1m. Measurement grids do not snap the scored denominator and may retain smaller observations. Stale or unavailable supply uses $25m, retaining fresh routes, sizing uncertainty and every original clock. Valid smaller-notional measurements remain conservative executable lower bounds, with completion equal to measured capacity divided by the current request. Certificates retain original units, generation and gates; a smaller receipt never proves full-request execution or exhaustive capacity.
Exit P2: a reviewed applicable live channel with a usable capacity curve and resolved output can score despite missing fee or settlement terms. Price only the missing subfactor by C/U and cap this bounded-terms route at 70. Without a usable curve, keep bounded uncertainty without inventing capacity. Same-rail certificate supersession follows P4; the duplicate cannot earn independence credit.
Exit P3: current admitted live-direct or on-chain atomic execution into an admitted output can establish an open route without an extra status-source string. A proven pause or closure vetoes it; static open status cannot substitute for execution.
Exit P4: access is charged once, with permissionless 100, whitelisted 75, institutional/issuer API 55, manual/discretionary 20 and unknown by C/U. Remove the whole-route eligibility multiplier. Documented-terms medium model confidence is 0.85; admitted exact on-chain same-notional execution certificates scale from 0.85 toward 1.00 with the share of the current stress ask their scored point measured, with observation confidence following the same share from a 0.85 floor and never lifted from a low/unknown label. Only a current exact-complete certificate whose scored point measured at least min(current stress ask, modeled capacity) supersedes a same-rail model; otherwise both compete. Other on-chain/model medium confidence remains 0.75. Certificate admission and measurement rules, actual fees, delays, output retention, low confidence and coverage are unchanged. Exit P5 retains the calibrated materiality gates and insufficient-completion cap of 50; unused production policy rows remain removed, limited queue/unknown-capacity confidence stays 0.75, and no research-only execution model is activated.
We classify missing evidence: A, pipeline unavailable; B, current public data not curated; C, researched issuer non-disclosure; U, unresolved; D, measured adverse. Proven A/B exclusions use excluded-a-b; a pillar with no usable evidence or established applicable subject is unavailable without invented A/B proof. Both retain null diagnostic scores; partialEvidence lists every unavailable pillar, with cause/gap lists allowed to be empty. Two usable pillars permit a rating with the missing pillar priced at its cause-keyed unknown quality and original weights; the aggregation trace identifies that uncertainty separately from evidence. Fewer than two usable pillars are a technical Pipeline gap, not an invented score. LEVER-1, its hazard exception, cause-selected whole-card NR and D/F evidence guards are retired. NR requires genuine rating unavailability, such as an unavailable required parent, never an open question or low score on an otherwise evidenced asset. Quarantine and accepted-publication holds remain fail-closed. Since v10.35, expired measured DEX history on a contributing route makes that asset a Pipeline gap rather than holding every rating, until the same route has fresh evidence; a whole-source DEX failure still holds the publication.
Partial evidence is granular: proved A/B component, constraint or inherited-parent exclusions can remain inside a usable included pillar, with their exact component keys and cause references. They do not automatically make the whole pillar unavailable. Subject-backed C/U factors remain usable bounded evidence; only genuinely evidence-free pillars are unavailable.
Live reserve percentages are scoring weights, not identities. A namespace-qualified stable source key joins an adapter-owned reserve category to reviewed classification and dependency metadata across rebalancing or label changes. Explicit keys must match uniquely and otherwise fail closed; historical unkeyed captures retain a unique normalized-name compatibility join.
Classification research lasts 365 days; composition has its own clock. Named-firm attestations, audits and examinations can be admitted for 120 days inclusive from the report's as-of date, at their actual assurance strength. A named attestation is not promoted to an audit. Scope, chronology, source and fingerprint checks remain strict; unnamed generic curated composition keeps the 31-day window plus 7-day grace. Neither a later review nor publication refreshes old holdings.
Keep independently identified reserve holdings even when an unclassified tail exceeds 0.1%, with disjoint cause-bearing remainder and a defensible whole-book denominator. Genuine unknown subfactors, including class, concentration, liquidity and maturity, use Backing C35/U50; measured weak factors remain measured. A/B factors carry no scoring weight. Only scoring weights may renormalize, never exposure/dependency shares. Eligible parent inheritance preserves known local constraints; missing obligor affects concentration only, not row class, and a split exact-parent balance is aggregated before the existing inheritance threshold.
Published-residual materiality applies only to explicitly reviewed issuer-named categories measured in a complete same-close reserve book. Aggregate all eligible categories: at most 1% qualifies, with no upward tolerance or category splitting. Exact source-key/category/amount and full-composition live joins remain required. Residuals stay fully weighted, unclassified and priced by C/U with original references and clocks; unidentified coverage, unvalued amounts and incomplete books remain gaps. This grants no reserve, assurance or liquidity credit; LEVER-1 is no longer an availability gate.
A raw-null reserve liquidity or maturity factor is known only when the selected current bound fully determines that exact exposure, retaining all supporting references. Raw horizons/maxima stay null; partial bounds are never summed and stronger partial evidence cannot borrow weaker full coverage. Stale, future, rejected, unmatched and nonbinding evidence retains its gap.
Curated collateral links share reserve-envelope admission. Without live slices, stale or inadmissible curated composition publishes no basket edges; the existing reserve-envelope gap carries the bounded consequence, not an unrelated dependency reason. Valid curated, live-derived and manual dependency reviews retain their own admission.
Variant parents, explicit wrapped claims and manual non-collateral relationships survive independently of composition. Unmapped live reserves cannot revive older curated/manual collateral weights. Per-slice reasons distinguish unmatched identity, expired classification and reviewed non-links. Curated fallback applies only without live composition; partial live mappings keep live weights.
Responsibility follows validated evidence about the exact missing question, not the nearest processing stage or a compiler's default label. A pipeline verdict binds the captured source and generation. Public-but-uncurated and researched-undisclosed classifications retain dated primary sources; otherwise the question is Unresolved. Inherited gaps preserve their originating causes and evidence identities. Every attributed root receives a causal-root-qualified score path, so adding another root cannot rename an existing public fact; ownership never becomes part of fact identity. A reviewed unpriced output is not automatically a pipeline failure: the missing valuation needs its own cause proof, and never becomes assumed par proceeds. Date-only typed classification dispositions enter replay only after their reviewed UTC day; this is not a blanket admission rule for oracle or incident research. Partial control reviews retain reviewed controls without fabricated deployment shares. Unsupported coverage needs captured reader-boundary proof for A exclusion; otherwise the unresolved question remains U. Populated DEX exit surfaces retain their budgeted gap accounting and strict exact-route completeness. Missing current price is separate from measured adverse peg history and never becomes zero deviation.
A current established circulating amount can size the Exit stress request even when chain or bridge partition is unresolved. This grants no bridge shares, transfer scope, control safety or capacity. With stale or unavailable supply, use the maximum $25m stress request, without renewing supply or route clocks. Route valuation, cost, access, settlement and exact-request admission remain.
XAUT lock/mint attribution reconciles Tether's daily disclosure to finalized Ethereum circulating liability: total supply minus treasury equals disclosed authorized minus not-issued. A treasury-only mint/burn changes both terms equally, not circulation. Circulating mismatch, treasury above total supply, nonzero quarantined supply and failed identity/freshness/finality checks remain rejected.
An unsplit chain row competing among reviewed profile routes is an upper bound on every candidate deployment. Only a row below both deployment-material and common-mode thresholds with all candidate routes reviewed can establish bounded supply evidence. Material ambiguity or any unreviewed candidate fails closed; shares are never summed across rows and unavailable within-chain shares never become zero.
Aggregate-only intake without per-chain rows can publish known circulating USD for Exit sizing, diagnosed supply-review.unpartitioned-aggregate. Bridge-materiality availability remains owned by Control (runtime-bridge-materiality-unavailable). Failed joins over real rows, missing profiles, stale inputs and missing/rejected attribution packets still fail closed.
A dependent's exposure to an upstream with an open reserve gap counts once per upstream cause: slice-level reasons fold into one reason per projected code, source code and owner on each dependent exposure, with slice paths retained in the causal key.
Open evidence publishes three disjoint numbers, each counted once per question at that question's root asset, not once per card or per inherited view. A question is the root asset plus the scope kind and scope identity of the unresolved ask: the same obligation inherited by several cards is one question, while distinct local components, routes and reserve exposures remain separate. Every question lands in exactly one bucket under documentation > issuer > open precedence: documentation when every obligation behind it is documentation-classed, a policy determination that resolving it cannot materially move a published score; issuer when at least one obligation carries a current researched issuer non-disclosure, including mixed C/U questions; otherwise open. The three buckets sum to the published question total. The obligation total counts every carried evidence obligation behind those questions, per card and responsibility owner, not scoring witnesses: repeated exact sourceGapId values count once, a source-less singleton view aliases only an exact root already present as a source for that owner, unmatched inherited roots, synthetic and multi-root views remain separate, and documentation datums are disclosed as a split of that total. Measured-adverse facts record a finding, not missing data, so they open no question and stay out of the obligation total. Critical counts keep any critical witness, reason lists every code, and published witnesses, caps and NR explanations stay visible.
Open questions can be documentation gaps. A policy-owned documentation class marks an open C/U question whose resolution cannot materially move a published score: custody outside the scoring path; mint reconciliation or supervision the Control pillar already withholds credit for; diagnostic-only data; a DEX coverage label on an inventory that does have routes; a deployment whose reviewed share is strictly below 1% and already non-binding; and reserve exposure strictly below 0.01% of book with the per-root merged residual below 0.1%. Classification is derived at read time from unchanged evidence: pricing, causes, responsibility, caps, binding, evidence level and witness lists stay byte-identical, so a documentation question describes what we asked, never a cheaper score. Only a limited pillar whose every limiting witness is a documentation gap is labeled "limited · documentation gaps only"; an empty, unresolved or partly non-documentation witness list leaves the pillar plain limited. Custody questions whose review lapses are retained as stale documentation at their original review date, never re-dated or deleted, and the missing-data registry's documentation and issuer bands read the same classifier, so the queue and the page cannot disagree.
Reviewed-native selected supply rows do not enter bridge-exposure completeness joins: native controls remain umbrella facts, while native route identities are excluded from bridge claim controls. Physical GOLD/SILVER delivery is unresolved-asset output, not fiat and never a synthetic $1 physical-bar valuation.
Expired evidence stays dated history. Expiry is not proof the issuer is silent, nor that newer required data is public. Current cause proof decides whether the gap is pipeline, uncurated public data, researched non-disclosure or unresolved. Known active adverse facts are not cleared by an expired positive review, and favorable parent inheritance still needs current whole-allocation proof.
Shared-control pricing uses each receiving asset's own member facts. Admitted adverse reach/domain evidence remains charged; unknown member quality alone cannot manufacture D or a shared-failure signal. Missing/stale/unresolved members carry scoped causes, and no gap establishes high confidence or clears a known adverse path.
Primary-exit posture describes every route credited by Exit, including issuer, protocol and eventual redemption. A reviewed complete surface with zero routes reports none; an unobserved surface or credited routes with no access fact reports undisclosed (explicitly not-disclosed); unresolved access reports unknown. Missing reserve-reconciliation cadence remains unknown rather than inferred periodic; a reviewed reconciliation can resolve it.
Governance access posture treats reviewed global mint-domain contracts as immutable when they have no privileged capabilities, no applicable cap, no claim-impairment path, and access-only scope. A contract address alone is protocol machinery, not evidence of a concentrated administrator; deployment-scoped bridge controls remain separate.
Oracle applicability is separate from quality. A reviewed path without price-sensitive oracle or internal valuation authority contributes no scored component; the neutral empty set has raw quality 95 without manufacturing a display row, but the overall Control pillar is clamped at 90. Genuinely oracleless components retain raw95 and privileged internal pricing45. Absent borrower liquidation branches do not make top-level mint, redemption, NAV or exchange-rate authority non-applicable, even in older reviews. Verified adverse evidence remains adverse, unresolved applicability remains bounded and genuinely price-insensitive mechanisms remain neutral.
The peg spread penalty uses only non-positive signed peak deviations: above-peg events are excluded from the population rather than zero-filled, so premiums neither create nor dilute downside spread. The below-peg standard-deviation formula, low-confidence weights and 15-point cap are unchanged; time-at-peg, severity, active-depeg and diagnostics retain their existing treatment.
Control scope follows reachable liabilities. Deployment-local controls require a complete reconciled supply partition for proportional pricing; no gap creates shares or proves native issuance. Proven A/B is excluded, C/U stays component-bounded and known adverse/root-reaching constraints still bind. Common-control census counts independent root liabilities, not wrapper copies. A shared-chain maturity charge requires a date-admitted authored failing gate. Pending, missing, expired-passing, unreviewed or dead/non-supporting citation packets remain U diagnostics without a synthetic scored gap or maturity charge. Authored failures retain proportional pricing and measured exposure. No new below-5% deployment floor is applied.
Reviewed incidents are routed into the control, wrapper-local, operational, or peg component that owns the risk, with root-claim, exact-control, deployment, integration-only, or holder-exit scope. Confirmed exact-control incidents retain active, mitigated or resolved posture without inventing historical exposure shares or propagating to sibling controls or unrelated root mint history.
Operational-resilience credits and their gate, role-based pillar limits, the separate unresolved-deployment-share Control adjustment, and unused nine-factor wrapper completeness facts are removed. Shared-reserve and protocol-position use one scoring implementation. These removals do not assert new evidence, clear scoped gaps or replace the retained liability-weighted deployment-loss rules.
Independent researched-negative reviews resolve only matching unknown exact-control or deployment/control-kind incident states. Research covers issuer notices, independent incident trackers, rail disclosures and exact-deployment explorer events plus exposed pinned emergency state. It establishes no known incident, not lifetime absence. Sources, bounded findings, reviewer identity and a current first-activity-to-review window remain required; date-only incident reviews admit only after their UTC day ends (at the next UTC midnight). Known exact-control integrity incidents, active pauses and unresolved adverse primary findings bar negative review. Resolved precautionary pauses without integrity failure and primary-confirmed unaffected channels may be cited. Actual scoped incidents take precedence; empty registries or audits alone prove no absence, and unrelated authority/custody gaps stay open.
The exact-deployment explorer-event surface may use displayed pages, the same explorer's JSON API, or pinned exact-contract logs over the most recent at least 50,000 blocks (or the provider's stated maximum), with the creation receipt and verified-ABI emergency/upgrade/role filters. A pinned emergency-state read remains required where exposed; blocked UI alone need not prevent a bounded review.
Publication remains fail-closed: global or invalid-identity state holds the last accepted publication. Attributable asset-local producer failures are technical pipeline gaps, never fabricated issuer NR or measured danger. Current consumers use the accepted publication and status, not a fallback scorer. V8.17 remains documented as historical methodology.
Exact orderbook execution is research-only with diagnostic maximum certification. Public books do not prove same-run account access, deposits, withdrawals, fees or maximum settlement; the dormant Kraken request observer is retired. Reviewed Securitize/ERC-4626 admission and ordinary spot prices remain separate. Synthetic CoinGecko books are excluded from liquidity while price-only ticker evidence remains pricing evidence; neither establishes improved Safety Score stability.
Reserve quantities retain native CAD/QCAD and GBP/tGBP units and original clocks, never relabelled USD; an ETH supply check does not refresh a whole reserve. Ratios need their own reviewed reserve/circulation allowance. BC3M's inclusive 86,400-second allowance derives from its Chainlink heartbeat and Backed daily/10% disclosure, applies to every pinned circulation block and requires complete same-run inventory-adjusted on-chain/API reconciliation. Beyond it the ratio is withheld. BIB01 remains quarantined; no TUSD bound is borrowed and no simultaneous attestation or scoring activation is implied. Reserve snapshots cannot invent redemption terms/capacity; actual River and Origin routes remain. Static/weak corrections do not activate independent evidence. MYRC retains its independent-assurance adapter and original report clocks without further promotion.
Reviewed issuer payouts honor explicit stablecoin outputs before the legacy fiat projection: USDC for pathUSD, USYC Teller, pUSD and USDO; USDC/USDT for thBILL, MXNB conversion and StandX DUSD, alongside HLUSD's basket. Unreviewed issuers retain the legacy default without inferring variant parents; USDN has no confirmed USDC payout. Tracked payouts need captured prices, never assumed $1 proceeds. At par a single payout has output quality 100; a stable basket retains quality 80 and the weakest-priced component (a 3-point raw route difference). Missing prices stay unresolved. thUSD's executed stablecoin-redeem rail uses measured Cash Wallet capacity without fallback.
Retained exact Uniswap V4 PoolIds bypass the subgraph TVL floor and indexed-TVL 2% affinity guard; token/fee fallback still needs positive indexed TVL and that guard. Exact currency/PoolKey identity, zero hooks, active liquidity and independent price/quote/capacity gates remain. Identity and aggregate TVL do not establish executable depth; admitted small measured capacity is priced continuously.
Settlement needs a dated source for the completed endpoint, not a target, average or cooldown. Current execution evidence governs status, with a proven closure taking precedence. Missing terms remain scoped gaps: a usable capacity curve and resolved output may score at bounded-terms quality, but no fee floor proves an all-in ceiling and no review creates capacity. Redemption-fee evidence does not close independent DEX coverage.
Canonical arrays and equal-score route ties use locale-independent JavaScript code-unit order for primary/backup routes, dependency paths, ordered traces and digest inputs.
Live-reserve/redemption evidence retains original freshness mode, invalid-source diagnosis and matching configuration identity. Failed or future fetches cannot become fresh; controller observations do not upgrade composition. Typed route identity separates the observed rail from its producer key, and shared resources such as Reservoir PSM cash cannot be counted repeatedly.
Admission clocks depend on the review family. Date-only oracle-profile (oracleRisk) reviews admit from 00:00Z on their review date; date-only incident reviews admit only after their UTC day ends, at the next UTC midnight. Mechanism overlays, chain-maturity reviews, reserve-bound facts, typed classification evidence and MPC attestations admit after the reviewed UTC day, at the next UTC midnight. Mechanism reviews with exact UTC timestamps enter at that instant; both date-only and timestamped mechanism reviews expire 365 days from their original start, not admission, and component reviews never renew siblings.
Live reserve links must match reviewed upstream identity and relationship kind; conflicts withhold only that link. Keyed zero balances remain evidence but create no edge. Intermediaries identify bridges, wrapper tokens or vault shares, not additional holdings. Serial mechanism claims inherit every required parent's final score, so Spark's native-asset and USDS parents both bind. Nested holdings retain corrected claim identities and positive measured dust without display rounding. Pooled holdings need attributable backing and tranche loss allocation to create token-specific dependencies. Common-mode diagnostics reference existing priced effects, not another penalty.
Authored linked reserves require explicit relationship kinds; legacy live rows inherit only a unique reviewed kind for the same identity. Unresolved or conflicting kinds withhold that row's link, never default to collateral or refresh history. Mento separates native and bridged holdings with canonical parents; USDat's PYUSDx and Frankencoin's ysyBOLD are intermediary annotations, not extra holdings. Representation identity is not bridge solvency assurance. Avant's gross-positive-long holdings, debt and NAV remain distinct; tracked links wait for exact token/receipt/bridge identity, and gross shares are not net-NAV loss coefficients. Weak probes, unverified freshness and failed reconciliation retain admission gates.
External message-validation quorums remain researched authority facts, not issuer-owned unknowns; an admitted co-controlling single key remains a weakest path. Strategy-vault evidence does not grant parent first-loss or risk-transfer credit. Subthreshold unmatched chain-label pools can satisfy existing bridge-materiality proof without public responsibility facts; material unmatched supply still fails closed.
Gapless missing-same-notional-route is integration-missing, not producer-failed; only an authored causal gap with sourceGapId establishes producer failure. A populated DEX surface is complete for gap accounting once its budgeted score-eligible routes are observed; leftover target-construction and reviewed model limits are not feed failures. Exact-route completeness remains strict.
An exhaustive-liability attestation may attribute transfer scope to one exact active contract with positive admitted aggregate supply and no bridge or wrapper representations. Singleton assets and savings-passthrough, risk-absorption and strategy-vault shares qualify; pure wrappers, bond-maturity and unspecified variants do not. Scope is attributed, not observed, with no invented chain amounts. Attestations expire within 365 days and each capture rechecks structure: a second contract or representation invalidates them immediately. Freeze and economic-control scope remain independent.
Physical delivery alone is diagnostic. Reviewed gold/silver redemption can compose with a modeled in-vault USD sale for verified customers. Minimums, bar increments, output valuation and the same-request cost/settlement gates remain. Missing fee or timing subfactors use C/U bounded-terms treatment only with a usable curve and resolved output; missing capacity, expired reviews or stale metal references grant no invented executable capacity. Sale costs count once, without an extra metal-price-movement charge.
Expired mechanism research degrades without quarantining the asset. Supply observers require complete provider proof; non-exhaustive DEX emptiness cannot certify absence, and completed census outcomes survive a discovery-tail timeout. Fresh admitted census and deployment-supply evidence are required to close gaps.
Reviewed bridge-representation identities may support exhaustive wrapper reviews without changing native Mint Authority ownership or granting immutable credit to proxies. Local-fiat fees and outputs use admitted captured FX, not fetched or assumed rates; incomplete schedules stay gaps. Date-only route reviews wait until the next UTC midnight. Oracle uncertainty binds its actual tier witness; transfer census admission and source-clock rotation stay bounded to the whole asset, with deferred deployments unknown.
Fresh accepted publication, fixed-clock mover attribution and the first relevant producer observations are separate requirements. Counterfactual calibration, neutral old-input replay, fixture corrections and release activation dates do not establish live gap closure or production health.
Safety Score v10.40 prices an admitted execution certificate by the share of the current stress ask its scored point measured, not by the label stamped at capture: confidence scales from 0.85 at no coverage to 1.00 at full coverage, so a complete measurement cannot score below the same-rail model it confirms while a shrunken ask or a clamped receipt keeps the certificate discount for the fraction it did not measure. Observation confidence follows the same share, and a low or unknown label is never lifted. Same-rail supersession requires a current exact-complete scored point measuring at least min(current stress ask, modeled capacity); otherwise both routes compete. Lower-bound or stale certificates never supersede. Weights, thresholds, admission and every non-certificate confidence mapping are unchanged.
Safety Score v10.38 changes evidence admission, not weights, thresholds or pillar arithmetic. An ERC-4626 instant request above a vault's issued shares publishes only an exact lower bound of the stress ask, and its certificate can never claim exact completeness; only an exact-complete same-rail certificate supersedes a modelled route, a lower-bound certificate competes on route score instead, and a shared physical rail stays valued once; capture withholds a reference-price leg older than the 10,800-second margin left by the 7,200-second evaluation lag inside the unchanged 18,000-second window. Chain-supply evidence ages against a per-source ceiling: 5,400 seconds for the provider and deployment-census sources, otherwise the default 1,800-second window plus 3,600 seconds of carry, which a source's own declared window may only tighten. A deployment supply census may bound a deployment's share from above with a pinned, generation-bound read: below 1% it is admitted as a reconciled upper bound that both the documentation class and the Control scorer read, so the deployment can become non-binding and census admission can move Control scores once its producer serves packets; at or above 1% it requires a reviewed escrow rule and grants no share, and pins and prices stay within 1,800 seconds while the packet is served and admitted within the same 5,400-second census ceiling. Negative incident reviews are keyed by their authored identity; provider and issuer-surface rows close nothing, and certificate-based lane closure is not active. The Exit producer changes (ERC-4626 clamp, capture price margin) ship in this release's worker, so from the first redemption-backstop cycle they can still change Exit capacity and route selection; a fixed-clock replay cannot measure this, the first cycle attributes it, and the v10.38 Exit grade flips against main are 0 pending that re-measure. Census, screening, reserve, supply and peg producers ship separately, so their admissions stay inert until those producers serve evidence.
Safety Score v10.39 closes no lane yet, even after v2 certificates arrive. FRNT Arbitrum, Base and Optimism are global-scope native facts; the certificate router closes deployment-scope lanes only. FRNT Ethereum is already closed by an existing review, not a certificate. yUSD Ethereum lacks provider keys and an issuer-surface review. Of 40 issuer-operated lanes, 33 are global-scope. Router scope is unchanged; the five-lane screening catalog does not grant closure.
The v10.39 deployment-scope join requires a current provider review per authored provider key (or the issuer-surface review on an issuer-operated rail), a current issuer-surface review naming the route, and the newest admitted v2 certificate for the descriptor's screening set. Contributor parity, emitter runtime pins and event families, frozen policy, contiguous coverage and the 30-day window-end budget must match. Authored reviews name no certificate; a changed contributor, emitter or pin starts a new chain. Every current disclosure of the provider key is checked from the earliest witness start through evaluation, even outside the disclosing review's covered lanes or review windows. Verifier-compromise exposure requires valid exposure-time config or later-deployment proof; no observed exploit is not an exemption. Third-party rails cannot use the issuer-operated branch. Replay retains exact descriptors/certificates; missing, v1, retired, stale, gapped or differently-screened witnesses grant no closure. Evidence binds only to lanes actually closed. The no-known-incident conclusion covers control-domain incidents, not operational, peg or wrapper history.
Canonical release evidence and replay history
Release chronology, calibration examples and replay results belong to the structured scoring history.
- Safety Score release history
- Morpho calibration and activation
- W1/W2 research and replay
- Track-record replay
- Issuer payout and V4 replay
- Evidence-count replay
- Native-join and commodity-output replay
- XAUT circulating-liability reconciliation
- Immaterial chain-row ambiguity
- Exit posture and reconciliation correction
Current V10 technical contract
The checked policy normally uses Backing 40%, Exit 35%, and Economic Control 25%. Retain all three original weights. With at least two usable pillars, an unavailable third is priced at its cause-keyed unknown quality, not omitted or renormalized. The weakest of all three priced pillars sets bounded headroom above that minimum; missing-pillar pricing is uncertainty, not usable evidence. Fewer than two usable pillars means Pipeline gap without an aggregate or grade. Peg behavior applies with exponent 0.4. Five whole-score limit families remain: active depeg, known age under 24 months, required parents/wrappers, realized holder loss and speculative-credit residual. The broad structural-cap matrix and duplicate evidence ceilings are retired.
Policy owns score-bearing values and evidence-expiry budgets; the semantic digest rotates when they change. Cause-keyed unknown pricing applies only to genuinely missing subfactors, never as a floor on measured adverse values. LEVER-1, its hazard exception and grade-based D/F NR guards are retired. A low score, open question or active incident does not withhold an otherwise evidenced rating. Publication quarantine and accepted-state holds remain separate from rating availability.
Verified worse facts score lower than unresolved ones: proving an opaque controller is a single key lowers its authority base from 60 to 50. Unknown is priced as uncertainty, not as safety. Research can lower a score. The overall Economic Control pillar is clamped at 90, including non-authority paths; supervision is not required above 80.
Provisional labels identify rated cards with more than 50% of original scoring weight priced at unknown constants. They disclose uncertainty without changing the score, grade or availability. Older archives without the fields remain unlabelled. Exit sizes a continuous 5% of usable supply within $1m–$25m; smaller execution receipts remain lower bounds, not proof of full-request completion.
candidate = weakestPriced + 20 × tanh((weightedQuality − weakestPriced) / 20)
Pillar weights
40/35/25 across all three priced pillars; no missing-pillar renormalization
Peg adjustment
(pegScore / 100)^0.4
Active-depeg caps
≥50% → 10 · ≥25% → 25 · ≥10% → 49
Track-record ceilings
<24m → 84
Rounding
nearest own score; floor each ceiling once, then integer minimum
Equal-cap priority
active-depeg → realized-holder-loss → parent → speculative-credit → track-record
Grade thresholds
A+ 87+, A 83+, A- 80+, B+ 75+, B 70+, B- 65+, C+ 60+, C 55+, C- 50+, D 40+, F 0+
Rating availability
At least two usable pillars; no cause, low-score or D/F NR gate
Publication
Global failures hold; proven local technical gaps preserve pipeline-gap status
Unknown Backing / Exit / Control (C)
35 / 50 / 50
Unknown Backing / Exit / Control (U or unclassified)
50 / 50 / 60
Exit unknown cause labels
Presentation-only C/U labels; both price uncertainty at 50, never overwrite measured Exit
Wrapper form deductions
Pure 3 · native-staked 5 · strategy-vault 10; applied to the premium-free parent limit
Realized holder loss
≥25% → 39; ≥1% → 49; hold 365 days, then linear recovery to 100 over 365 days
Speculative-credit residual
High admitted reserve/global-claim measured-adverse credit signal → 59; admitted legacy unscoped proof retained; no deployment/access-only cap
Policy provenance
Policy v10.40; authority maximum 90; material-bridge share 25%
Historical V8.17 methodology: dimensions, formulas, thresholds, and caveats
Exit Liquidity
30%
Resilience
20%
Decentralization
15%
Dep. RiskDependency Risk
25%
Weighted Average
base score
× Peg Multiplier
(pegScore / 100)0.40
× No-Liquidity Penalty
0.9× if no DEX or redemption signal
Final grade
A+ through F
Base Dimensions (weighted average)
| Dimension | Weight | Source | Description |
|---|---|---|---|
| Exit Liquidity | 30% | DEX liquidity + redemption backstop | Best-path model: exit quality = best available path (DEX or redemption) + diversification bonus for having both |
| Resilience | 20% | Collateral, custody | 2-factor solvency measure; blacklist capability reported descriptively only |
| Decentralization | 15% | Governance type, chain risk, branch-aware CDP oracle setup, bridge route, mint authority | Governance structure with chain-risk, oracle, bridge-route, and privileged-mint penalties |
| Dependency Risk | 25% | Upstream grades, collateral weights | Inherited risk from upstream stablecoins, weighted by exposure |
Redemption backstop and effective exit
The standalone Liquidity Score remains a pure DEX market-depth metric. Safety Scores use an effective exit score for the Liquidity dimension, built on a best-path model: exit quality equals the best available exit path after redemption is adjusted for current executable capacity and route confidence.
Before that blend, the DEX input is bounded by its retained evidence: reserve-based AMM simulation caps at 85, generic TVL proxy evidence at 60, synthetic or fallback evidence at 55, and provider-inaccessible-only deployment coverage at 45. Older snapshots without these evidence fields and rows explicitly marked legacy remain neutral. The public standalone Liquidity Score is not rewritten by this Safety Score policy.
modeledExitUsd = min(max(supplyUsd × 0.05, 100000), 25000000)
adjustedRedemption = redemption × capacityFactor × confidenceFactor
effectiveExit = round(min(100, max(dex, adjustedRedemption) + independentBonus))
capacityFactor is capped at 1.0 from current executable capacity divided by the modeled exit size. Confidence factors are 1.0 for high-confidence routes, 0.75 for medium-confidence routes, and 0.35 for low-confidence routes. The 10% secondary-path bonus is only applied when the redemption rail is independent from the DEX liquidity path, such as an issuer primary-market rail.
Live reserve metadata counts as executable capacity only when it isolates assets immediately available to the holder route. Mixed reserve or accounting buckets remain backing context and cannot override a reviewed fallback; for example, USDe retains its 0.5% hot-buffer fallback because Ethena's aggregate Liquid Cash category does not isolate route-executable assets.
Queue-style live telemetry may count only when the adapter proves both a current route buffer and the queued liability from the same evidence set. For DUSD, the Makina path scores only idle Ethereum USDC left after subtracting the USDC value of DUSD already locked in the AsyncRedeemer; its whitelist is represented as issuer-discretionary access rather than a route-status impairment.
If only DEX liquidity exists, it is used directly. Eligible immediate, live, or queue-style redemption can stand alone when DEX liquidity is absent, with route family caps and component scoring as guardrails. Documented offchain issuer routes with eventual-only capacity do not replace missing DEX liquidity; they can only add the independent primary-market bonus when DEX liquidity already exists.
Redemption backstops are scored across access, settlement, execution certainty, capacity, output-asset quality, and cost. Low-confidence redemption routes stay visible on the site but do not uplift the Safety Score liquidity dimension. Documented offchain issuer exits with eventual-only capacity can add a primary-market bonus only when DEX liquidity already exists; they do not replace missing DEX liquidity. Severe active depegs also disable static or non-live-direct redemption uplift unless current live-open redemption evidence exists. Last-known DEX inputs still feed effective-exit scoring when the liquidity cron is stale, with staleness surfaced through liquidityStale / inputFreshness.dexLiquidity.stale. Materially stale or missing redemption snapshots are suppressed from Safety Score liquidity; normal 4-hourly redemption-sync lag remains inside the scoring freshness runway. Unknown route status remains low confidence for proxy-only or weaker evidence, but reviewed documented-bound routes can retain medium confidence when the rest of the evidence gates pass. Same-run live adapter telemetry can also carry token-specific route status and capacity for Liquity-style systems, wrappers, PSMs, Yearn V3 strategy-queue exits, and instant-redemption vaults. Redemption metadata emitted by a live reserve adapter ages out with the reserve snapshot; if it is stale or degraded, the route stays visible but does not score as current capacity. A disclosure the redemption run admitted as fresh is carried forward until that run's own budget (the next scheduled refresh plus one retry) expires, keeping its original observation time, so a source budget lapsing between runs does not drop the route.
Current route coverage includes reviewed issuer rails, on-chain collateral redemptions, protocol NAV wrappers, and queued vault exits; newly reviewed wrappers and Nest-style vaults follow the same route-family caps and confidence gates as older configured routes.
A DEX route whose measured observation ages past its freshness window is derated rather than discarded: it keeps its place in the exit capacity denominator at reduced credit, because an expired producer window is weaker evidence rather than absent evidence. A route with no retained observation at all still fails closed, as does a stale non-atomic redemption route. Dropping expired routes outright previously let an ordinary producer-schedule delay move a score with no market event behind it, and propagated that move to every asset backed by the affected one.
Peg stability multiplier
After computing the base score, peg stability is applied as a power-curve multiplier: final = base × (pegScore / 100)0.40. Coins with strong pegs (90+) are barely affected (~4% penalty), while coins with broken pegs are sharply penalized (e.g. pegScore 10 → 60% penalty). Pure NAV fund-share tokens with no configured peg reference keep pegScore = NR and receive multiplier 1.0, while configured NAV wrappers can inherit peg risk from a referenced base stablecoin. The peg dimension passes through the computed peg score directly; severe active depegs are hard-capped after the multiplier using the open event's peak deviation: ≥ 2500 bps (25%+) caps the overall score at F, ≥ 1000 bps (10%+) caps at D.
Grade stability
A published letter grade changes only after two consecutive publications compute the same new band. Until then the card keeps its previous grade beside the raw score and discloses the computed band (gradeHold). Scores are never held or smoothed, and moves into or out of NR or a pipeline gap publish immediately. When a run's deployment-supply attribution misses an asset, the last admitted attribution is reused for one further 30-minute cycle, keeping its original observation time; after that the existing unavailable-supply treatment applies. Likewise, when the stablecoin supply sync has not re-observed an asset, its last observed circulating supply stays usable for one further hour beyond the 30-minute supply budget, keeping its original observation time; a fresh observation always replaces it.
No-Liquidity-Data Penalty
A further 0.9× multiplier is applied when a coin has no exit-liquidity signal at all — neither DEX liquidity nor redemption-backstop coverage. Weights are redistributed across available dimensions; this 0.9× multiplier is then applied to the final score to correct for the missing liquidity data by applying a flat 10% penalty.
Resilience scoring
Average of two equally-weighted sub-factors (50% each): Collateral Quality and Custody Model. Chain infrastructure is scored exclusively in the Decentralization dimension. Blacklist capability is reported descriptively but does not affect the Resilience score.
| Sub-factor | What it measures | Scoring |
|---|---|---|
| Collateral Quality | Reserve composition risk | Weighted avg of curated reserve slices: Very Low (100), Low (75), Medium (50), High (25), Very High (5). Falls back to enum scoring for coins without curated reserves. |
| Custody Model | Who controls the economic backing? | Fully on‑chain (100), Top‑tier custodian (80), Regulated custodian (55), Unregulated custodian (30), Sanctioned custodian (5), CEX / off‑exchange custody (0) |
Tokenized RWA collateral is scored by the ultimate reserve or legal custody layer, not only by the smart-contract location of a wrapper token.
Collateral quality is derived from reserve compositions when available. The default source is curated metadata. A live reserve snapshot replaces it only when the current report-card snapshot can prove the feed is fresh, authoritative, independent, and clean. In coverage tables this is the difference between a reserve view being configured and a score-grade live reserve actually being used. For report-card scoring, the live snapshot must carry scoring-eligible freshness evidence: either a verified timestamp path or an explicit on-chain latest-state not-applicable freshness mode. Direct one-bucket on-chain reserve proofs such as Liquity v1 can qualify when the adapter is classified as independent, but weak probe families do not qualify just because they are on-chain. Detail-only static-validated and weak-live-probe feeds remain visible on reserve surfaces, but they never override curated collateral scoring. A score-grade adapter can identify a source-owned reserve category with a stable source key. Reviewed metadata joins only to a unique matching key and fails closed on key mismatches or duplicates; historical unkeyed rows use a unique normalized-name compatibility match. The live percentage remains the scoring weight and is never used to decide whether the category is the same reserve slice. Each reserve slice is classified into one of five risk tiers and the score is their weighted average. Direct ETH and canonical WETH slices share the same Very Low tier, while ETH liquid staking tokens remain Low. Delta-neutral wording is evaluated by structure: transparent spot or wrapped exposure can stay Medium, but externally managed market-neutral, basis, perp, LP, private-deal, or custody-dependent strategy books are High unless stronger granular evidence shows the slice is only a liquid stablecoin or cash-equivalent buffer. For coins without usable reserve compositions, a coarser enum-based fallback is used. Explicit overrides exist for coins where defaults are incorrect (e.g., protocols on Solana, coins with CEX custody).
V8.17 Decentralization Scoring (retired)
This historical V8.17 dimension started from the governance quality tier, then applied a chain-risk penalty for protocols on less decentralized chains — governance decentralization is undermined when the underlying chain has centralisation concerns — followed by a branch-aware CDP-only oracle setup blend (v8.11), reviewed bridge-route blend (v8.12), and the penalty-only Mint Authority blend (v8.0). It is not used by Safety Score V10; the retained metadata is displayed only as the descriptive Control posture classification:
- Immutable code — 100 (no admin keys, no upgrade path — e.g. LUSD, BOLD). Exempt from chain-risk penalty
- DAO governance — 85 (e.g. DAI)
- Multisig — 55 (e.g. GHO, FRAX)
- Regulated entity — 40 (named regulator, license, and independent audit — e.g. USDC, USDT)
- Single entity — 20 (unregulated or unverified issuer)
- Wrapper — inherits tracked parent Decentralization with a wrapper-kind haircut; unresolved wrappers fall back to 10
Resolvable wrappers use the wrapped asset's chain-adjusted, pre-blend Decentralization score: savings wrappers subtract 3, strategy-vault and risk-absorption wrappers subtract 5, and bond-maturity wrappers subtract 8. For example, yBOLD and sBOLD inherit from BOLD, while sfrxUSD inherits from frxUSD.
CDP oracle setup blend (v8.11):
Crypto-backed CDP stablecoins can carry reviewed oracleRisk metadata. When present, the score applies min(score, round(score × 0.75 + oracle × 0.25)) after governance and chain infrastructure. Robust setups never lift a score; weak, single-source, laggy, or opaque feeds can drag it down. Missing oracle reviews and non-CDP assets are unchanged. The current tier scores are oracleless/internal 100, redundant failover 95, medianized delay 85, standard external 75, single-source/laggy 45, and opaque/unknown 20.
Since v8.11, reviews can include provenance plus branch rows for collateral markets or chains. If branch rows are present, the weakest branch/profile tier supplies the oracle score. Wrappers and savings variants display inherited parent oracle exposure without adding a separate wrapper-side oracle penalty.
Bridge route blend (v8.12):
Reviewed bridgeRouteRisk metadata can capture issuer-native, canonical, external bridge, lockbox, liquidity, or intent routes. When present, the score applies min(score, round(score × 0.80 + bridge × 0.20)) after oracle scoring and before Mint Authority. Strong issuer-native or canonical routes never lift a score; missing reviews stay neutral; weak external lock/mint, liquidity/intent, or opaque routes can drag it down.
Current tier scores are single-chain/native 100, issuer burn/mint 90, canonical bridge 85, issuer lock/mint 80, external validated network 65, liquidity/intent route 55, external lock/mint 40, and opaque/unknown 20. L2BEAT Interop is used as static review evidence, not as a live scoring dependency.
Mint Authority blend (v8.0):
A rated Mint Authority Score applies as the final stage: min(score, round(score × 0.65 + MAS × 0.35)). The blend only drags the dimension down — a weak privileged-mint path undermines a decentralization claim, while a strong one never lifts it. Coins without a rated Mint Authority Score are unchanged, and wrappers take the drag once on their inherited pre-blend score (capped at the parent's blended score).
Chain-risk penalty (DAO and multisig governance — exempt for immutable-code, wrapper, regulated-entity, single-entity):
- Combined score ≥80 — no penalty
- Combined score ≥60 — −10
- Combined score ≥40 — −25
- Combined score ≥20 — −40
- Combined score <20 — −60
Example: hyUSD (DAO governance, Solana, combined score 45) = 85 − 25 = 60. USDB (multisig, Blast L2, combined score 66) = 55 − 10 = 45.
Dependency risk scoring
Dependency scoring runs after upstream report cards are available and uses a topological order across the active dependency graph, so transitive stablecoin exposure is scored from upstreams before downstream coins are finalized.
- Self-backed coins — score by governance baseline: decentralized 90, centralized-dependent 75, centralized 95
- With mapped dependencies — blended score: each upstream's grade is weighted by its collateral fraction, and the self-backed portion (non-stablecoin collateral) scores vary by governance type (decentralized 90, centralized-dependent 75, centralized 95). A −10 penalty applies if any upstream dependency scores below 75
- Unavailable upstream scores — every unavailable weight is scored at 70 inside the same blend, including when every upstream is unavailable. It still triggers the weak dependency penalty and remains subject to wrapper or mechanism ceilings
- Variants and self-holdings — a tracked variant has one serial wrapper dependency on its parent. Mirrored parent reserves do not add parallel weight, and a coin's own treasury-held token remains reserve evidence without becoming a self-dependency
The Worker diagnoses the complete effective graph before traversal. Static cycles require explicit review; live-created cycle members fall back to curated dependency sets, and a graph that remains cyclic is rejected before snapshot and grade-history publication. The dimension payload records raw and normalized contributions, availability, self-backed share, the weak penalty, and any binding ceiling.
Dependency type ceilings — each dependency is classified as wrapper, mechanism, or collateral (default). Legacy wrappers (e.g., syrupUSDC → USDC) are capped at upstream − 3. Tracked parent-linked variants keep the same wrapper edge but use family-specific ceilings: savings −3, strategy-vault −5, risk-absorption −5, bond-maturity −8. Mechanism dependencies (e.g., DAI → USDC via PSM) are essential to the peg — score is capped at the upstream's score. Collateral dependencies use the blended formula with no ceiling.
Self-backed scores vary by governance type: centralized-dependent coins score 75 (systemic coupling risk), decentralized coins 90, and centralized coins 95. Centralized-dependent coins score lower because their peg mechanisms depend on upstream stablecoin infrastructure even for non-stablecoin collateral.
Grade thresholds
| Grade | Score range |
|---|---|
| A+ | 87–100 |
| A | 83–86 |
| A− | 80–82 |
| B+ | 75–79 |
| B | 70–74 |
| B− | 65–69 |
| C+ | 60–64 |
| C | 55–59 |
| C− | 50–54 |
| D | 40–49 |
| F | 0–39 |
| NR | Not enough data |
Key design decisions
- NR (Not Rated) is used when fewer than 2 base dimensions have data — no misleading partial grades
- Weight is redistributed proportionally among rated base dimensions when some are NR
- Peg stability acts as a multiplier, not a base dimension — maintaining a peg is table stakes, not a differentiator
- Cemetery (defunct) coins receive a permanent F
- Decentralization score is structural, not a value judgment
- Blacklist capability is reported descriptively only and does not affect the Resilience score. Explicit mutable-contract controls surface as “Possible”. Parent and qualifying issuer/custodian reserve exposure instead use “Upstream” under the FreezeWatch decision procedure.
Dependency ceilings
When a stablecoin depends on another (wrapper, mechanism, or collateral relationship), its dependency risk score is capped relative to its upstream:
- Wrapper dependency: legacy wrappers and tracked savings variants cap at upstream score minus 3; strategy-vault/risk-absorption variants cap at minus 5; bond-maturity variants cap at minus 8
- Mechanism dependency: capped at upstream score
- Collateral dependency: blended into dependency risk dimension via weighted average
If any upstream dependency scores below 75, a 10-point penalty is applied. These ceilings prevent a wrapped token from outscoring its underlying asset.
Limitations
- Peg stability only reflects price data — can't detect coins “stable” because nobody trades them
- Decentralization is structural, not a value judgment
- Dependency inputs come from score-grade live reserve slices when available, then curated reserve links, then manual dependency metadata; unmapped collateral relationships may still be missed
Dependency Exposure Lookup
Exposure mode on the Dependency Map finds coins linked to selected upstream assets through mapped collateral and wrapper relationships. Linked coins; not a loss forecast. It does not estimate losses or changes in Safety Scores.
Inputs
Selected upstream roots and the full published dependency graph
Output
Mapped dependent counts, look-through shares, and known USD
Supply basis
Circulating USD at publication evaluation, never current market cap
The lookup uses the full published edge set, regardless of Explore Focus, Type, Limit, or small-link visibility. Selected roots are listed separately and excluded from dependent counts and USD totals. Direct dependents are one link away; indirect dependents are reached through longer chains.
Lookup arithmetic, supply clocks, and limitations
Serial maximum and basket sum
Each root starts with a share of 100%. Basket relationships sum mapped weights multiplied by their upstream look-through shares. Serial relationships take the maximum upstream share, not a sum. When both channels apply, the lookup takes the larger of the serial maximum and the basket sum. Each dependent appears once across selected roots. A published shared backing book counts once in USD totals; direct and indirect totals can still include the same underlying value at several layers, so the headline states that overlap. These gross layer totals are not additive independent holdings.
Publication-bound supply
USD equals the mapped share multiplied by circulating USD at evaluation from the accepted publication. The result names its generation, methodology version, publication time, and supply clock, and labels held snapshots. It never silently substitutes current market cap. When evaluation supply was not published, USD remains unknown with the reason 'Supply at evaluation not published for this generation'. Unknown supply is not zero: the row remains visible and known-USD totals exclude its unavailable amount.
Coverage and limitations
Coverage is limited to published relationships and their measured or reviewed weights, which may differ from current composition. Unknown weights and cycles leave shares unresolved rather than guessed or clamped. Role dependencies are listed as 'Role dependencies (not drawn)'; 'Known, not in the scored graph' relationships are outside the lookup and totals. An absent coverage field means not published, not no gaps. Peg, liquidity, confidence, and other transmission channels are not modeled. No mapped downstream exposure found does not establish that other dependencies are absent.
Review coverage gapsSeparate offline modeled scenarios
Separate offline modeled scenarios are available in Exposure mode. A daily Node workflow reuses the production Safety Score evaluator, including role dependencies, for up to 15 hubs ranked by mapped direct exposure USD from publication-bound supply and published dependencies, with shared backing books counted once. The three D1b shocks limit the root's downstream-consumed final score to 40, model a 1,000 bps one-day depeg with captured peg history and exit facts held fixed, or model mint-control compromise. Each selection shocks one root, not all selected roots together. Results name their source publication, artifact age, and two-day freshness budget. Earlier-generation results are explicitly labelled; stale or unavailable results withhold modeled numbers. NR remains NR. Modeled with the production Safety Score evaluator; not a forecast. These artifacts do not change canonical cards, journals, publication identity, or scoring policy. Structural exposure lookup remains separate and adds no scoring override.
History examples
These case studies explain past events. They are links only, not runnable presets or a historical replay.
Mint Authority Score
v1.3The standalone lane is closed. Current economic-authority rules are versioned in the Safety Score changelog; this badge marks the terminal Mint Authority release.
Mint authority is graded once inside the Safety Score V10 Economic Control pillar. The standalone Mint Authority Score retired at v9.1; its terminal v1.3 badge is historical, not a second current methodology.
Where it lives
Safety Score V10 Economic Control pillar
Potential authority
One weakest-effective-path ladder, including upgrades and allocators
Component maximum
90, after bound and assurance credits
Measured compromise
25, without assurance credit
| Effective authority | Base quality |
|---|---|
| Verified single signer / one-signature path | 50 |
| Opaque or incompletely resolved controller | 60 |
| Verified multisig / affirmative governance, no unavoidable delay | 65 |
| Verified multisig with unavoidable timelock | 70 |
| Public governance / minority veto with unavoidable timelock | 75 |
| Reviewed immutable execution without discretionary economic power | 90 |
Economic authority: evidence, bounds, assurance and incidents
Follow every admitted economically effective mint, upgrade, fee/accountant, allocator, curator, custody-transfer and parameter path to its weakest effective controller. Access-only freezes without holder-claim impairment remain disclosure-only. An immutable proxy does not prove an immutable accountant, and a deposit limit cannot bound arbitrary fees or reallocation.
The one topology ladder uses verified single signer 50, opaque controller 60, verified quorum 65, quorum with unavoidable timelock 70, public governance/minority veto with unavoidable timelock 75, and reviewed immutable execution without discretionary economic power 90. Add 10 only for an enforceable economic bound preserved by every bypass and upgrade. Reconciliation adds at most 15; prudential supervision adds 15 or attestation-only 10, never both; total assurance is at most 30. Clamp the component once after all credits at 90, the immutable-no-power level. This is a component maximum, not an additional whole-score cap.
Each quorum, delay, bound, reconciliation and supervisory fact needs independent admitted proof. Missing one removes only its own credit; aggregate posture, reviewComplete and immutable labels cannot switch the compound proof. A contract address is not multisig proof, a reserve NAV feed is not authorization proof, and legal supervision is not immunity. Unknown or internal-ledger assertions grant no external reconciliation credit.
Genuinely missing Control factors use C50 for researched issuer non-disclosure and U60 for Pharos research/infrastructure uncertainty or unclassified gaps. Keep the exact scoped gaps, source references and original clocks. Known weak oracle/bridge facts remain 45 and measured compromised/exploited authority remains 25 without credits. Potential unbounded authority alone is not a realized loss.
D33's availability matrix, D29/D30/H process-specific scores and precedence, separate verified fallback, 60-month seasoning and module/quorum penalty ladders are retired in v10.29. The broad structural-cap matrix is replaced by the five explicit cap families, including only the narrowly admitted speculative-credit residual 59 rule. Governance, controller ownership, weighted signatures, module reach and exact execution certificates remain useful authority evidence. No upgrade-only question is deferred: economic upgrades compete on the same terms as mint and allocator powers.
Bridge controls remain scoped to their representation and exact reachable liability; sharing a controller does not turn a satellite bridge power into global native mint risk. Complete reconciled supply partitions are required for proportional deployment pricing; unavailable shares never become zero. Reviewed no-local-issuance exceptions still require the displaced risk to be carried by a genuine parent edge or reviewed representation inventory.
Exact execution evidence binds chain-qualified controller, runtime/implementation, entrypoints, permissions, mutable targets, fallback/delegate execution, upgrade/reactivation alternatives, liabilities, source pins and original review/observation/expiry clocks. Complete closure can exclude a path; partial evidence cannot erase a known sibling. Weighted signing retains the minimum executable signature requirement, including XRPL master/RegularKey alternatives, without inventing independent humans.
D32 controller ownership remains factual voting provenance: distinguish a holder voting its own locked stake from a key controlling or replacing other holders' votes, reconcile pinned voting powers and residuals, and aggregate positively identified affiliates. A process label or sampled member never substitutes for a full authority census. Compact issuance diagnostics are evidence summaries, not another numeric scorer.
Admitted MPC/HSM technical custody needs the exact control's own complete current review, not a parent's renewal. Custody-only open questions do not erase independently proved authority topology, and hardware storage alone proves no quorum, delay, execution closure or favorable economic bound.
Active economic control incidents, exploitation and source-proved realized unbacked mint keep quality 25. Preserve distinct resolved control-history treatment with bounded recovery; do not stack a duplicate whole-score charge for an event already covered by the generic realized-holder-loss rule. Negative research resolves only its matching incident question, never topology or lifetime safety.
Missing subfactors or open questions do not create whole-card NR. Require at least two pillars with usable admitted evidence; price an unavailable third at its cause-keyed unknown constant with original weights, explicitly distinguishing it from evidence. Fewer are technical pipeline gaps; a genuinely unavailable required parent remains unavailable. Low scores, D/F letters and incidents do not trigger NR. Publication quarantine and last-accepted holds remain separate safety contracts.
A deployment or bridge slice does not charge the same effective root controller twice when that exact controller is already priced in the asset's Control pillar. Match admitted controller identities, never asset IDs. Independent slice controllers and measured slice-specific bridge, oracle or incident risk retain proportional deployment losses.
Shared-chain and bridge risks retain proportional holder-supply losses, not whole-score caps. Use separately evaluated slice quality first; otherwise the deployment-only table uses critical-dependency moderate/high 79/64, material-bridge moderate/high 74/59 and active-control-incident critical 39. Unknown shares remain unresolved. Preserve exact same-root authority de-duplication, event coalescing and measured exposure allocation.
Infrastructure Tagging
Infrastructure identifies the shared technical foundation a stablecoin was built on. Pharos currently recognises three values: Liquity v1, Liquity v2, and M0. The tag answers the question: what shared technology does this coin inherit risk from?
Liquity v1 and Liquity v2 are code lineages — coins that fork the original Liquity CDP implementation (v1) or its newer BOLD-style design (v2). Forks share source code but operate independently with their own reserves, governance, and Stability Pools. A vulnerability in the upstream Liquity codebase potentially affects every fork in that branch, even though the forks have no operational relationship.
M0 is an issuance-platform lineage — coins built on M0's smart-contract rails (minter governance, the SwapFacility, and the MExtension.sol contract pattern). M0 provides the issuance machinery; the reserve composition is set by the issuer and may or may not include the underlying $M token. Some M0-built coins are simple $M wrappers; others manage diversified collateral via M0's infrastructure. A governance issue at the M0 protocol level potentially affects every M0-built coin, even though their day-to-day operations and reserves are independent.
Storage
Array field on each StablecoinMeta entry
Cardinality
Zero, one, or many infrastructures per coin
Surfaces
Detail badge, homepage filter, taxonomy pages, methodology
Version increments when liquidity formula weights, source inclusion rules, or TVL normalization logic changes.
Composite 0–100 score measuring DEX liquidity depth per stablecoin, published hourly alongside DEX-implied prices. The score aggregates genuine pool data across major DEXes and chains.
Dead or explicitly blocked DEX slugs such as Bunni are excluded upstream from crawl intake, retained pools, challenger snapshots, and DEX-implied price publication instead of being treated as low-quality live venues. The same block covers non-AMM venues whose reported “pool” reserves are not executable depth: NEAR Intents pairs are priced from the settlement contract’s shared custody of the quote asset, so they never count as liquidity.
Since v6.93, CoinGecko exchange tickers supply price evidence only, not TVL, pools, liquidity volume, source mix, coverage or orderbook depth. Legacy synthetic rows are excluded too. A ticker-only asset is liquidity-unobserved, not measured zero; the first publication can show a one-time policy TVL step rather than a market withdrawal. The 2026-10-08 registry inventory found ten ticker-only assets, with USDGO, YLDS and Gate GUSD each above $1M of raw ticker TVL. That inventory is not a forecast of published TVL. Safety formula is unchanged, and improved Safety Score stability has not been measured.
Pool quality uses the same retained TVL scope throughout. For Curve metapools that exclude base-pool TVL, full-pool balances are not matching evidence: absent a retained-scope measurement, balance stays neutral and unmeasured. Remembered pools keep their measured imbalance penalties, and measured zero depth is never replaced by raw TVL. Exact EVM execution keeps its original capture clock; validated source headers for QuoterV2, Uniswap V4 and Curve CryptoSwap enforce the existing three-hour source-age ceiling. Malformed or incomplete pool censuses cannot certify deployment-wide absence or erase independently valid pools.
Measured execution requires exact retained-pool identity, current admitted valuation and coherent canonical chain/block/hash proof. History contributes only while each original quote remains fresh at assessment; new publications cannot renew it. Non-USD peg fallback uses fresh non-future per-peg FX under its source cadence, not a diagnostic rate or global cache clock. Unsupported hash reads, number-only proof and unavailable method probes remain unavailable, not latest-state substitutes or zero capacity. Carried spots cannot manufacture current output value.
Methodology v6.95 adds pinned reviewed targets on already-active Pancake V3 and Uniswap V3 families. Active targets still need quote-time identity, freshness and execution checks; shadow pools remain score-ineligible. CHFSAFO's exact Aquarius identity supplies supplemental non-exhaustive coverage. A missing liquidity row schedules maintenance, not a zero-liquidity observation. Component weights, budgets, cadence and retained-TVL basis are unchanged. Fresh producer observations and final fixed-clock comparison remain required. Activation: October 14, 2026 12:40 UTC (release cut; 1791981600).
Pool Matching & Deduplication
Dedicated protocol-native sources (Fluid, Balancer, Raydium, Orca, Meteora, PancakeSwap V3, Aerodrome Slipstream, Velodrome Slipstream, and Aero Slipstream and basic pools) are treated as primary-grade inputs and enter scoring before staged or fallback discovery sources are merged.
Discovery coverage is less page-fragile now: CoinGecko Onchain and GeckoTerminal token crawls read multiple bounded pages, and fallback enrichment can activate for weak partial coverage instead of waiting for a strict zero-pool outcome. Secondary discovery rows with non-finite, negative, or impossible pool TVL are rejected before staging and skipped again at scoring merge time if stale bad data is already present. CoinGecko Onchain and GeckoTerminal pair rows must also pass the pair-price coherence gate: the tracked leg's USD price must agree with the pool's own pair ratio × the counter-leg's USD price, and a provider row that publishes leg USD prices with null or zero pair-ratio inputs is rejected before it stages any TVL or price evidence. Zero volume and zero transactions never reject a pool on their own, so quiet pools remain eligible.
Stellar classic-AMM discovery uses Horizon with exact, case-preserving CODE:ISSUER identities. Those rows receive price and TVL only when the counter-asset is another active tracked classic Stellar stablecoin with a usable peg reference and the implied tracked price passes the common plausibility gate. Horizon is a capped secondary source with a 200-row response bound and 0.55 fallback-price confidence; Soroban contract tokens, Stellar order books, and Soroban-native DEX liquidity remain outside this provider and fail closed rather than inheriting synthetic coverage.
Matching is chain-aware: `chain + address` resolves first, and symbol fallback is only allowed when it is unique on that chain for addressless tokens. If an upstream token already supplies an unknown address, it is dropped instead of being remapped by symbol. A token pair is a matching candidate, not a pool identity: opaque provider IDs remain distinct chain-scoped deployments until a physical match is proven. Identical exact repeats count once; conflicting exact observations are quarantined with a named reason. One physical pool attributed to several stablecoins counts once globally. Balancer uses its real pool address, not the vault pool ID; candidate fingerprints support guarded unique joins, never TVL aggregates.
Direct-source precedence is also measurement-aware. A protocol-native pool normally replaces an overlapping DeFiLlama row only when it carries a positive measured 24h volume reading; Aerodrome, Velodrome and Aero pools, whose on-chain pool-state rows publish no trailing volume, and pools whose tokens carry a reviewed price dependency are explicit exceptions that take precedence without volume. When several registry lanes observed the same pool, the reading that counts is the most trusted lane refreshed within 24 hours, else the most trusted inside the 72-hour admission window, else the freshest lane with a usable reading; a registry zero written before the v6.9 producer activation counts as unmeasured rather than a measured zero, except CoinGecko onchain zeros, which were explicit zero-trade readings. Exact pool ids from protocol-native sources still stay reserved for later staged-source dedupe even when the direct row itself is too small to score, so discovery feeds cannot re-add the same address with incompatible TVL semantics.
Discovery rows also need authoritative confirmation when they claim a protocol family that already has a clean protocol-native fetch on that chain. In practice, GT/CG/DS staging cannot invent new Balancer, Fluid, Raydium, Orca, Meteora, PancakeSwap, Aerodrome, or Velodrome pools after the native source succeeded; if that native fetch is degraded or unavailable, the scorer fails open and still allows staged recovery rows through.
For identity-poor DeFiLlama UUID rows, staged discovery can use the narrow optional-metadata wildcard only when both sides are unique on chain, protocol, token set, and pool-shape family. That lets one staged exact-pool-id row collapse against one primary row without collapsing parallel same-pair pools.
When protocol-native sources expose pool inventory, Balancer, Raydium, Orca, Meteora, PancakeSwap V3, and the Slipstream integrations now contribute measured balances and fee detail instead of neutral placeholders. Balancer weighted pools are normalized against target token weights before the balance ratio is computed. Fluid reads reserves and fee detail from the official DexReservesResolver on Ethereum, Arbitrum, Base, and Polygon, while Aerodrome and Velodrome Slipstream read pool state from the on-chain Sugar view contracts on Base and Optimism. Aero, which publishes no Sugar view, is enumerated straight from its factories on Base, Ethereum, OP Mainnet, Arbitrum, Robinhood Chain, and Arc; each pool must prove factory membership at one pinned block, and stable-curve pools are admitted only when both tokens are independently priced. Curve requires complete USD-valued balances and Fluid both reserve halves. Incomplete evidence remains unmeasured with neutral balance weighting; complete zero-sided balances remain measured zero. Provider numbers must be complete finite decimals, not numeric prefixes, and Orca balance normalization requires integer token decimals in 0..255. Independently admitted pool identity and TVL can survive missing balance evidence, but that absence cannot establish measured coverage.
Canonical Ethereum Uniswap V2 and BSC PancakeSwap V2 pools can publish exact constant-product execution only after their factory runtime and exact `getPair` binding are verified. Token order, reserves, and decimals must resolve at the same pinned block; other V2 forks and any identity, factory, reserve, price, or read failure stay capability-gated instead of inheriting executable depth.
Retired legacy Sonic stable/volatile and Base/Optimism volatile Solidly diagnostics no longer augment per-pool measured-balance flags. Base Aerodrome stable and Optimism Velodrome stable diagnostics require original state/reference clocks and independent same-block request/refined endpoint verification, but remain non-scoring for exact Exit. Unavailable or stale proof is not a measurement. These flags describe diagnostic/API evidence, not the balance-ratio aggregate used by Liquidity scoring and confidence. Ordinary venue discovery and TVL accounting remain; no fixed-clock neutrality is claimed.
Hook-free Ethereum Uniswap V4 pools can publish measured exact-execution profiles through the separately reviewed PoolManager, StateView, and Quoter path. Each score-facing profile binds the exact PoolId, ordered currencies, fee, tick spacing, zero hook, pinned runtimes, immutable PoolManager relationships, current pool state, and ABI-decoded quote. Hooked pools and other V4 chains remain unsupported, and stale or drifted evidence fails closed.
Base Aerodrome Slipstream pools can also publish measured exact-execution profiles. Each profile pins the reviewed factory and QuoterV2 runtimes, proves the retained pool through the factory's exact token and tick-spacing binding, and revalidates identity, prices, freshness, capacity monotonicity, and the retained TVL ceiling before scoring. Mature fresh profiles remain route-only if a pool temporarily rotates out of the display shortlist; they never re-enter aggregate liquidity, price consensus, or public target inventory. Any V10 Exit use is limited to the current score-eligible exact-route contract. Optimism Uniswap V3 has been retired from the maintained source and measured-execution lanes.
As of v6.0, the never-score-eligible Solana and Tron native measured-execution lanes (Raydium CLMM, Orca Whirlpool, SunSwap V2) and the Fluid measured overlay have been retired. Retained Raydium, Orca, and Fluid pools continue to contribute aggregate liquidity, price observations, and shaped exit-route evidence, but no native measured-execution profiles are collected or published for them, and the target-only SunSwap census is no longer fetched.
External protocol totals gate fallback admission, not published valuation. Fallback groups exceeding per-coin protocol headroom are quarantined before price admission, and rejection follows the physical pool across coin views; trusted raw TVL is never clipped to fit the external total. Curve factory models need independent tracked-market references. Bounded UniV3 outage identity carry does not carry current USD valuation: without an independent current reference, the measured target stays unresolved.
Repeated sightings of the same physical pool across direct API, staged, and fallback sources are collapsed before DEX price aggregation. Exact direct price evidence can rejoin only when the same canonical pool survives final scoring and both records clear the price-observation floor; derived or mismatched identities remain excluded. A separate challenger snapshot preserves the full retained pool set for depeg checks, instead of relying on the visible top-pools subset. Balancer stablecoin pools also get a narrow stable-pair identity fallback when DeFiLlama omits the subtype in `balancer-v3`, preventing direct-API stable pools from being double-counted as faux weighted rows.
CoinGecko discovery tickers are price-only since Liquidity v6.93. When earlier discovery found no pools or no usable price, Pharos checks non-stale/non-anomalous USD-equivalent quotes with positive finite prices, exchange identity and at least $1,000 reported USD flow. It requests no depth and admits only non-future registry observations within 24 hours. Pricing v6.44 weights exchange prices by observed flow × source confidence, with zero TVL attribution. Neither fresh nor legacy ticker rows enter pool scoring, caps, coverage or orderbook diagnostics, and exchange flow cannot satisfy the unchanged primary, display or depeg trust floors.
PancakeSwap V3 volume now uses a bounded trailing-hour window from the official subgraph's `poolHourDatas.volumeUSD` buckets instead of the latest `poolDayDatas` row, so intraday volume no longer decays toward zero between UTC day rollovers.
Large retained pools must clear the minimum 24h volume floor with an admitted reading; an unmeasured, missing, or stale reading does not clear it. After bad pools are filtered and secondary-source TVL caps are applied, every exported aggregate and score input is rebuilt from the retained pool set.
Since v6.9, DEX volume counts only admitted readings: a pool's provider 24h volume observed within the last 72 hours. The reading stays a 24h figure as of its own observation time, and every published volume record states the 72h window and the oldest and newest observation times. Older readings contribute nothing, even though the remembered discovery row keeps its decaying TVL. A source field that is absent or unparseable is stored as unmeasured, never as zero; an explicit provider zero (for CoinGecko onchain, only alongside zero reported trades) stays a measured zero. Registry zeros recorded before the v6.9 producer (before its 2026-09-28 07:29 UTC activation) could be coerced missing values, so they count as unmeasured while positive readings from that period stay usable; CoinGecko onchain zeros are the exception, because sampled ones were genuine zero-trade readings. A 24h or 7d total is published only when every retained pool is admitted; otherwise the total is unavailable and the record shows the observed volume of the admitted pools next to their share of retained TVL (volume coverage), including for the ecosystem-wide aggregate.
Since v6.93, one registry evaluation clock is captured after the registry read completes. A row later than that clock is rejected whole as future_observation, before identity, value, metadata, price or volume can contribute. Trust/freshness, TVL confidence, maturity, trade-index evidence, dead-pool predicates and coin/global volume summaries share this frozen basis. This fixes a one-generation dead-pool bypass for valid post-source-start refreshes. Stage payload v4 carries the clock through hourly publication and any half-hour publication of an unconsumed stage; normal half-hour reuse keeps the prior accepted generation. Source-fetch, source-slot and measured-quote clocks, the 24-hour price/TVL budget and 72-hour volume budget are unchanged.
Curve balance, registry, token-price, and metapool TVL enrichment is applied only to Curve DeFiLlama rows. Non-Curve rows that share the same token symbols as a Curve pool keep their own mechanism type and TVL.
Address-grade plain Curve StableSwap-NG pools with rate-bearing inputs can publish a route model only after fresh same-block state verifies `get_balances`, amplification, stored rates, ordered coins, and static fee state. Rate scaling adjusts both balances and references; Curve deducts its captured static fee after the full-input invariant. Stale, unpinnable, identity-mismatched, or dynamic-fee state remains capability-gated. Metapools, CryptoSwap, legacy pools, and all other unreviewed Curve shapes are not widened.
Explicitly reviewed Curve metapools can instead publish exact same-notional execution through pinned get_dy_underlying calls. LUSD/3Crv uses this path from v6.2: the producer verifies its legacy factory registration, implementation, 3pool base relationship, coin order, decimals, and runtime code before quoting LUSD to USDC. From v6.3, multiple Curve registry views of the same canonical pool address collapse to one physical fingerprint candidate, while distinct addresses with the same coin set remain ambiguous. Reported TVL is never treated as executable capacity, and any proof or quote failure leaves the route gated.
Coverage confidence is measurement-aware. Instead of a fixed score by source family, Pharos now weights how much retained TVL has measured balances and prices, how broad the protocol mix is, and how much of the row depends on synthetic or freshness-decayed fallback liquidity.
Update cadence
Score, source stage and DEX-implied prices: hourly
Signal mix
5 weighted liquidity components
Output
0-100 DEX depth score
Preconditions & Failure Modes
Minimum data
Volume Activity requires a complete 24h window or at least 50% retained-TVL coverage (inclusive); otherwise the composite is not rated
Durability history
Missing stability history defaults to neutral 50 sub-scores; this does not bypass the volume-coverage requirement
Required sources
Pool TVL/volume/chain data plus mechanism and pair-quality metadata
Failure behavior
Standalone DEX rows can be unavailable. In V10 Exit, missing or unsupported comparable-route evidence receives the bounded floor and exit-unverified ceiling; a reviewed-complete portfolio with no viable route scores Exit 0, except that an open route with an unproven settlement bound takes the bounded floor and exit-unverified ceiling.
Worked example (verified against computeLiquidityScore)
Inputs: effectiveTVL=$10M, TVL=$20M, marketCap=$100M, volume24h=$1M, qualityTVL=$12M, durability=70, pools=8
depthRatio=10M/100M=10%, tvlDepth=35×log10(0.10/0.0007)=75
vtRatio=1M/20M=5%, volume=38×(log10(0.05)+3)=65
retention=12M/20M=60%, quality=(0.60−0.15)/0.65×100=69
diversity=min(100,8×5)=40
score=round(0.30×75+0.20×65+0.20×69+0.20×70+0.10×40)=67
Result: Liquidity score 67.
Technical details: component weights, TVL scaling, and quality adjustments
TVL DepthTVL Depth
30%
Vol. ActivityVolume Activity
20%
Pool QualityPool Quality
20%
DurabilityDurability
20%
DiversityDiversity
10%
Liquidity Score
0–100
Components
| Component | Weight | How it works |
|---|---|---|
| TVL Depth | 30% | Effective TVL relative to market cap (log-scale): 35xlog10(depthRatio/0.0007). ~0.5%->30, ~1.5%->47, ~6%->67, ~14%->80, ~25%+->90+. Falls back to absolute TVL scale when market cap is unavailable. |
| Volume Activity | 20% | Log-scale V/T ratio: 38x(log10(vtRatio)+3). ~0.3%->18, ~3.5%->59, ~19%->86, ~43%+->100. Uses admitted pools only (24h volume observed within 72h): admitted volume / admitted TVL. Rated when admitted pools cover at least 50% of retained TVL; below that it is unavailable and the Liquidity Score is NR, with no reweighting or estimate for unobserved pools. A measured zero still scores 0. |
| Pool Quality | 20% | Venue quality retention: qualityAdjustedTvl/totalTvl, rescaled from the realistic 15-80% range to 0-100. Measures mechanism multiplier x balance health; pair quality is captured in TVL Depth via effectiveTvl. |
| Durability | 20% | TVL stability (35%), volume consistency (25%), pool maturity (25%), organic fee fraction with sqrt curve (15%) |
| Diversity | 10% | Pool count with diminishing returns: min(100, poolCount x 5) |
Pool quality adjustments
- Balance health — continuous ratio (not binary threshold): pools with imbalanced reserves score lower
- Pair quality — co-token scored by Pharos governance classification (CeFi→1.0, DeFi→0.9, CeFi-Dep→0.8) plus static map for volatile assets (WETH→0.65, WBTC→0.6); composite Curve LP aliases such as 3Crv inherit the best quality of their underlying stablecoin basket
- Metapool dedup — uses TVL excluding base pool to prevent double-counting across Curve metapools
- Dead-pool floor — a pool with at least $1M of TVL is dropped from the score and from DEX-implied prices when its 24h reading shows zero trades (CoinGecko Onchain reported no buys and no sells, on a network where CoinGecko records trades) and its other token is not a tracked stablecoin. These are single-sided pools: a few dollars of the stablecoin seed a ~$1 price, and the provider values large amounts of an unlisted token at that price. Missing or unverified volume never triggers the floor, and a pool counts again as soon as CoinGecko reports a trade in it
- Retained-pool recomputation — HHI, depth, volume, and balance/organic/durability inputs are all recomputed from the same retained pool set before the UI truncates to the top 10 displayed pools
- Global population basis — headline TVL, protocol and chain breakdowns, and volume-coverage TVL denominators use the same retained pools deduplicated across coins. External protocol totals gate fallback admission, never rescale trusted raw TVL or observed volume. Over-headroom fallback groups are quarantined across physical-pool attributions, with excluded counts and raw TVL disclosed separately. Quality-adjusted and effective TVL are separate scoring models, not replacements for observed statistics; provider valuations are not guaranteed correct
- Measured evidence — complete finite provider values, valid token scales and complete matching-scope balance legs are required. Unknown balances stay unmeasured, while measured zero remains zero. Factory references must be independently current; carried pool identity cannot supply a current USD price. Each historical quote ages at assessment, and canonical block hashes and fresh non-future per-peg FX bind measured capacity
- Measurement epochs — v6.97 records the changed retained population without rewriting history. Paired source stages reject incompatible older admission policies; TVL trends do not interpret a policy step as a market withdrawal
The standalone route score and V10 Exit share scoring primitives but ask different capacity requests.
The Redemption Backstop score rates one issuer or protocol redemption route from 0 to 100. It is a standalone route diagnostic, separate from Safety Score V10 Exit. Both consume the same reviewed access, settlement, execution, capacity, output, and cost primitives; V10 re-evaluates exact same-notional evidence under its own stress request, evidence ceilings, danger interlocks, and redundancy policy.
Methodology v4.49 keeps fractional observed fees unrounded through the existing 10, 50 and 100 basis-point cost thresholds. Rejected payout identities cannot grant favorable live fees, openness, holder access or settlement. sBOLD needs readable collateral-health evidence for open status; Mento capacity needs same-block execution predicates and a successful bounded quote. dEURO basket valuations retain the oldest complete member-price/FX clock, and physical commodity outputs require source-timed USD valuation distinct from fiat proceeds. These corrections can move route scores; weights and ladders are unchanged.
Redemption output risk follows what the selected route pays. A single reviewed stablecoin payout is 100% of output regardless of backing allocations; basket percentages require complete admitted payout weights, otherwise the affected output stays identified with an unknown share. FUSD pays USDT, Noble USDN and Gate GUSD pay USDC, and KAST USDK unwraps to M, not an inferred partner fiat rail. Output identity proves neither current price, funded liquidity, fees, holder access nor settlement. A separately fresh nested observation cannot rehabilitate a fatally invalid reserve snapshot. Independent DEX alternatives retain their own clock, hash and FX gates; their absence is not redemption failure.
Methodology v4.5 withdraws unsupported capacity, completion and eligibility assumptions on reviewed existing routes. Avalon, Youves, hyUSD and wARS retain unquantified capacity; Solayer's USDC holder path is queued QLP fulfillment, not atomic redemption. pathUSD's processing target is not a completed-payout maximum. The existing-route bound review grants no new config-only upgrade. Exact smaller-probe receipts under Safety v10.18 prove only executed input, not full-request completion or exhaustion. Weights and ladders are unchanged; fresh observations and final fixed-clock comparison remain required. Activation: October 14, 2026 12:40 UTC (release cut; 1791981600).
Version
v4.52
Output
0–100 route score; null when required route evidence cannot resolve
V10 relationship
Shared primitives, independent V10 Exit evaluation
Current route-score formula
route = access × 0.2 + settlement × 0.15 + execution × 0.15 + capacity × 0.25 + output × 0.15 + cost × 0.1
The capacity component blends percent-of-supply coverage with absolute executable dollars. The standalone modeled request is 5% of supply, floored at $100,000and capped at $25,000,000. A measured zero-capacity route, or a positive route below both the 1% completion and $100,000 absolute breakpoints, receives a zero headline; missing capacity remains unrated; the same gate applies to the eventual-redeemability headline. Reviewed settlement terms are shared with V10, favorable corrections retain the 365-day evidence expiry, and reserve-sync full-supply eventual capacity requires an explicit dated evidence opt-in. On-chain formula-rate probes pin their return-value decimal scale before fresh fees can enter scoring. Route-family ceilings, holder eligibility, delay, queue, minimum-redemption, severe-depeg, freshness, and evidence rules can only reduce or withhold the result. An open downside incident is market-implied degraded only when a fresh authoritative current signed deviation remains at or below -2500 bps; if current evidence cannot be established, the route is unknown and its score is withheld rather than inferred from the incident's historical peak. HBD's no-extra-fee conversion statement does not establish full-value proceeds under the protocol haircut, so its documented cost remains disclosed but unquantified until executable output value is established.
Reserve-backed observations keep the validated source time, or the producing snapshot's fetch time for same-run on-chain and API evidence, separate from publication time. Republishing retained evidence does not reset its age or V10's eight-hour redemption evidence budget. Capacity percentages divide finalized executable dollars by the same positive current supply, including daily scoring bounds; issuer-reported ratios cannot override that denominator.
Morpho Vault V2 capacity requires a same-run read of the exact vault's selected liquidity adapter; a zero or unreadable adapter permits only independently measured fresh idle underlying. Generic ERC-4626 balances denominated outside USD require same-path FX valuation before they can become dollar capacity; otherwise capacity is unavailable while reserve evidence is retained. Newly reviewed routes do not turn unmeasured liquidity into a fixed zero: absent telemetry remains unrated, and routes without an honest capacity model remain source-reviewed but unconfigured.
MetaMorpho V1 wallet donations do not establish accounted idle cash or replace validated executable capacity from its API. Liquity v1 gross ActivePool debt remains a backing diagnostic, not executable redemption capacity. A rejected payout identity also rejects its cohort restrictions; only a separately sourced facility or input-token pause survives that mismatch.
GBPA and MXNT retain unquantified capacity. FILQ and Sygnum FIUSD distinguish cash payouts from NAV-based share pricing; strUSD separates permissionless on-chain submission from issuer-discretionary holder eligibility. These corrections do not establish missing completion or all-in cost bounds.
Direct executable observers are a separate route-evidence source, not proof of reserve composition. Lido, Monetrix and Saturn retain diagnostic-only null capacity; USDfr measures a restricted par-state USDC controller, and apyUSD measures funded apxUSD receipts only with current payout valuation. Delayed apyUSD receipts remain eventual-only, not immediate liquidity. Missing completion, exact output or all-in cost evidence cannot be replaced by full supply, vault NAV or idle cash. Reservoir's three routes share one USDC PSM resource rather than additive backup liquidity.
A fee minimum is not a maximum, and zero issuer fees do not establish zero bank, network or partner deductions or full net proceeds. Each request point keeps its own cost. Settlement ceilings require dated support for completed payout; processing targets, cooldowns and conditional business-day terms remain gaps. The supply-cache generation must pass its existing availability budget before a new snapshot is built. Original reserve freshness and immutable details fail closed; older valid fallback keeps its own clock rather than appearing newly observed.
Access
20%
Settlement
15%
Execution certainty
15%
Capacity
25%
Output quality
15%
Cost
10%
Version increments when admitted issuance coverage, flow scoring logic, tracked event semantics, or ingestion attribution policies change.
Pharos tracks on-chain mint and burn events for major stablecoins via JSON-RPC (Transfer mints/burns plus USDT Issue/Redeem). EVM reads use admitted Dwellir with Alchemy fallback; Tron uses admitted Dwellir with TronGrid JSON-RPC fallback. These raw events are aggregated into hourly buckets and exposed as two separate signals: raw net flow for current direction, and a baseline-relative pressure score for context. Counted flow excludes bridge transfers, review-required burns, atomic roundtrips, and individually reviewed protocol-internal movements such as an issuer deploying reserves into its own loan book. Mints to and burns from addresses curated as non-circulating on the same chain are also protocol-internal; all other internal-flow exclusions require per-event review. These rows remain in the event ledger.
Reviewed issuance coverage includes Ethereum BRSRV, CHFSAFO and GLDon. Exact start blocks and token thresholds remain explicit in the contract registry; GLDon's reviewed OFT adapter preserves bridge-transfer classification. Other native deployments are not implicitly covered, and configured history does not establish a completed backfill or a mature flow baseline.
An N-hour flow window covers N closed UTC hours ending at the common fully scanned hour across admitted sources, within the published freshness budget, not a rolling window ending now. The response exposes that watermark; pressure, largest events, baselines and longer net-flow windows share it. Verified CCTP V2 destination recipient and fee mints are bridge transfers, while unrelated issuance in that transaction stays counted. Historical valuation requires an actual observation within the inclusive 24-hour distance from the event; retention preserves all hourly siblings until repair and aggregation settle.
A new issuance leg joins published flows only after contiguous scan proof for its current configuration covers 90 days through the publication watermark, its frontier is fresh, and that baseline passes the existing valuation-completeness rules. Missing or unknown valuation keeps it pending; a proven zero-event baseline can qualify without prices. Supported new legs keep catching up, with their reason and progress disclosed, while the coin's admitted legs keep publishing. Pending or operator-disabled legs contribute neither totals nor gauge weights. Existing contracts sharing a chain bucket must be disabled together; a new sibling contract waits for independently attributable history. The frozen 137 pre-gate config keys are grandfathered for membership; source-field edits retain that membership, while current-fingerprint coverage remains required. An active admitted leg that later stalls stays in scope. A re-enabled stale leg waits for fresh frontier and incumbent-hour proof without repeating the 90-day gate; shared buckets resume together.
USDT Tron joins through that admission gate in the critical lane. Only Issue/Redeem count; their paired zero-address Transfers would duplicate the same flow. Scans stop at a fresh solidified head. Historical conservation remains unsupported because Tron cannot supply the required historical state. Once admitted, Tron joins USDT's totals, pressure baseline and tracked-chain gauge weight. The digest re-bins the published gauge and uses its coin nets; DDR's mint-surge input includes all admitted chains. DEWS keeps Ethereum as USDT's canonical chain. The 90-day admission baseline protects the published 90-day net from a newly joined chain with shorter history.
Historical hours before the fixed October 20, 2026 noon UTC cutover may use explicitly labelled legacy cursor/event assurance. At and after the cutover, current-fingerprint durable scan proof is mandatory. Dirty hours and missing valuation remain unavailable. This bounded transition expires after the 90-day window passes the cutover. The Bank Run Gauge weights only admitted scored coins; incomplete scan membership is disclosed, not silently counted as zero or presented as full coverage.
Reviewed zero-recipient transfers require supply-destruction evidence. Exact custom issuance receipts can admit internal or batch burns; router selectors alone cannot. Unproven observations remain review-required and non-counted. Rebasing and unverified-source exclusions are not blanket burn exclusions. Retained-hour repairs track materialization debt; per-config reconciliation advances through retained burns and revisits unavailable receipts when its cursor wraps, preserving their named reason. Pruned history needs audited replay rather than an invented exact repair.
Every closed window requires admitted scan coverage, using durable current-fingerprint proof after the cutover and the bounded legacy rule before it. Without admission, signed net, bounds, direction and pressure are unavailable, while observed gross and event-count subtotals remain visible separately. The legacy has24hActivity field stays null for an incomplete scan, even when events were observed; the additive observed24hActivity field preserves that observed fact without requiring older readers to understand it. A false observed activity value is not proof of quiet. Quiet-zero days need affirmative scan coverage. Earlier fingerprint evidence does not establish current long-window coverage, and sealed historical bytes keep their original identity. Hourly totals and repair debt are read atomically; readers using scan proof include it in that same batch. Dirty hours withhold exact affected windows until their materialization debt drains, even when current-fingerprint scan proof was already issued.
Data source
On-chain mint + burn events
Primary score
Pressure Shift vs 30D
Main outputs
Net flow, gauge, and FtQ
Preconditions & Failure Modes
Minimum data
Pressure Shift vs 30D requires at least 7 days of flow history per coin
Required sources
24h mint/burn totals plus 30-day baseline aggregates
Failure behavior
Pressure shift can be null (NR); gauge is null when no weighted inputs contribute; FtQ needs ±$100M dual threshold
Counted rows
Economic-flow aggregates count standard rows only, which in practice means non-bridge mints plus effective burns
Worked example (verified against computeFlowIntensity)
Inputs: currentNet=-$0.2M, baselineNet=-$7.5M, baselineAbs=$40M
denominator=max(40M*0.3,1M)=12M; z=(-0.2M-(-7.5M))/12M=0.608
pressureShift=clamp(-100,100,z*50)=30.4
Result: still burning today, but much lighter than its baseline.
Technical details: two-signal pipeline, pressure formula, and gauge bands
Mints
Transfer from 0x0
Burns
Transfer to 0x0
Hourly buckets
Trailing 30 closed daily issuance-chain buckets
Net Flow 24h
Current mint minus burn direction
Pressure Shift vs 30D
-100 worsening · 0 baseline · +100 improving
Bank Run Gauge
market-cap weighted
Flight-to-Quality
dual threshold detection
Mints
Transfer from 0x0
Burns
Transfer to 0x0
Hourly buckets
Trailing 30 closed daily issuance-chain buckets
Net Flow 24h
Current mint minus burn direction
Pressure Shift vs 30D
-100 worsening · 0 baseline · +100 improving
Bank Run Gauge
market-cap weighted
Flight-to-Quality
dual threshold
Net Flow 24h
Net Flow answers whether a coin minted or burned over the last 24 closed UTC hours. It is the mint volume minus burn volume over that window, not the still-open current hour.
- Minting — `netFlow24hUsd > 0`
- Burning — `netFlow24hUsd < 0`
- Flat — `netFlow24hUsd = 0` with activity and complete USD valuation
- No activity — no observed 24h mint/burn events with complete current-fingerprint scan coverage
- Invariant — minting vs burning always comes from raw net flow, never from the pressure score sign
- Valuation completeness — events without a USD price are counted as unpriced, never as $0. Known mint and burn totals are then lower bounds, and a partial window publishes no exact net. With complete scan coverage, unpriced mints can only raise the net and unpriced burns can only lower it, so a window with only one side unpriced shows the known net as an explicit bound (≥ or ≤); direction also requires complete scan coverage and missing valuation that cannot flip it. Buckets aggregated before v6.22 read as coverage unknown and keep their old-method net, labelled, until they leave the 30-day baseline and 7/30/90-day windows.
- Event-time pricing — an event is valued only with a plausible price whose actual observation time is within ±24 hours of the event (inclusive): a daily supply snapshot price through its recorded observation time (never its day label; nominal par is never stored), or a replay-safe cached observation, whichever was observed closer to the event. A current price is never applied to an old event; without such evidence, including NAV observations more than 24 hours old over weekends, the event stays unpriced.
Pressure Shift vs 30D
This is the existing Flow Intensity formula under clearer naming. It measures how far current 24-hour flow pressure deviates from the coin's own trailing 30 fully closed daily configured issuance-chain baseline.
denominator = max(baselineDailyAbs × 0.3, $1M)
z = (currentDailyNet − baselineDailyNet) / denominator
pressureShift = clamp(-100, 100, z × 50)
- Baseline period — trailing 30 fully closed UTC days of configured issuance-chain daily net flows and absolute volumes, excluding the current partial day
- Minimum data — requires 7 days of history; returns null (NR) otherwise
- Activity gate — windows with no 24h mint/burn activity or less than $50K absolute 24h flow are marked NR and excluded from gauge weighting
- Coverage and valuation gates — pressure is NR, and the coin leaves gauge weighting, unless current-fingerprint scan proof covers the window, the 24h window is fully valued and the baseline has no known unpriced events. Legacy scan coverage remains unknown, not proof of quiet activity. Omitted coin counts and market-cap weight remain disclosed; observed gross subtotals cannot establish a signed net or pressure
- Literal minting pressure — stablecoin pages also show the raw 24h mint-versus-burn volume balance. Since v6.27 it is NR, with its reason, unless both sides are fully valued: a balance of lower-bound volumes is not a measurement
- Ingestion safety — sync state advances only to the shared safe coverage frontier when some event definitions or block timestamps are incomplete; established coverage is marked lagging by cadence-derived block progress, or unknown when the current chain head is unavailable. For quiet assets, completed block-scan span proves window maturity even when the oldest event row has aged out of retention. BUIDL tracks both registered Ethereum share-class contracts; coverage requires both scan cursors to catch up
- Floor — denominator is floored at $1M to prevent noise in low-volume coins
- Aggregate gauge interpretation — ≥ +10 = improving vs baseline, [-10, +10) = stable vs baseline, below -10 = worsening. Per-coin pressure-state labels are separate: exactly +10 is stable.
Bank Run Gauge
Market-cap-weighted composite of all tracked coins' pressure-shift values, producing a single ecosystem-wide admitted issuance-chain flow-pressure reading. Gauge weights use each coin's admitted tracked-chain circulating supply. The gauge score maps to one of seven condition bands:
| Band | Score range | Meaning |
|---|---|---|
| CRISIS | [-100, -70) | Severe below-baseline redemption pressure across major coins |
| STRESS | [-70, -40) | Worsening coordinated pressure versus normal conditions |
| CAUTIOUS | [-40, -10) | Mild but broad pressure deterioration |
| NEUTRAL | [-10, 10) | Close to 30D norms across the market |
| HEALTHY | [10, 40) | Improving aggregate pressure versus baseline |
| CONFIDENT | [40, 70) | Strong positive pressure shift across major coins |
| SURGE | [70, 100] | Exceptional improvement versus recent norms |
The gauge is unavailable when no coin with a pressure-shift value has a positive market-cap weight, for example when all tracked coins are NR or their weights are unavailable or zero. Coins with null pressure-shift values are skipped from the composite.
Flight-to-Quality Detection
Detects capital rotation from lower-scored to higher-scored tracked mint/burn stablecoins — a pattern typically seen during market stress when holders move funds out of weaker assets and into stronger safety-score cohorts.
- Safety cohorts — safe is B- or above, neutral is C-/C/C+, and risky is below C-. Classification is unavailable for inactive assets or when the canonical V10 publication is missing, held, stale, invalid, or identity-incompatible
- Dual threshold — active when risky coins have >$100M net outflows AND safe coins have >$100M net inflows simultaneously over 24h
- Intensity scaling — min(100, |riskyOutflows| / $1B × 100), reflecting the magnitude of the rotation
Version increments when APY source resolution, source arbitration, history semantics, PYS scoring logic, or eligibility rules for discovered yield sources change.
Pharos tracks native stablecoin yield plus reviewed lending and structured opportunities, then computes a risk-adjusted ranking through the Pharos Yield Score (PYS). Core rankings publish every 2 hours; slower supplemental families refresh every 4 hours. Source resolution is identity-first and confidence-weighted, preserves valid alternatives, and keeps quarantined or pre-launch coverage visible without admitting it to the live leaderboard. Published external opportunities must pass source-quality, size, measured venue-TVL, benchmark-freshness, and exposure-identity gates. Opportunity-level risk can affect PYS for that market, but it never rewrites the underlying stablecoin's Safety Score. The typed adapter, allowlist, exact-pool, source-risk, and lifecycle registries own the changing venue and asset inventories.
Source-family and benchmark freshness are eligibility rules applied before confidence arbitration. Expired evidence remains visible as NR context, but it cannot carry an exact current PYS. Every benchmark used by a published row is evaluated independently so a healthy USD lane cannot mask a stale local-currency benchmark.
A deposit-address match alone does not establish wrapper receipt ownership: the receipt symbol must match too, PT/LP markets cannot borrow the wrapper label, and contradictory underlying addresses fail closed. Royco needs critical market, venue-review and measured-size evidence to publish a tranche score, and cannot turn an unrated underlying asset into a rated one. Missing critical evidence leaves observed APY visible with NR and no PYS.
Valid negative holder returns stay measured, including losing constituents in a TVL-weighted group. Midas annualization uses oracle observation intervals rather than publication delays; Zephyr counts each hourly source observation once across publication and backfill. Unknown legacy clocks cannot manufacture history, and Hashnote reports beyond the five-minute future-skew allowance are excluded. Benchmark fallback selection is separate from feed health and never renews an old observation.
See also: Safety Scores · Liquidity Score
Update cadence
2h publish / 4h supplemental
APY priority
Confidence-weighted across deterministic, curated, and fallback sources
Output
PYS (0-100)
Preconditions & Failure Modes
Minimum data
Need one resolved APY source; deterministic exchange-rate rows can publish from current state, but need prior source-specific history for a nonzero exchange-rate-derived APY
Required sources
Direct on-chain reads, curated DeFiLlama pools, curated protocol-native APIs, rate-derived benchmark inputs, or 7-45d price history
Failure behavior
No resolved source means no published yield row. Non-positive APY or effective yield, unavailable consistency, invalid score inputs, stale or unknown source evidence, stale benchmarks, and missing critical opportunity evidence publish PYS NR with a reason, not an unexplained zero. Fresh rows using the conservative 40 / NR safety fallback may retain an estimated PYS; missing source-risk penalty resolves to neutral 1
Adapter manifest
The adapter manifest is the canonical machine-readable source list for every yield-bearing asset Pharos tracks. It enumerates the deterministic on-chain readers, curated DeFiLlama pools, protocol-API venues, rate-derived benchmark fallbacks, price-derived NAV fallbacks, auto-discovery lending overrides, and intentional coverage gaps that feed the ranking pipeline, along with each entry's lifecycle (`active`, `quarantined`, `intentional-gap`, `experimental`). The manifest is published at /api/yield-adapter-manifest with a 5-minute cache, stamped with the current methodology version on every entry.
Worked example (verified against computePYS)
Inputs: apy30d=8.4, benchmarkRate=4.25, usdBenchmarkRate=4.25, safetyScore=72, sourceRisk.sourceRiskPenalty=1.2, apyVarianceScore=0.18, scalingFactor=8
benchmarkSpread=8.4-4.25=4.15; hurdleRebase=4.25-4.25=0; effectiveYield=max(0,8.4+0.25*4.15+0)=9.44; riskPenalty=max(0.5,(101-72)/20)=1.45; sourceRiskPenalty=1.2; rowUtility=9.44/1.2=7.87; adjustedPenalty=1.45^1.75=1.92; yieldEfficiency=7.87/1.92=4.10; sustainability=1-0.18=0.82
PYS=clamp(round(4.10*0.82*8),0,100)=27
Result: PYS 27. A TRY row with the same +4.15 spread over a 36.86% TLREF hurdle would carry hurdleRebase=4.25-36.86=-32.61 and score the same 27, not the 100 its 41% nominal APY would imply.
Technical details: APY source resolution, confidence arbitration, PYS formula, NAV handling, and limits
Tier 1
Direct on-chain reads
Tier 2
Curated pools + protocol APIs
Tier 3 / 4
Price- or rate-derived fallback
Effective Yield
APY + 25% spread, USD-rebased hurdle
Row utility
Effective yield ÷ source risk
Yield efficiency
Row utility ÷ curved safety penalty
Sustainability
penalises high variance
PYS Score
0–100
Tier 1
On-chain reads
Tier 2
Curated venues
Tier 3 / 4
Fallbacks
Effective Yield
APY + 25% spread, USD-rebased hurdle
Row utility
yield ÷ source risk
Efficiency
utility ÷ safety
Sustainability
penalises variance
PYS Score
0–100
APY Resolution and Source Arbitration
- Tier 1 — Direct on-chain reads: reads protocol state directly, either as an exchange-rate delta (e.g. sUSDe), a conservative reward-only estimator (e.g. LUSD B.Protocol Stability Pool, LQTY only), a multi-branch interest-only estimator (e.g. Base Dollar Liquity V2 Stability Pools), or scrvUSD's Yearn V3 profit-unlock current-rate reader. XGLD's reviewed exchange-rate provider measures XAUt per XGLD, separating gold-denominated NAV changes from gold's USD price. This is issuer-administered NAV, not reconciled strategy profit; it supplies no measured TVL and still needs a valid historical comparison anchor. Initial and re-anchor observations remain durable history anchors, including Ondo/Midas NAV readers, but enter no current yield row, ranking, alternative or rolling sample until a return is measured. They never publish synthetic zero APY; genuine zero and negative returns remain.
- Tier 2 — DeFiLlama pools: matches the coin to a DeFiLlama yield pool via static mapping, chain-scoped wrapper rules, and address-first fallback matching, while explicitly preserving wrapper pools that upstream marks as non-stablecoin when they are configured as relevant yield sources, allowing exact-pool curated overrides for assets such as XAUT and Frankencoin Savings for ZCHF, and TVL-weighting exact pool groups when one tracked asset maps to chain-isolated wrapper vaults. Supplied contradictory addresses fail closed, missing native pins cannot borrow a generic venue's APY, and ambiguous same-chain receipts require curated pool identity
- Tier 2.5 — Protocol-native venues: ingests curated protocol-owned APIs and protocol-specific on-chain venue readers when the canonical savings path is not representable as a reliable DeFiLlama pool; these rows stay in the curated tier rather than inheriting Tier 1 deterministic precedence reserved for native wrapper readers. Royco Dawn senior and junior tranches publish here as
structured-trancherows keyed byroyco-dawn:<chainId>:<marketId>:<side>, while Midas mMEV publishes a NAV-appreciation row from the issuer-listed mMEV/USD oracle - Tier 3 — Price-derived: derives APY from 7-45 day USD price appreciation only for explicitly catalogued NAV-appreciation or lending-vault mechanisms with an actual USD return reference and no intentional holder-return gap. FPI and ISC retain explicitly reviewed USD-based variable-NAV exceptions. XGLD has no USD-price fallback: gold's USD appreciation is not its XAUt return. USD drift also cannot measure distributed rewards or rebasing yield
- Tier 4 — Rate-derived: for dividend-distributing and Treasury-tracking tokens, derives APY from the selected benchmark registry entry net of known fee spreads, using USD by default, product-specific EFFR where configured, 3-month compounded €STR for EUR pegs, 3-month compounded SARON for Swiss-franc pegs, the CBR key rate for RUB pegs, and BIST TLREF for TRY pegs. Product-input freshness is checked independently of the PYS comparison hurdle: fresh EFFR cannot refresh a stale T-bill product input, and a hardcoded fallback cannot produce a product APY candidate. Non-USD products independently require the USD normalization reference. These dependencies are assessed consistently at publication and on API reads
Weighted pool groups use one complete TVL universe for total, base, and reward APY. A missing reward is zero only when that pool's base already covers its total; otherwise an unresolved component stays unavailable without discarding the measured total. Rewards from a small pool are never attributed to the entire group.
Deterministic and curated paths can all contribute rows, then a confidence-weighted arbitration layer chooses the best row. Divergent discovered or fallback sources can be demoted or rejected when an eligible canonical source disagrees materially; rejected evidence cannot veto a fresh source. Protocol-native lending venues do not outrank native wrapper yields merely by querying on-chain state. Evidence quality precedes confidence; fixed-yield alternatives are demoted before those comparisons. A non-rejected curated explicit pool takes precedence over auto-discovered candidates of the same asset and yield type, including an incumbent; discovery remains available as an alternative. Within a tied tier, risk-adjusted utility is compared when either source has an operator-provided penalty, otherwise APY and TVL break ties. Resolv / USR-linked lending-opportunity venues are excluded from publication entirely. Published lending-opportunity, fixed-yield, and structured-tranche rows must also pass a final resolve-stage measured venue-TVL gate after tracked, explicit, auto-discovered, supplemental, and linked-variant candidates are assembled. sourceTvlUsd must clear the higher of the chain floor or 0.1% of current tracked supply; null or non-finite TVL fails closed, and structured-tranche floors augment Royco's bespoke market/vault floors. The supply-relative floor applies to every peg currency, including GOLD/SILVER, because tracked supply is USD-denominated. Holder-versus-deposit typing is assigned before this gate. Curated receipt sources retain holder yield; auto-discovered pools remain lending opportunities because symbol and deployment matches do not establish receipt ownership. A parent-token projection is a deposit opportunity, not passive yield on plain holdings. An underlying-address match alone identifies the deposit asset, not ownership of a differently named receipt: native fallback also requires the tracked instrument's exact symbol, so Royco's senior tranche is not promoted into apyUSD holder yield. ZCHF's Frankencoin Savings row likewise requires a savings deposit; the curated Ethereum venue wins over auto-discovered Gnosis, which stays an alternative. Third-party opportunities stay with the asset that owns the venue, and explicit lending overrides publish only for active assets.
Yield-bearing coverage is now explicitly inventoried per asset. If no reliable runtime source exists, the asset is marked as an intentional gap rather than silently disappearing from audit coverage. HedgeCore sUSD is an intentional gap: its gross Venus quote is quarantined because on-chain rate interfaces revert and the documented 93% pass-through does not establish holder-return equivalence.
Royco Dawn tranche rows are opportunity rows, not stablecoin registry additions. Senior rows are capped at or below the underlying Safety Score; junior rows receive first-loss, utilization, coverage, market-status, drawdown, TVL, withdrawal, explicit access, and venue-posture penalties. These tranche scores are used by PYS for the opportunity row only.
Deterministic rows keep their own source identity (`onchain:<stablecoinId>`) rather than sharing a pool UUID with curated sources, so source-aware history and previous-rate lookups stay isolated when both paths coexist. Linked variants and protocol-specific on-chain rows also preserve their exact modern keys; only pre-source-key history and the named LUSD legacy alias normalize to a parent deterministic key.
Trailing APY metrics are computed from source-specific history rather than a mixed coin-level series, so source switches no longer contaminate the displayed 7d/30d averages.
Read-time data-stale warnings are also cadence-aware: core families attach only after three missed sync-yield-data intervals (about 6 hours at the current publisher), while price-derived rows wait 30 hours because they are backed by daily supply_history snapshots and rate-derived rows wait 36 hours for the daily benchmark producer. Each source class also emits a midpoint aging warning (27h price-derived, 30h rate-derived) once an observation misses its refresh slot but has not reached the stale bound. Ordinary exchange-rate anchors expire after 14 days; price-derived and Midas/Ondo NAV anchors remain valid through their configured 45-day comparison window.
Freshness eligibility is applied before confidence arbitration. A stale deterministic candidate cannot beat a fresh curated candidate, and every benchmark used by a published row is evaluated independently. Retained market benchmarks can remain score-bearing but degraded within their freshness bounds; expired source or benchmark evidence is NR. Missing critical venue, market-size, or tranche evidence also withholds PYS without hiding an otherwise eligible opportunity.
Calculation mode and evidence class are separate. Exchange-rate math can be deterministic while the product estimate remains a modeled proxy; fresh direct first-party, on-chain, and curated observations therefore outrank a modeled proxy on evidence quality. Rankings label evidence as rated, estimated, partial, or NR. Missing critical freshness or Safety evidence cannot produce an exact PYS.
Pharos Yield Score (PYS)
benchmarkSpread = apy30d − benchmarkRate
hurdleRebase = usdBenchmarkRate − benchmarkRate (0 for USD-currency rows or missing rates)
effectiveYield = max(0, apy30d + benchmarkSpread × 0.25 + hurdleRebase)
sourceRiskPenalty = deriveOrResolve(sourceRisk, neutral=1, max=2.5)
rowUtility = effectiveYield / sourceRiskPenalty
riskPenalty = max(0.5, (101 − safetyScore) / 20)
yieldEfficiency = rowUtility / (riskPenalty ^ 1.75)
sustainability = max(0.3, 1.0 − apyVarianceScore)
PYS = clamp(round(yieldEfficiency × sustainability × scalingFactor), 0, 100)
APY above the 300% scoring envelope or non-finite effective yield is unavailable, not a zero score. Every withheld score carries an NR reason; a valid score that rounds to zero remains a measured 0.
- Effective yield keeps raw APY as the anchor and adds 25% of the row's benchmark spread, then swaps the local hurdle for the USD risk-free rate (v8.43). A peg that only pays its own central-bank rate scores like a USD row holding the T-bill rate, and equal benchmark-relative excess scores equally in every currency. This is the covered-interest-parity reading of excess yield: it assumes a frictionless hedge and ignores FX basis. The rebase term is zero for USD-currency rows, including EFFR comparisons, or when either required rate is unavailable
- Source-risk penalty uses nested source-risk evidence from measured reward share, source depth, freshness, source switching, bootstrap history, and sourced venue tier where available. History maturity counts distinct UTC observation days rather than raw hourly samples, then clamps the combined penalty to 1–2.5 while treating missing evidence as neutral
- Yield efficiency rewards higher APY relative to the opportunity and coin risk profile — source-risk-adjusted row utility is divided by the curved safety penalty so weaker safety grades need much more effective yield to compete
- Consistency penalizes volatile trailing yields while favouring measured consistent returns. It is unavailable, and PYS is NR, until at least two trailing observations exist; a near-zero mean or non-finite variation also withholds the score. Measured zero variance keeps full credit
- Scaling factor is a global constant that normalises scores into a readable 0–100 range after the steeper safety curve is applied
NAV Token Handling
NAV-appreciating tokens (e.g. sDAI, wUSDM, BUIDL) use live report-card scores when the safety framework has enough data for them, including NAV-aware report-card coverage. The default safety baseline of 40 (NR) is a conservative missing-safety fallback with an explicit provenance reason; fresh rows retain an estimated PYS until report-card hydration supplies a full safety assessment.
See the mechanism explainers for tokenized Treasury (T-bill) designs and tokenized credit funds.
Limitations
- Trailing averages require sufficient history — newly tracked coins retain a limited-history penalty until 7 distinct UTC observation days accumulate
- History before v8.31 lacks the full benchmark, source-risk, and scaling input snapshot and is labeled legacy-partial; later points store versioned inputs for exact PYS recomputation
- Rows carrying `safety-unrated` or `opportunity-evidence-missing` remain estimated until the missing safety or market-risk evidence is reviewed; stale source and benchmark evidence remains PYS NR
- Some DeFiLlama and protocol-native surfaces still depend on upstream asset metadata completeness; the resolver now drops ambiguous candidates rather than guessing across duplicate symbols
- The LUSD B.Protocol Stability Pool row is conservative by design: it includes projected LQTY incentives only and excludes ETH liquidation gains
- The Base Dollar Liquity V2 Stability Pool row is conservative by design: it includes 75% of accrued borrower interest only, requires complete five-branch reads, and excludes upfront borrowing fees and liquidation collateral gains
- Price-derived APY (Tier 3) can be noisy for low-liquidity NAV tokens
Version increments when depeg thresholds, confirmation policy, peg-score formula terms, or DEWS signal composition or score-affecting input semantics (including TVL-measurement comparability) change.
PegScore observes the past and present by scoring realized peg behavior, while DEWS is forward-looking and scores pre-price and live-market depeg stress signals.
Depeg Tracker combines live event detection with a universal 15-minute onset confirmation window, source-trust rules, and a per-coin peg score that penalizes time off peg, event severity, active depegs, and unstable event spread. Pending depeg confirmation checks sustained same-direction observations, independent CoinGecko evidence when the primary does not already use CoinGecko, supported native-peg quotes, Binance tickers, trusted aggregate DEX prices, and large challenger pools before promoting or rejecting candidates.
Native and USD event peaks retain comparable quote identities through confirmation, updates and recovery. Rejected pool evidence cannot supply a promoted peak, and even the single-$5M-pool confirmation exception must satisfy the opposing-group vote. Historical supply floors use timestamp-valued USD supply; displayed at-peg status follows raw trigger precision rather than rounded deviations. Complete eligible archives underpin Worst Depeg, while failed canonical projections withhold recomputation instead of replacing the accepted event universe.
Depeg Confirmation & Trust Gates
When a live event is later contradicted across the peg by a low-confidence primary price, the detector now retires the stale live row immediately and routes the replacement move through pending confirmation instead of leaving the wrong direction active.
Pending incidents are no longer write-once snapshots. While a candidate is waiting for confirmation, Pharos now preserves the original first-seen timestamp, refreshes the current last-seen state, tracks the worst same-direction move, and resets the pending row cleanly if the market flips to the opposite side of the peg.
DEX cross-validation uses explicit trust gates: detection and pending confirmation only trust fresh DEX rows with at least $1M of aggregate source TVL, while the public DEX Price Check UI requires a lighter but still non-trivial floor of $250K. Aggregate DEX rows also need deeper corroboration before they can mutate live event state: recoveries/suppression and pending confirmation now require at least two protocol-level DEX groups, and ambiguous-primary recoveries are vetoed when a large challenger pool still shows the old depeg direction. Pool challenger confirmation counts distinct protocol/source-family groups, with the documented $5M single-pool exception preserved. For already-open depegs, same-direction aggregate DEX disagreement is advisory rather than a synthetic recovery signal, so events stay continuous until the normal recovery path confirms the coin is back inside threshold.
Every onset waits beyond the full trigger threshold for at least 15 minutes, even when multiple sources already agree. Pending confirmation chooses off-chain confirmers by source family from the primary agreeSources set. CoinGecko-family primary evidence cannot be confirmed by CoinGecko again, and Pharos does not treat DefiLlama's coingecko:{id} mirror as independent. A native CoinGecko quote may initiate a pending non-USD candidate, but it cannot confirm itself: promotion also requires a fresh canonical USD price from a non-CoinGecko family to agree after normalization through the authoritative FX reference. Promoted rows store canonical keys such as temporal:15m, primary:defillama, and dex:curve for auditability.
Extreme moves of 50% or more, small-cap assets, and fresh multi-source clusters all use the same minimum 15-minute onset window. Independent source agreement can satisfy the source rule after that window, but it never bypasses temporal confirmation.
Those 15-minute windows are continuous-observation windows, not endpoint-age checks. Onset and recovery both require consecutive qualifying observations no more than 1200 seconds apart, and a longer gap resets the window to the new observation rather than counting the blind interval toward confirmation. The tolerance is deliberately wider than the 900-second producer cadence: measured start-to-start gaps for the producing job run 868–932 seconds, so a tolerance equal to one interval would reset almost every observation and suppress confirmation entirely. It stays below two intervals, so a fully missed run still resets the episode. A depeg therefore cannot be promoted with a start time backdated across an interval nobody observed, and missing data leaves an event open rather than proving recovery.
Non-USD fiat pegs use the live fiat FX rate as their primary reference whenever it is available, even when three or more same-peg assets are tracked. A peer median is only a fallback and must contain at least three contributors; thinner peer groups or an empty peer set fail closed. The same authority gate covers the displayed deviation: while no trustworthy reference is available, peg surfaces report the current deviation as reference unavailable instead of quoting a self-referential number. Once a live row is already open, a fresh non-cached multi-source primary cluster can retire it after recovery even if that source mix is still too soft to open brand-new events directly.
For supported fiat pairs with a CoinGecko native-currency quote, depeg routing checks that quote before trusting a derived USD-versus-FX move. That means BRZ-style BRL reference drift can no longer open, sustain, or confirm a live depeg when the fresh BRZ/BRL quote is near parity; conversely, the native quote can initiate a pending candidate when the USD-versus-FX path masks the native discount. Historical backfill follows the same principle for supported non-USD fiat assets: when CoinGecko exposes a native fiat pair, replay prefers that native history and compares it directly to the native 1.0 peg before falling back to USD-plus-FX reconstruction. In that native-replay mode, Pharos uses daily points plus a two-point confirmation window across 36 hours so thin hourly native prints do not manufacture long false historical depeg streaks. Binary backfill replay also requires peak corroboration: a deeper sample replaces an open episode's peak only when another sample of that episode lands within 1,000 bps, so a lone wick between par readings cannot become the published peak.
Resolution uses hysteresis and persistence rather than the onset boundary. A live event enters recovery only at half the trigger threshold, then must remain there for 15 minutes before closing; a move back into the deadband or depeg range resets that recovery timer. This prevents near-boundary prices from repeatedly closing and reopening one incident.
How an incident closed is decided by its recorded closure reason, not by whether a recovery price happens to be stored. An explicit recovered-primary, recovered-dex, or recovered-native reason means recovered even where quote-domain policy stores no recovery price, so a genuinely recovered non-USD event is no longer misfiled as orphan-closed and excluded from duration training. Conversely, direction supersession, coverage loss, orphan cleanup, and unknown explicit closures cannot be read as recovered just because a stray recovery price is present, so they stay out of the recovered duration corpus and out of Resolver Reviewer outcomes. Legacy rows that predate recorded closure reasons keep the older price-based reading, so historical recovered labels are preserved rather than rewritten.
Live depeg events still require at least $1M of current circulating supply. Historical replay applies the same floor from historical supply snapshots, or from current stablecoins-cache supply when historical supply is absent; if neither supply source exists, backfill preserves existing rows. Current observed deviation and its authoritative reference do not depend on that event floor: sub-floor assets, and priced assets with unknown supply, still receive a measured deviation in peg and Safety Score facts. Below the floor, live event coverage remains explicitly limited. Only an observed sub-floor supply (an explicit zero included) closes an open event as coverage loss; unavailable supply preserves the lifecycle without extending trusted off-peg time.
Replay never re-persists an episode that has already been accounted for. A recomputed episode is skipped when a reviewed suppression window covers it — an operator verdict, backed by on-chain evidence, that the episode is a price-feed artifact rather than a market depeg — or when an existing live event for the same coin and direction overlaps it, since the live detector and the hourly replay read the same price series and would otherwise count one market episode twice. Skips keep the dry-run preview, the replay fingerprint, and the stored rows in agreement, and the replayed window's own delete still removes the stale backfill twin.
PegScore begins at a reviewed replay-coverage anchor when one is curated for the asset; otherwise it uses the documented age and first-observation fallbacks. Detail and tracker surfaces distinguish projected incidents from their constituent threshold crossings and publish a recent 90-day peg view whose denominator contains only observed coverage.
Since peg methodology 6.31, off-peg time stops at the last recorded trusted observation. Missing price/reference coverage or a missed producer run cannot extend a depeg interval; resumption starts a new interval rather than bridging the blind span. Unrecorded history inside legacy open events is unknown, not off peg or verified stability. Those spans are removed from the occupancy denominator and duration severity, including the recent 90-day view; occupancy is unavailable when no known time remains, and PegScore requires seven known days. Recorded historical peaks remain adverse evidence, but a stale open lifecycle alone cannot activate the current-depeg penalty.
PegScore excludes false-positive and disputed audit verdicts, but retains events with no audit data. Unknown non-null verdicts are not scoreable evidence. DDR uses the stricter policy: no-data verdicts are also ineligible there. Legacy unaudited null verdicts remain eligible in both systems.
DEWS (Depeg Early Warning System) computes forward-looking stress every 30 minutes from market, liquidity, confidence, blacklist, flow, and yield signals, with optional PSI-based amplification during systemic stress. Blacklist activity is attributed through the tracker config's canonical stablecoin ID, so same-symbol siblings do not inherit one issuer's freeze events. Both blacklist windows exclude suppressed mirror-zero tracker artifacts while retaining unsuppressed events. Hourly DEX prices remain eligible for 75 minutes, and its divergence input reuses the live depeg DEX trust floor, so fresh-but-thin rows stay visible for analytics but do not affect the score unless they pass the same `$1M` aggregate-TVL gate. The Mint/Burn Flow signal separates 30-day baseline coverage from source freshness: a fresh zero-volume 24-hour row is calm, while a mature baseline with no fresh 24-hour row is unavailable and recorded as stale. Divergence admits observed primary and trusted DEX legs independently; a stressed DEX-only observation remains market evidence when the primary is missing or nominal. Neither missing leg is a measured calm zero. The foundational stablecoins snapshot must fit its producer cadence plus runtime freshness budget; a stale, missing-clock, or invalid-clock snapshot holds the accepted generation without refreshing its timestamp. A late Yield Intelligence rankings generation is retained as last-good evidence for up to three yield producer intervals, with its generation and age recorded; beyond that it holds the generation. Malformed core persisted inputs quarantine the affected asset before scoring and contagion, while healthy peers publish an exact admitted generation. Its latest row is removed without rewriting sparse or daily history; optional unreadable pool detail only makes that component unavailable. Whole-source failures still withhold the generation, and an empty admitted cohort preserves the previous publication.
Systemic amplification requires a valid PSI sample within two producer intervals. A stale or invalid retained sample holds accepted DEWS publication instead of silently amplifying a fresh generation. Historical detection diagnostics exclude unevaluable events and disclose partial coverage; missing signal measurements and explicitly inapplicable signals remain distinct.
Historical DEWS daily snapshots do not retain the underlying DEX trust metadata needed to replay that gate exactly. When operators remediate the old thin-DEX window, the repair path refreshes current rows and prunes unrecomputable daily history back to the Mar 9, 2026 trust-floor boundary before new snapshots are published under the stricter rule.
See also: Mint/Burn Flow · Liquidity Score
PegScore focus
History: realized peg behavior
DEWS focus
Forward stress score
Refresh
Peg 15m / DEWS 30m
Preconditions & Failure Modes
Minimum data
PegScore requires >=7 tracking days; DEWS requires >=2 available signals (total weight >=0.30) plus fresh core source tables
Required sources
Peg events + tracking window inputs; DEWS consumes supply/liquidity/price plus optional flow/blacklist/yield signals
Failure behavior
PegScore can be null; DEWS returns null below signal coverage. Malformed core asset inputs are quarantined with named quality diagnostics while healthy peers publish; unavailable cohort dependencies or no admitted rows hold the previous generation
Worked examples (verified against computePegScore and computeDEWS)
PegScore input: 100-day tracking window, 1 event (2 days, 220 bps, inactive)
pegPct=98.0, severityScore=99.86, spread=0, activePenalty=0 → pegScore=99
DEWS input signals: supply=40, pool=55, liq=25, price=0, diverg=10 (others unavailable), psiScore=70
base=(0.25*40+0.2*55+0.15*25+0.15*0+0.15*10)/0.9=29.17; PSI amplifier=1.02 → DEWS=30
Result: PegScore 99 and DEWS 30 (WATCH).
Technical details: PegScore formula, DEWS signals, weights, and threat bands
PegScore
Composite 0–100 score measuring how faithfully a stablecoin holds its peg. The tracking window spans up to 4 years and first honors a reviewed replay-coverage anchor when one is curated for the asset. Without that verified anchor, PegScore prefers a curated launch date, then the earliest supply snapshot, then the first durable Pharos valid-price observation for priced assets without supply-history coverage. Young coins are not diluted across history they didn't exist for, and unobserved pre-coverage days are not silently treated as stable. Requires at least 7 days of tracking data; returns null otherwise. Scores based on 7–30 days are marked as “Early score” to signal limited history. The API additionally publishes a coverage-aware 90-day view with observed days, incidents, constituent threshold crossings, and peg percentage.
PegScore Formula
pegScore = 0.5 × pegPct + 0.5 × severityScore − activeDepegPenalty − spreadPenalty
Time-at-Peg
50%
Event severity
50%
− Penalties
active depeg + spread
PegScore
0–100
PegScore Components
| Component | Weight | Range | How it works |
|---|---|---|---|
| Time-at-Peg (pegPct) | 50% | 0–100 | Percentage of time spent at peg. Overlapping depeg intervals are merged to avoid double-counting |
| Event severity | 50% | 0–100 | Penalizes magnitude, duration, and recency of each depeg event. Per-event penalty: max(durationPenalty, magnitudeFloor), where durationPenalty = (peakBps / 100) × (durationDays / 30) × recencyWeight, magnitudeFloor = (peakBps / 2000) × recencyWeight. The floor ensures even brief depegs carry a minimum penalty proportional to their severity. Recency weight = 1 / (1 + yearsAgo) so recent events count more. Duration capped at 90 days |
| Active Depeg Penalty | subtracted | 5–50 | Applied only if an ongoing depeg exists (no end date). Scales with severity: clamp(absBps / 50, 5, 50) |
| Spread Penalty | subtracted | 0–15 | Standard deviation of peak deviations across events, scaled. Penalizes erratic, unpredictable depeg behaviour. Only applies when ≥2 events exist |
DEWS
DEWS is a per-coin, forward-looking stress score (0–100) for depeg stress. It is not a calibrated probability. It is computed every 30 minutes from 8 sub-signals. Only signals with available data participate; weights are redistributed proportionally across available signals.
Supply Velocity blends its readable 0.6/0.4 legs and Liquidity Erosion its readable 0.5/0.5 legs, dividing by the sum of available leg weights rather than counting missing deltas as calm. Coverage is 1 for full evidence, 0.6 or 0.4 for one supply leg, 0.5 for one liquidity leg, and 0 with a tagged unavailable result when neither is readable. Historical missing coverage remains unknown. Curves, dampening, signal-family weights and detector thresholds are unchanged.
Current DEX corroboration and recovery use original observations: family quotes must fit 35 minutes and aggregate contributors 75 minutes. Republishing an aggregate cannot renew undated, future or expired quotes. Conservative pool warnings remain negative-only evidence, not fresh recovery proof.
Bootstrap tolerance is one-time only. Missing optional tables can be ignored before the first successful publication. After that, stale or missing core liquidity inputs are recorded as source failures. The cron still writes rows that meet signal coverage, then marks the run degraded instead of treating the missing input as startup noise.
Mint/Burn Flow requires complete 24-hour and 30-day coverage at the published common closed-hour watermark, including explicitly admitted legacy pre-cutover windows with their weaker assurance. Both windows and dirty-hour checks share that end; freshness uses the actual window end, not its publication time. Existing freshness and valuation gates remain. An admitted fully valued zero-volume window is calm; absent or stale evidence is unavailable, with its signal weight redistributed. Restored inputs can move scores and bands in either direction; formulas and weights are unchanged.
Pool Balance Drift blends 40% balance stress, 35% average pool stress, and 25% worst single-pool imbalance among pools of at least $100K. When the top-pool detail is missing or unreadable, or no eligible pool carries a balance measurement, the worst-pool component is unavailable and the blend is renormalized over the two readable components with its coverage published, rather than counting the missing pool as perfectly balanced. A readable list with no eligible pool is an observed zero. Smoothing averages only with a previous reading built from the same components; one asset's unreadable detail never holds the whole run.
Liquidity Erosion selects the nearest positive-TVL daily observation with coverage confidence at least 0.5, within an inclusive 36 hours of the seven-day target, preserving the historical score and its date. The TVL anchor additionally requires the same liquidity-measurement epoch as the stored current observation; same-epoch minor releases remain comparable. Historical reconstruction uses its selected historical current anchor, not today's runtime version. Cross-epoch or missing-version-projection TVL evidence stays unavailable without discarding the independently eligible score. Without either historical anchor the signal is unavailable, not calm; weak public history remains visible. Corrected input availability can change new scores or bands, but retained scores are not rewritten and no replay result is claimed.
The Yield Anomaly sub-signal combines legacy warning strings with populated Yield Intelligence source-risk, source-switch, and rank-attribution stress evidence. Neutral, missing, or malformed structured yield rows remain unavailable rather than adding zero-stress signal weight.
Supply Velocity
0.25
Pool Balance Drift
0.20
Liquidity Erosion
0.15
Price Confidence
0.15
Cross-Source Divergence
0.15
Blacklist Activity
0.10
Mint/Burn Flow
0.10
Yield Anomaly
0.05
DEWS
Σ(W⋅S) / Σ(W)
0–100
CALM
0–15
WATCH
16–35
ALERT
36–55
WARNING
56–75
DANGER
76–100
Supply Velocity
0.25
Pool Balance Drift
0.20
Liquidity Erosion
0.15
Price Confidence
0.15
Cross-Source Div.
0.15
Blacklist Activity
0.10
Mint/Burn Flow
0.10
Yield Anomaly
0.05
DEWS
Σ(W⋅S) / Σ(W) — 0–100
CALM
0–15
WATCH
16–35
ALERT
36–55
WARN
56–75
DANGER
76–100
Score formula
base = sum(W_i × S_i) / sum(W_i); psiAmp = PSI < 75 ? 1 + ((75 - PSI) / 75) × 0.3 : 1; contagionAmp = same-peg first-pass bump, clamped to 1.2; preliminaryScore = round(clamp(0, 100, base × psiAmp × contagionAmp))
At least 2 available signal sources (total weight ≥ 0.30) are required; otherwise DEWS returns null.
Final DEWS is capped at WATCH (35) unless there is qualifying market-price or DEX-liquidity stress evidence: an available Cross-Source Divergence, Pool Balance Drift, or Liquidity Erosion sub-signal at least 10. An available Blacklist Activity sub-signal at least 55 also bypasses the cap as severe issuer-control evidence. Mere source availability does not qualify. With either bypass the preliminary score is final; without either, finalScore = min(preliminaryScore, 35). The final score sets the band.
Sub-Signals & Weights
- Supply Velocity (0.25) — rapid redemptions (bank run), measured from 1-day and 7-day supply contraction rates
- Pool Balance Drift (0.20) — one-sided selling pressure in DEX pools, blending balance stress, pool stress, and worst-pool imbalance
- Liquidity Erosion (0.15) — LPs fleeing, measured from 7-day score and TVL changes against a positive-TVL history row with confidence at least 0.5 within 36 hours of the target; missing anchors are unavailable
- Price Confidence (0.15) — N-source consensus failures across CoinGecko, DefiLlama list, GeckoTerminal, Binance, Coinbase, Curve on-chain, and DEX prices; maps confidence levels (high/single-source/low/fallback) to stress values
- Cross-Source Divergence (0.15) — fragmented pricing between multi-source consensus price, DEX price, and peg reference
- Blacklist Activity (0.10) — issuer emergency freeze surges for canonical stablecoin IDs with direct blacklist-tracker coverage
- Mint/Burn Flow (0.10) — redemption surge vs minting from on-chain Transfer event data; requires at least 7 baseline days and a fresh 24-hour mint/burn row, with fresh zero-volume rows contributing zero flow stress
- Yield Anomaly (0.05) — warning-signal and structured source-risk accumulation from yield spikes, divergence, TVL outflows, negative trends, reward-heavy regimes, thin/stale sources, source switches, and source-risk rank drivers
Threat Bands
- CALM (0–15) — no stress signals detected
- WATCH (16–35) — mild stress on 1-2 indicators
- ALERT (36–55) — multiple indicators elevated
- WARNING (56–75) — strong stress signals, depeg plausible
- DANGER (76–100) — severe stress across available weighted signals
Edge cases
- NAV tokens are excluded entirely (price appreciates, not pegged)
- Non-USD pegs: cross-source divergence is dampened by 0.7 (noisier FX pricing)
- Nominal par is not an observed price: without observed primary or DEX evidence, divergence stays unavailable rather than calm
- Small coins (<$50M): supply velocity is dampened via a logarithmic size factor
- Missing or stale DEX and mint/burn freshness stays unavailable; zero-current rows retire; aggregate freshness uses the newest current row while the body exposes oldest-row lag
DDR v5 reads verdicts as evidence classes, publishes competing-risk recovery odds, and grades calls against naive baselines.
When Pharos confirms an active depeg, the Depeg Duration Resolver answers two questions in order at the public forecast lock: will it come back, and if so, when. Stage 1 emits an ordinal evidence class — No break signals, Stress signals, Terminal evidence, or Insufficient Signal — from six kill signals (supply weaponization, backing impairment, freeze/seizure, reflexive death-spiral, exit collapse, issuer wind-down), each shown with the factors that drove it. Five recovery anchors (non-inflatable supply, hard collateral with live redemption, no supply anomaly, no single freeze point, proven mean-reversion) are published as context and no longer gate a tier. Predictions sealed before v5 keep their original Recovery Likely, At Risk, and Recovery Unlikely labels. K1 supply weaponization and K4 reflexive death-spiral use the seven-day supply-change proxy only under explicit supply-history-proxy coverage or legacy-unmarked null coverage; an explicit unavailable marker is unavailable evidence, not the hourly proxy.
In either direction, a terminal status or a severe issuer wind-down signal is Terminal evidence. An above-direction event whose live signed deviation is itself a below-peg break deeper than 1,000 bps is evaluated by the below-peg mapping, so a stale stored direction cannot publish No break signals for a live deep break. Otherwise, above peg, an exit-collapse signal reads as Stress signals and everything else as No break signals, even a severe kill signal. Below peg, any severe kill signal, or two or more kill signals without a strong non-inflatable-supply or hard-collateral/redemption anchor on a break deeper than 1,000 bps (the worse of the stored peak and live deviation), is Terminal evidence. Any other below-peg kill signal, or a deep break with none, reads as Stress signals. Static exit thinness — a thin route, no viable route, thin liquidity, or thin redemption capacity — caps at elevated: V9 exit capacity is measured against the dislocation’s value gap (supply times break depth) instead of the Safety Score stress request and its $1M floor, which made small-float coins look exhausted in calm periods too. Exit collapse is severe only when DEX TVL falls at least 40% from the event’s onset baseline on a thin market.
DDR uses a forecast-readiness-or-72h public contract. Active confirmed incidents show live facts before the lock, then freeze exactly one official prediction or no-call on the first healthy run with readiness score strictly greater than 0.75, or on the first healthy run at or after the 72h backstop. Health failures defer the lock instead of creating a no-call, and later current-price movement is shown as live status beside the frozen prediction rather than rewriting it. Because more rows now read No break signals, some incidents reach readiness and lock earlier than they would have under v4; the lock rule itself is unchanged. New predictions also store the raw decision inputs read at the lock, with unavailable values kept distinct from zero, so later methodology changes can be replayed over sealed history.
Stage 1 is a calibrated mechanistic rubric, not fitted machine learning. The terminal-label corpus is roughly 90 mostly month-precision deaths that do not join to a clean feature vector at the depeg moment, so the thresholds are tuned and backtested against that corpus, DDRR reviewed outcomes, and the recovered-event set rather than learned as weights. DDRv4 added issuer wind-down evidence, mechanism-gated backing impairment, V9 grade context, and event-time mint/burn context to the terminality read. Forecast readiness is a publication trigger, not a probability or confidence level. Structural mint risk reads the published Safety Score mint posture, with curated fallback when unavailable. A finding of no mint authority on a wrapper does not establish that its parent supply cannot expand.
Recovery-anchor evidence requires measured event-time supply and onset, a valid seven-day comparison and affirmative non-anomaly proof; missing evidence is unavailable, not a post-onset substitute. Training and live duration strata share run-local admitted mint posture. Overlapping and nested intervals use a monotonic union with open-member dominance, terminal-boundary closure ownership and conservative equal-end ties. Later freezes cannot relabel earlier recoveries; coarse day/month evidence must be fully settled before overriding a measured recovery. Frozen forecasts retain their original contents and identity.
Stage 2 runs only when Stage 1 is not Terminal evidence. It is an empirical landmark estimate of recovery odds over the clean incident corpus, conditioned on the depeg’s structural stratum (depth, direction, structural class, and peg currency) most-dependable-first. Labels follow canonical incident grouping. Since v5 the odds are unconditional: comparable incidents that ended terminal count as a competing outcome that never recovers, still-open and non-recovery closures are censored at their last observation, and each coin carries at most one unit of weight (a coin-weighted Aalen–Johansen estimate). The median time-to-repeg and typical range (15th-85th percentile) are read off that recovery curve and stay empty when it never reaches them, and the share not recovered within 30 days is published. Per-horizon (6h / 24h / 7d / 30d) cells are support-gated on incidents whose outcome at that horizon is already known and Wilson-bounded, so thin cells show their support state instead of a fabricated number; a horizon that fails the replay skill gate is shown as not informative. Predictions sealed before v5 estimated duration conditional on recovery and keep that meaning.
Duration history uses only timed onset and current-deviation observations, never a final peak backdated into an earlier landmark. Sparse or missing timed evidence can suppress duration bands until recalibration. These input-admission changes can move new assessments and forecast verdicts; already sealed predictions keep their original values and version stamps. Nominal prices and unavailable or nonpositive supply cannot manufacture an at-peg live input.
Seven-day and 30-day TVL trends compare the stored current and historical liquidity-measurement epochs, not exact minor-version labels. A cross-epoch baseline is unavailable evidence, not an observed exit collapse. Independent liquidity scores and volume trends remain usable. This can change new assessments and future forecasts, never already sealed predictions or their first-publication payloads.
The Depeg Duration Resolver Reviewer (DDRR) is the companion audit layer. It scores only frozen outcomes that reached first publication, while coverage metrics keep no-calls, pre-lock recoveries, missed locks, publication retries/failures, data-quality gaps, and invalidated predictions visible. Recovery-likelihood and duration accuracy are computed only where a public frozen prediction can fairly be reviewed. Rollout-active incidents that predate the DDRv2 public contract use that public-contract boundary for coverage classification, so historical terminal evidence is not counted as live missed-lock debt, and old sticky 24h policy rows remain auditable with their original lock metadata. Review rows also retain repaired and regime-split lineage, with expected-versus-observed horizon calibration shown alongside realized outcomes.
Reviewer v5 grades calls against naive baselines: recovery-call accuracy beside what a constant “will recover” forecaster would score, terminal-call counts beside terminal outcomes, and horizon Brier skill against a leave-one-out base rate. Duration error adds a median log ratio and a within-2x count, which long incidents cannot dominate. A still-open incident already past its published band is graded slower than band. Terminal evidence that was settled before the lock is counted as curation debt, not a forecast miss. Frozen v2-v4 predictions keep their contents, hashes, and methodology, but these rules can reclassify their outcomes.
Reviewer accuracy can switch to the current prediction policy without narrowing whole-universe coverage or hiding missed locks and publication debt. Per-coin counts and duration errors come from producer aggregates computed before the browse-row cap. Retained snapshots without those aggregates show unavailable until a refresh, not a track record reconstructed from the displayed sample.
DDR consumes the same confirmed depeg events as the detection pipeline; it does not run its own detection. It is a forecast from historical data, not investment advice and not a credit rating — a Terminal evidence verdict is a structural read, not a guarantee, and vice versa.
Trigger
Forecast readiness >0.75 or first healthy run at/after 72h
Readouts
Immutable DDR forecasts/no-calls + DDRR coverage and first-publication review
Update frequency
Precomputed by the dedicated compute-depeg-resolver scheduled producer every 15 minutes; served from D1 cache
Technical details: limitations and backtest gates
Supply history is daily and mint/burn coverage is partial (about 141 of 400 coins), so coins with neither usable source degrade to Insufficient Signal on supply-dependent kill signals rather than guessing. Legacy null audit verdicts remain eligible; false-positive, disputed, no-data, and unknown non-null verdicts are excluded. Corpus quality also depends on incident grouping, quarantine of flappy coins, and a minimum-severity floor. Terminal truth derives from cemetery/frozen status and the live deep-and-sustained-open pattern, never from the presence of a recovery price on a backfilled row.
Acceptance gates: Stage 1 must score Terminal evidence on clearly-attributable deaths (UST, IRON, USR) and must not on major recoveries (USDC during SVB, DAI on Black Thursday, LUSD/BOLD wobbles); Stage 2 median and typical ranges must contain realized resolution times at the documented coverage rate, with leave-one-coin stability and a stable canonical lineage hash. Abandoned slow-deaths that never present a sharp depeg are out of scope. The full methodology, limitations, and backtest plan live in docs/depeg-resolver.md.
v5 replay evidence is small and advisory. Re-mapping 74 forecast-scored sealed outcomes under the v5 rules gave 71 correct calls against 61 under v4 and 70 for a constant “will recover” baseline, with false terminal calls falling from 11 to 1. A time-ordered duration replay (46 to 121 incidents per landmark) lowered Brier error against v4 in every landmark and horizon cell and beat a pooled base rate per horizon, but odds remain overconfident at long horizons (30-day odds averaged 0.90 against 0.79 observed at the 1-hour landmark) and typical-range coverage stays below its nominal 70%. Terminal-call skill cannot yet be measured: only three forward-looking terminal outcomes exist.
DDRR does not replay today’s resolver over historical rows. It compares the frozen first-published DDR outcome with the later event outcome, keeps append-only errata visible, preserves immutable trigger/readiness metadata, and separates policy-universe coverage from scoreable recovery/duration accuracy. If a health deferral is followed by recovery or reliable terminal evidence before a healthy lock, the row remains a pre-lock coverage outcome rather than a retroactive forecast. Rollout-active incidents that already existed before DDRv2 use the public-contract effective timestamp as the fairness boundary for the same pre-lock coverage test.
Version increments when classification ownership, tracked contracts, event parsing rules, cursor semantics, or amount-enrichment logic change.
The Blacklist Tracker monitors issuer intervention events across USDC, USDT, PAXG, XAUT, PYUSD, USD1, USDG, RLUSD, U, USDtb, A7A5, FDUSD, BRZ, AUSD, EURI, USDQ, USDO, USDX, AID, TGBP, EURC, BUIDL, USDP, TUSD, NUSD, EURCV, USDA, USAT, AEUR, XUSD, XAUm, JPYC, FRXUSD, and FIDD contracts, including blacklist, unblacklist, block/unblock, account pause/unpause, and destroy/wipe actions across supported EVM and Tron networks.
Methodology revisions document changes to event coverage, cross-chain decoding behavior, cursor safety policies, event-time amount attribution rules, and the separate freeze-ledger snapshot used for the public summary and quarterly chart, including the reconciled `kyc.rip` / `stables.rip` bootstrap for ETH USDC, ETH USDT, and TRON USDT. Current non-USD or commodity snapshot valuations use coin-specific quotes; historical event-time USD valuation requires a quote attributed to the event, never today's price.
Historical quantities require evidence at the event's execution position. Amountless EVM freezes and releases use every affected-account transfer in the event block, reconciled exactly against balances before and after the block, then replay transfers before the target log. Ambiguous positions, negative intermediate balances or failed reconciliation leave the amount unavailable. Recovered zero is measured zero, but EURC mirror suppression still requires emitted event-time zero. Previously unproved EVM freeze and release amounts receive bounded re-review; suppressed history stays untouched. Emitted destroy amounts retain their unambiguous receipt proof, and current-balance snapshots remain independent.
Public frozen totals are last-known successful freeze-ledger snapshots rather than live balance guarantees. Provider refresh failures preserve the previous successful value and surface data-quality context. New snapshot identities are contract/config scoped, while older rows can use legacy symbol/chain/address fallback until remediation catches them up.
Canonical EVM log and Tron account identities count once across events, active state and snapshots. Tron storage uses validated lowercase byte addresses, with Base58 reserved for provider calls and display. Unknown USD amounts remain unavailable; mixed totals disclose partial valuation coverage, and all canonical tracked gold cohorts, including XAUM, contribute when observed. Explicit gold zero-substitution provenance remains distinct from an observation failure.
Bounded cursor progress is not caught-up chain coverage: an incomplete scan cannot renew success clocks or publish a fresh summary. Budget-skipped and order-withheld snapshots are retried from durable maintenance debt. Lifecycle and amount ordering require numeric local positions and proven cross-transaction order; RPC event timestamps require matching block hashes. A wholly unobserved freeze-exposed population is unavailable, never $0.
Blacklistability uses the report-card four-status model: Yes, Upstream, Possible, and No. The sourced `blacklistabilityReview.reviewedStatus` is the sole status authority; the generated client status is a direct projection, while Safety Score V10 consumes the review as evidence rather than a fallback verdict.
Reviews measure each deployment against the Safety Score material-supply threshold (currently 10%), never adding sub-threshold deployments together. Missing shares are measured before an unresolved deployment is treated as material. Yes requires a current holder-targeted power: blacklist, freeze, seizure, forced transfer, enforced transfer allowlist or sanctions oracle, active holder-targeted exit gate, or a current role member able to burn arbitrary holders' balances. An admin able to assign denylist state directly to a victim already has an active blacklist power.
Without Yes, Possible covers global transfer pauses, any admin- or DAO-upgradeable token implementation regardless of delay, grantable empty/incapable operator roles, dormant configurable transfer/exit gates, material canonical-bridge burner surfaces and issuer-shipped consensus halts. A vault/share's own globally pausable redemption or withdrawal is Possible too. Deposit-only gates, permanently abdicated setters, protocol-global redemption or peripheral PSM/swap switches, mint-only authority and increase-only rebases are not holder-facing controls.
Upstream applies only without direct Yes or Possible: a holder claim on an exposed declared parent, full CEX reserve custody, or strictly more than half of measured external backing terminating in issuer or custodian control. Qualifying collateral counts categorically at its full share; DAO-only collateral controls do not count. Custodial fiat, bank/fund/T-bill claims and allocated physical commodities count. CDP/lending books use debt-weighted exposure; reserve-backed tokens use published composition. Split LPs by constituent value; exclude the coin and its own wrappers/savings shares from both numerator and denominator because they are not external backing. Different tokens from the same issuer count at their own status. Unmeasurable reserves never establish Upstream. No means none of these tests establishes exposure, not proof that unresolved reserves are free of risk.
Reviews name deployments, measured shares, current authorities and reachable controls, pin decisive on-chain reads, and cite the parent or measured reserve basis and denominator. Upstream and Possible describe exposure, not an asserted active blacklist on this token. See the full FreezeWatch decision procedure.
Data sources
Etherscan v2, chain RPC / dRPC log scans, and TronGrid
Tracked events
Freeze, Unfreeze, Wipe (AddedBlackList, RemovedBlackList, DestroyedBlackFunds)
Chains
Ethereum, Tron, + supported EVM L2s
Update frequency
Every 6 hours (`3 */6 * * *`) + backlog reconciliation
Preconditions & Failure Modes
- Minimum data
- At least one indexed block range per chain
- Required sources
- Block explorer event logs with valid ABI decoding
- Failure behavior
- Preserves last-known snapshots; stale/provider-failed status shown
Worked example: blacklist event reconciliation
Event: AddedBlackList(0xabc...def) on USDT (Ethereum), block 19,234,567
Ledger update: +1 frozen address, total frozen balance recalculated from on-chain balanceOf
Cross-chain: Tron USDT freeze count unchanged → combined freeze count increments by 1
Result: Dashboard shows updated freeze count and reconciled total across chains.
Technical details: freeze ledger reconciliation
The blacklist tracker stores event-time rows separately from a persistent freeze-ledger snapshot. Each cron run processes new events since the last indexed block; new blacklist rows refresh last-known snapshots, while later unblacklist events do not delete historical ledger rows.
Backlog sync handles gaps from missed cron runs or RPC failures by replaying events from the last confirmed cursor. Tron events use a separate ingestion path due to the TRC-20 event format differences, and missing Tron account/token-balance data remains provider-missing rather than being converted to zero.
State transitions use timestamp, block number, numeric EVM block-global log index, and batch-array position, never transaction-hash order. Tron events from different transactions in the same block use confirmed within-block transaction positions when observed from chain data; transaction-local indices alone cannot prove that order. Missing or contradictory positions keep state explicitly ambiguous and excluded from confirmed active counts. A bounded maintenance pass resolves both historical and new conflicts without rewinding scan cursors. Malformed required direction, address, array, or identity evidence holds the scan frontier for two observations; the third distinct scan durably quarantines the raw evidence and reason before continuing. Valid empty address arrays do not hold the frontier.
The public-facing freeze totals combine per-chain counts into a single figure. Destroy/seize events can overwrite the stored amount when they provide better seized-value evidence, and the public summary reads the persistent ledger rather than treating unfreeze rows as historical deletion. The legacy active fields remain available for the local net-active state machine, but public freeze exposure should use the tracked ledger fields.
Version increments when factor weights, tier assignments, or sub-factor formulas change.
The Chain Health Score is a 0–100 composite that rates each blockchain’s stablecoin ecosystem across five weighted factors. It answers: how healthy, diverse, and resilient is the stablecoin mix on this chain?
Only a fresh, accepted V10 publication contributes Safety quality. Missing, held, stale, or invalid V10 leaves quality and the composite NR; Chain Health never falls back to V8 or a stale score map.
See also: Liquidity Score
Score range
0–100 (NR when safety-score coverage < 50% or peg coverage < 95%)
Refresh cadence
15-minute stablecoins cache cadence; `/api/chains` freshness budget is 1800 seconds
Dependencies
DefiLlama supply, Pharos Safety Scores, peg rates, L2BEAT chain-risk snapshot
Formula & Weights
Composite formula
healthScore =
0.30 × quality
+ 0.20 × chainEnvironment
+ 0.20 × concentration
+ 0.20 × pegStability
+ 0.10 × backingDiversity| Factor | Weight | What it measures |
|---|---|---|
| Quality | 30% | Supply-weighted average of Pharos Safety Scores for stablecoins on the chain. Not-rated supply is excluded and the average renormalizes over rated supply. Returns null if rated supply < 50% of total. |
| Chain Environment | 20% | Rates the chain’s own infrastructure quality with L2BEAT first for matched scaling projects, using stage plus Sequencer Failure, State Validation, Data Availability, Exit Window, and Proposer Failure. Unmatched chains fall back to the Pharos resilience tier model. |
| Concentration | 20% | 100 × (1 − HHI) where HHI = Σ(market share)². A single stablecoin scores 0; perfectly even N coins score 100×(1−1/N). |
| Peg Stability | 20% | Supply-weighted average of observed per-coin peg proximity: max(0, 100 − deviationBps/5). Flagged NAV tokens are excluded because their price appreciates by design. Missing prices or peg references receive no imputed score. Zero observed supply makes this factor NR; partial coverage shows the observed-only factor and peg-referenced coverage. The composite is published when peg coverage is complete or at least 95% of chain supply, and stays NR below that share; an unobserved share that small can move the composite by at most 1 point, and it remains disclosed beside the score. |
| Backing Diversity | 10% | Normalized Shannon entropy across the two active backing types (RWA-backed and crypto-backed). 0 for monoculture, 100 for an even split. |
Chain environment sources
The same stablecoin can have different security properties on different chains. A fully on-chain, censorship-resistant stablecoin on Ethereum mainnet may lose those guarantees on an L2 with a centralized sequencer. The chain environment factor captures this.
Matched L2BEAT scaling projects use a static snapshot of L2BEAT stage and risk rows. The environment score blends 40% stage score with 60% average risk sentiment across the five L2BEAT fields. L2BEAT is not fetched live during request handling.
| Component | Mapping |
|---|---|
| Stage | Stage 2 = 100, Stage 1 = 80, Stage 0 = 55, not applicable or under review = 50 |
| Risk fields | Sequencer Failure, State Validation, Data Availability, Exit Window, Proposer Failure |
| Risk sentiment | Good = 100, warning = 60, bad = 20, neutral or under review = 50 |
Chains without a matched L2BEAT snapshot continue to use the fallback tiers below.
| Tier | Score | Criteria | Examples |
|---|---|---|---|
| Tier 1 | 100 | Highly decentralized, battle-tested, censorship-resistant L1 | Ethereum |
| Tier 2 | 60 | Established chains with moderate centralization (default for unlisted chains) | Solana, BSC, Tron, Avalanche |
| Tier 3 | 20 | Unproven, known centralization issues, or compromised security | PulseChain, Harmony, BitTorrent |
Health bands
| Band | Score Range | Interpretation |
|---|---|---|
| Robust | 80–100 | Strong, diversified stablecoin ecosystem on quality infrastructure |
| Healthy | 60–79 | Good ecosystem with room for improvement |
| Mixed | 40–59 | Moderate concerns — concentration, quality gaps, or chain risk |
| Fragile | 20–39 | Significant ecosystem weaknesses |
| Concentrated | 0–19 | Minimal diversity or critically weak infrastructure |
Worked example: Ethereum vs PulseChain
Ethereum (Tier 1)
quality = 72 (supply-weighted safety scores across ~190 coins)
environment = 100 (tier 1 — gold standard for decentralization)
concentration= 66 (USDT ~48%, USDC ~33% → HHI ≈ 0.34)
pegStability = 98 (most coins very close to peg)
diversity = 35 (overwhelmingly RWA-backed)
health = 0.30×72 + 0.20×100 + 0.20×66 + 0.20×98 + 0.10×35
= 21.6 + 20 + 13.2 + 19.6 + 3.5 = 77.9 → 78 (healthy)PulseChain (Tier 3)
quality = 72 (rated supply only — not-rated coins excluded)
environment = 20 (tier 3 — unproven, centralized)
concentration= 67 (DAI ~39%, rest ~12% each)
pegStability = 98 (coins on peg)
diversity = 61 (mixed backing types)
health = 0.30×72 + 0.20×20 + 0.20×67 + 0.20×98 + 0.10×61
= 21.6 + 4 + 13.4 + 19.6 + 6.1 = 64.7 → 65 (healthy)
→ Chain environment alone creates a 16-point gap vs Ethereum.Definitions
The terms used across Pharos, A–Z. The same text powers the tooltips on the site; methodology links point to the section above that owns each metric.
A
- Algorithmic Stablecoin
A stablecoin that uses on-chain mint/burn rules (not 1:1 backing) to defend its peg. Generally riskier; UST/Terra was the canonical failure.
- AMO (Algorithmic Market Operations)
Smart contracts that programmatically mint or burn stablecoins to manage the peg without direct user redemption.
- Attestation
A periodic statement, typically by an audit firm, that the issuer's reserves match circulating supply at a point in time. Weaker than a full audit.
B
- Bank Run Gauge
A market-cap-weighted composite of each tracked stablecoin's Pressure Shift: a signed -100 to +100 signal. Scores below -10 indicate worsening redemption pressure; scores ≥ +10 indicate improving issuance pressure. It measures unusual redemption pressure, not literal net direction, and is unavailable when data is insufficient.
Methodology v6.31See also: Pressure Shift, Mint/Burn Flows
- Basis points (bps)
The unit Pharos uses for peg deviation: 100 basis points (bps) equal 1%. Depeg values are the peak signed deviation from the target peg during the event window.
Methodology v6.39See also: Depeg
- Basis Trade
Capturing the spread between spot and futures, typically by holding spot and shorting perps. Yield = the funding rate paid by perp longs.
- Blacklist Tracker
Pharos's record of issuer interventions (freeze, unfreeze, pause, block, destroy) drawn from on-chain freeze-ledger events on supported centralized stablecoin contracts, normalized by chain, action, native amount, and USD amount. Published as FreezeWatch and on each coin's page; events outside the supported asset set are excluded.
MethodologySee also: Freezable
- Bluechip
Pharos's editorial roster of stablecoins that are A-tier in both the external Bluechip reference rating and the Pharos Safety Score. It is an intersection of two current feeds, not an average or a separate floor model: if either input stops clearing A-tier, the asset leaves the roster.
MethodologySee also: Safety Score
- Bridge
Infrastructure that lets a stablecoin move between chains. Carries smart-contract and validator risk that the issuer often doesn't control.
C
- CDP (Collateralized Debt Position)
A vault that mints stablecoins against locked crypto collateral, liquidated if collateral value falls below a threshold.
- Chain Health Score
A 0-100 score for the quality of a blockchain's stablecoin ecosystem, weighting five factors: supply-weighted Safety Score quality, chain environment, supply concentration, peg stability, and backing diversity. Chains whose supply is concentrated in few assets score lower.
- Custody
Who physically holds the backing assets. Institutional custodians (BNY Mellon, BlackRock, Copper, Ceffu) carry different counterparty risk profiles.
D
- DDR (Depeg Duration Resolver)
For each confirmed depeg incident, DDR publishes a Resolution Outlook (No break signals, Stress signals, Terminal evidence, or Insufficient Signal) from transparent mechanistic rules and, when recovery is plausible, recovery odds and an Expected Duration band from comparable past depegs, counting those that never recovered. Each incident gets one immutable prediction, sealed at forecast readiness or the 72-hour backstop. Predictions sealed before v5 keep their original Recovery Likely / At Risk / Recovery Unlikely labels. The verdict is a structural read, not a probability or investment advice.
Methodology v5.1See also: DDRR (Depeg Duration Resolver Reviewer), Depeg
- DDRR (Depeg Duration Resolver Reviewer)
The audit companion to DDR. It compares each sealed, first-published DDR prediction with the incident's later canonical outcome, and reports coverage (how many incidents received a call) separately from accuracy (recovery-call accuracy against a constant "will recover" baseline, duration error, and horizon calibration and skill). Deaths already settled before the lock count as curation debt, not forecast misses. It never re-runs today's resolver over old events.
- Delta-Neutral
A position constructed so small price moves in the underlying don't change its value. Synthetic-dollar stablecoins like USDe use this design.
- Depeg
A deviation from peg that crosses the detection threshold (100 bps for USD pegs, 150 bps for other pegs) and passes multi-source confirmation. Contradictory secondary evidence is treated as contradiction, not weak support. Events with a peak deviation of 500 bps or more get a dedicated incident page.
Methodology v6.39See also: Basis points (bps), DEWS (Depeg Early Warning System), DDR (Depeg Duration Resolver)
- Dependency Risk
How a stablecoin's reserves or mechanism rely on other stablecoins. Dependencies are causal inputs to the Safety Score rather than a standalone score: a serial wrapper cannot score above its parent, and basket exposure is weighted and bounded by reviewed materiality.
Methodology v10.40See also: Safety Score
- DEWS (Depeg Early Warning System)
A forward-looking per-coin stress score from 0 to 100, recomputed every 30 minutes from 8 weighted sub-signals: Supply Velocity, Pool Balance Drift, Liquidity Erosion, Price Confidence, Cross-Source Divergence, Blacklist Activity, Mint/Burn Flow, Yield Anomaly. Weak PSI and same-peg contagion can amplify the score before it lands in a band. It is a normalized stress score, not a calibrated probability.
Methodology v6.39See also: DEWS bands, PSI (Pharos Stability Index), Depeg
- DEWS bands
The five DEWS zones, from cool to hot: Calm up to 15; Watch up to 35; Alert up to 55; Warning up to 75; Danger above 75. Band names are proper nouns in Pharos copy; lowercase “calm” or “watch” is ordinary English and never names a band.
Methodology v6.39See also: DEWS (Depeg Early Warning System)
E
- Effective TVL
TVL adjusted for mechanism quality, balance health, and pair quality to estimate usable exit depth under stress.
Methodology v6.98See also: Liquidity Score
F
- Freezable
A stablecoin is freezable when its issuer or protocol admin can freeze, block, seize, or destroy user balances through resolved on-chain controls. Pharos also distinguishes upstream exposure (a collateral or parent asset can be frozen) and possible exposure (mutable or pause-capable admin surfaces without confirmed address-level freezing). Freezability is a trust and centralization risk, not an instant harm.
Methodology v10.40See also: Blacklist Tracker
- Funding Rate
Periodic payment between perpetual-futures longs and shorts that keeps the perp price tracking spot. Positive = longs pay shorts.
L
- Liquidation
Forced closure of an overleveraged CDP or perp position when collateral falls below the safety threshold. Common in CDP-backed stablecoins.
- Liquidity Score
A 0-100 score for how easily a stablecoin can be exited through DEX markets, combining TVL Depth (30%), Volume (20%), Pool Quality (20%), Durability (20%), Diversity (10%). Thin, stale, or identity-poor pools stay visible for diagnostics but receive no scoring weight. It is an aggregate market score, not a single-route execution test.
Methodology v6.98See also: Effective TVL, Redemption Route Score
M
- Mint/Burn Flows
Net mint-versus-burn flow on a stablecoin's supported issuance-chain contracts. Transfers are classified into mint, burn, bridge-mint, bridge-burn, atomic round-trip, and ignored noise, so the flow reflects meaningful supply movement rather than mechanical churn. Raw direction and pressure versus the coin's own baseline are related but separate metrics.
Methodology v6.31See also: Pressure Shift, Bank Run Gauge
- Money-Market Fund (MMF)
A SEC-registered short-duration fund holding T-bills, repos, and cash. Used as the reserve vehicle for several major fiat-backed stablecoins.
O
- Overcollateralization
Holding more collateral than the value of stablecoins issued, so a price drop in collateral doesn't immediately undercollateralize the system.
P
- Peg Score
A 0-100 score for a stablecoin's historical peg behavior, combining time-at-peg (50%) and event severity (50%), minus penalties for active depegs and erratic behavior. It needs at least 7 days of tracking; scores under 30 days are marked early. NAV tokens return NR because they are not meant to hold a fixed price. Peg Score enters the Safety Score as a multiplier.
Methodology v6.39See also: Depeg, DEWS (Depeg Early Warning System), Safety Score
- Perpetual Future
A derivatives contract with no expiry, kept aligned to spot via a periodic funding-rate payment between longs and shorts.
- Pressure Shift
A signed score comparing a stablecoin's current 24-hour mint/burn pressure with its last 30 fully closed daily baselines. Positive means stronger-than-normal mint pressure; negative means stronger-than-normal redemption pressure.
Methodology v6.31See also: Mint/Burn Flows, Bank Run Gauge
- Proof of Reserves
Issuer-published evidence — independent audit, real-time on-chain feed, or self-reported attestation — that circulating supply is matched by reserve assets.
MethodologySee also: Attestation
- PSI (Pharos Stability Index)
An ecosystem-wide condition score from 0 to 100, recomputed every 30 minutes. It subtracts penalties for active depeg severity, depeg breadth, and DEWS stress breadth, then adds a bounded market-cap trend term. The result maps into 6 condition bands from BEDROCK to MELTDOWN. PSI is conservative by design: one small depeg should not move the index, but broad simultaneous stress should.
Methodology v3.67See also: DEWS (Depeg Early Warning System), Depeg
- PSM (Peg Stability Module)
A protocol module that lets users swap one stablecoin for another at a fixed rate, defending the peg through arbitrage.
- PYS (Pharos Yield Score)
Yield per unit of risk, from 0 to 100. It starts from APY, adds a weighted slice of benchmark spread, re-bases the local hurdle onto the USD risk-free rate, then discounts by source risk, stablecoin safety, and yield consistency. It is not a recommendation or a safety verdict: a low-grade coin can rank high because it pays a lot for a lot of risk.
Methodology v8.52See also: Safety Score
R
- Redemption
Exchanging stablecoin tokens for the underlying asset (e.g., 1 USDC -> $1 USD wired to your bank) directly with the issuer.
- Redemption Route Score
A standalone score for a stablecoin's issuer or protocol redemption route, rated on access, settlement, execution certainty, capacity, output quality, and cost. It is a diagnostic: the Safety Score Exit pillar separately re-evaluates exact same-notional route evidence under its own policy.
Methodology v4.52See also: Safety Score, Liquidity Score
- RWA (Real-World Asset)
Off-chain assets — typically U.S. Treasuries, repos, or bank deposits — held as backing for an on-chain stablecoin.
S
- Safety Score
Pharos's V10 risk grade for a stablecoin. It evaluates Backing (40%), Exit (35%), and Economic Control (25%) with bounded aggregation, so a strong pillar cannot average away a weak material path. Peg behavior, dependencies, wrappers, evidence quality, track record, and structural caps can then only constrain the result. Grades run from A+ (87+) to F (below 40); NR means required evidence is insufficient.
MethodologySee also: Peg Score, Dependency Risk, Mint Authority Score
U
- U.S. Treasury
Short-dated U.S. government debt — the lowest-credit-risk USD-denominated reserve asset, used as the dominant backing for fiat-pegged stablecoins.
Y
- Yield-Bearing Stablecoin
A stablecoin whose units accrue value over time rather than always trading at the peg. Examples: sUSDe, sUSDS, USDM.
Methodology FAQ
How does Pharos grade stablecoins?
Safety Score V10 evaluates Backing (40%), Exit (35%), and Economic Control (25%). Exit stresses 5% of usable supply within $1M–$25M. Route materiality separately uses 5% of supply within $100K–$25M: capacity below both 1% of that amount and $100K gets no route credit. A material route with valued completion below 1% of the actual stress request is capped at 50 before confidence. Bounded aggregation limits how far strong pillars lift a weak path; peg behavior, caps, dependencies and wrappers can constrain the result. At least two usable pillars permit rating, pricing an unavailable third as uncertainty; fewer are a technical Pipeline gap, while genuine required-parent unavailability can yield NR. Grades range from A+ (87+) to F (0–39). A Provisional label marks more than 50% unknown-priced scoring weight without changing the score.
How is the Pharos peg score calculated?
The peg score is a composite 0–100 measure combining time-at-peg (50%) and event severity (50%), minus penalties for active depegs and erratic behavior. The tracking window spans up to 4 years but begins at a reviewed replay-coverage date when one exists; otherwise it falls back to the coin's age or earliest durable observation. It requires at least 7 days of tracking data; scores under 30 days are flagged as early.
What is the DEWS early-warning system?
The Depeg Early Warning System (DEWS) combines eight weighted 0-100 sub-signals: supply contraction, pool stress, liquidity erosion, price confidence, cross-source divergence, blacklist activity, mint/burn flow stress, and yield warnings. Available signals are blended with redistribution, then PSI and same-peg contagion can amplify the score. Bands are CALM <=15, WATCH <=35, ALERT <=55, WARNING <=75, and DANGER above 75.
How is the liquidity score calculated?
The liquidity score evaluates how easily a stablecoin can be exited through DEX markets. It combines TVL depth (30%), 24-hour volume activity (20%), pool quality (20%), durability (20%), and pair diversity (10%). TVL depth uses effective TVL relative to market cap, volume uses a log-scale volume/TVL ratio, pool quality measures mechanism and balance-health retention, durability blends TVL stability, volume consistency, maturity, and organic fees, and pair diversity counts distinct retained pools.
What is the Mint Authority Score?
Since methodology v9.1 mint risk is graded once, by the Safety Score V9 Economic Control pillar; the standalone Mint Authority Score is retired. The published 0-100 mint component evaluates native issuance on the canonical deployment or deployments and the controls that can expand or replace it. Representations, adapters, lockboxes, messaging, route limits, bridge upgrades, and bridge administrators are scored separately on the bridge routes they govern, even when a controller also appears in Mint Authority. Missing or unresolved required evidence stays explicit as NR rather than receiving a guessed score.
How does Pharos confirm depegs and maintain DEWS history?
Every depeg onset must remain beyond the full trigger threshold for at least 15 minutes before promotion, even when multiple sources agree. A native CoinGecko quote can initiate a non-USD candidate but cannot confirm itself; a fresh canonical USD price from a non-CoinGecko family must agree after authoritative FX normalization. Live events resolve only after 15 minutes inside a tighter half-threshold recovery band. Pharos treats opposite-side evidence as contradiction, does not count DefiLlama's CoinGecko mirror as independent, and only trusts aggregate DEX confirmation when the row is fresh and backed by at least $1M of source TVL. Historical DEWS snapshots do not retain that DEX trust metadata, so the repair path refreshes current rows and prunes unrecomputable daily history back to the March 9, 2026 trust-floor boundary when needed.
What is the Bank Run Gauge?
A market-cap-weighted composite of each tracked stablecoin's Pressure Shift: a signed -100 to +100 signal. Scores below -10 indicate worsening redemption pressure; scores ≥ +10 indicate improving issuance pressure. It measures unusual redemption pressure, not literal net direction, and is unavailable when data is insufficient.