Yield Intelligence Changelog
Full version history of Yield Intelligence methodology decisions, from v1.0 to v8.291.
Jump to VersionSections:
Latest Version
RUB Benchmark and Audit-Queue Coverage Repairs
Yield Intelligence adds a RUB benchmark lane backed by the Central Bank of Russia key-rate SOAP feed, promotes A7A5 into rate-derived coverage, repairs audited lending-opportunity pins, and exposes coverage-regression telemetry for the monthly audit workflow.
Impact Snapshot
- The benchmark registry adds optional `RUB`, sourced from the Central Bank of Russia DailyInfo `KeyRateXML` feed; RUB validation uses the same wider `[-10%, 100%]` band as TRY so high local reference rates are accepted
- `a7a5-old-vector` leaves the intentional-gap manifest and resolves through a rate-derived `CBR key-rate reserve-yield proxy (net of 1.00pp)` row with `benchmarkOverrideKey: RUB`
- `usdx-hex-trust` and `reusd-resupply` deterministic lending pins are repointed to live DeFiLlama pools, stale `doc-money-on-chain` and `pmusd-precious-metals` pins are removed, and `reusd-resupply` gets an exact-pool safety bypass with written rationale
- `bifi` and `fraxlend` join the lending allowlist from the audit-queue follow-up, while the existing APY, TVL, safety, and category gates still decide whether their candidate pools publish
v8.291Jun 11, 2026RUB Benchmark and Audit-Queue Coverage Repairs
Yield Intelligence adds a RUB benchmark lane backed by the Central Bank of Russia key-rate SOAP feed, promotes A7A5 into rate-derived coverage, repairs audited lending-opportunity pins, and exposes coverage-regression telemetry for the monthly audit workflow.
- The benchmark registry adds optional `RUB`, sourced from the Central Bank of Russia DailyInfo `KeyRateXML` feed; RUB validation uses the same wider `[-10%, 100%]` band as TRY so high local reference rates are accepted
- `a7a5-old-vector` leaves the intentional-gap manifest and resolves through a rate-derived `CBR key-rate reserve-yield proxy (net of 1.00pp)` row with `benchmarkOverrideKey: RUB`
- `usdx-hex-trust` and `reusd-resupply` deterministic lending pins are repointed to live DeFiLlama pools, stale `doc-money-on-chain` and `pmusd-precious-metals` pins are removed, and `reusd-resupply` gets an exact-pool safety bypass with written rationale
- `bifi` and `fraxlend` join the lending allowlist from the audit-queue follow-up, while the existing APY, TVL, safety, and category gates still decide whether their candidate pools publish
DetailsHide details
RUB Benchmark and Audit-Queue Coverage Repairs
Yield Intelligence adds a RUB benchmark lane backed by the Central Bank of Russia key-rate SOAP feed, promotes A7A5 into rate-derived coverage, repairs audited lending-opportunity pins, and exposes coverage-regression telemetry for the monthly audit workflow.
- The benchmark registry adds optional `RUB`, sourced from the Central Bank of Russia DailyInfo `KeyRateXML` feed; RUB validation uses the same wider `[-10%, 100%]` band as TRY so high local reference rates are accepted
- `a7a5-old-vector` leaves the intentional-gap manifest and resolves through a rate-derived `CBR key-rate reserve-yield proxy (net of 1.00pp)` row with `benchmarkOverrideKey: RUB`
- `usdx-hex-trust` and `reusd-resupply` deterministic lending pins are repointed to live DeFiLlama pools, stale `doc-money-on-chain` and `pmusd-precious-metals` pins are removed, and `reusd-resupply` gets an exact-pool safety bypass with written rationale
- `bifi` and `fraxlend` join the lending allowlist from the audit-queue follow-up, while the existing APY, TVL, safety, and category gates still decide whether their candidate pools publish
Impact Notes
- The benchmark registry adds optional `RUB`, sourced from the Central Bank of Russia DailyInfo `KeyRateXML` feed; RUB validation uses the same wider `[-10%, 100%]` band as TRY so high local reference rates are accepted
- `a7a5-old-vector` leaves the intentional-gap manifest and resolves through a rate-derived `CBR key-rate reserve-yield proxy (net of 1.00pp)` row with `benchmarkOverrideKey: RUB`
- `usdx-hex-trust` and `reusd-resupply` deterministic lending pins are repointed to live DeFiLlama pools, stale `doc-money-on-chain` and `pmusd-precious-metals` pins are removed, and `reusd-resupply` gets an exact-pool safety bypass with written rationale
- `bifi` and `fraxlend` join the lending allowlist from the audit-queue follow-up, while the existing APY, TVL, safety, and category gates still decide whether their candidate pools publish
- Same-symbol auto-lending collision blocks now protect unrelated pools such as Kava USDX vs Hex Trust USDX, Virtue VUSD vs Monad VUSD, and legacy Nexus NUSD vs Neutrl NUSD
- The monthly coverage audit now emits stale auto-lending override queue items, and sync/status metadata exposes published ranking-count deltas so coverage regressions are visible in Yield Health
- No global APY, TVL, safety, or floor policy changes were made; Binance BFUSD, Gate GUSD, Tradable notes, dEURO, and eBUSD remain deferred until stable public machine-readable APY sources or adapter paths are verified
v8.29Jun 9, 2026NAV Oracle, TRY TLREF, and Queue-Guided Coverage
Yield Intelligence adds the first Midas NAV-oracle adapter, a TRY benchmark lane backed by CBRT EVDS TLREF, rate-derived benchmark overrides for treasury-like products, structured-tranche filter cleanup, and audit-queue-driven allowlist promotion metadata.
- `mmev-midas` gains a curated `protocol-api:midas-mmev-nav-oracle` source from the issuer-listed Ethereum mMEV/USD oracle, using the oracle value as a NAV anchor with a three-day freshness guard
- The benchmark registry adds optional `TRY`, sourced from CBRT EVDS BIST TLREF series `TP.BISTTLREF.ORAN`; TRY validation uses a wider `[-10%, 100%]` band so Turkish reference rates are not rejected by the normal 20% ceiling
- `witry-brix` now has rate-derived TRY coverage through the BIST TLREF overnight proxy
- Rate-derived configs can set `benchmarkOverrideKey`; the APY formula still derives from the configured product benchmark, while PYS/excess-yield provenance can compare the row against a distinct benchmark hurdle
DetailsHide details
NAV Oracle, TRY TLREF, and Queue-Guided Coverage
Yield Intelligence adds the first Midas NAV-oracle adapter, a TRY benchmark lane backed by CBRT EVDS TLREF, rate-derived benchmark overrides for treasury-like products, structured-tranche filter cleanup, and audit-queue-driven allowlist promotion metadata.
- `mmev-midas` gains a curated `protocol-api:midas-mmev-nav-oracle` source from the issuer-listed Ethereum mMEV/USD oracle, using the oracle value as a NAV anchor with a three-day freshness guard
- The benchmark registry adds optional `TRY`, sourced from CBRT EVDS BIST TLREF series `TP.BISTTLREF.ORAN`; TRY validation uses a wider `[-10%, 100%]` band so Turkish reference rates are not rejected by the normal 20% ceiling
- `witry-brix` now has rate-derived TRY coverage through the BIST TLREF overnight proxy
- Rate-derived configs can set `benchmarkOverrideKey`; the APY formula still derives from the configured product benchmark, while PYS/excess-yield provenance can compare the row against a distinct benchmark hurdle
Impact Notes
- `mmev-midas` gains a curated `protocol-api:midas-mmev-nav-oracle` source from the issuer-listed Ethereum mMEV/USD oracle, using the oracle value as a NAV anchor with a three-day freshness guard
- The benchmark registry adds optional `TRY`, sourced from CBRT EVDS BIST TLREF series `TP.BISTTLREF.ORAN`; TRY validation uses a wider `[-10%, 100%]` band so Turkish reference rates are not rejected by the normal 20% ceiling
- `witry-brix` now has rate-derived TRY coverage through the BIST TLREF overnight proxy
- Rate-derived configs can set `benchmarkOverrideKey`; the APY formula still derives from the configured product benchmark, while PYS/excess-yield provenance can compare the row against a distinct benchmark hurdle
- USD tokenized T-bill/MMF proxy rows now compare against `USD_EFFR` in PYS/excess-yield provenance, and EUR/GBP treasury proxy rows carry explicit same-currency override keys for future-safe provenance
- `structured-tranche` keeps its runtime taxonomy but now renders as `Structured Tranche`; frontend opportunity grouping treats structured tranches alongside lending and fixed-yield external opportunities
- Monthly coverage-audit allowlist recommendations now derive from the unmatched high-TVL queue plus the protocol-category gate, with suggested config snippets, source links, and promotion metadata for cheap reviewed rounds
- PYS formula, source-risk calibration, history semantics, and publication guards are unchanged except where row-level benchmark selection uses the explicit override
v8.28Jun 9, 2026GBP SONIA Compounded Index Benchmark
Yield Intelligence upgrades GBP benchmark resolution from an overnight SONIA proxy to the Bank of England SONIA Compounded Index annualized over a trailing 90-day window.
- GBP benchmark refresh now uses the Bank of England IADB SONIA Compounded Index `IUDZOS2` instead of the overnight SONIA proxy
- The daily benchmark cron annualizes the trailing 90-day index change to produce `GBP 3M compounded SONIA`
- Benchmark metadata records source `boe-sonia-compounded-index`
- GBP feed failures use fallback mode `gbp-sonia-compounded-index-failed` and retain the existing retained-last-market behavior when available
DetailsHide details
GBP SONIA Compounded Index Benchmark
Yield Intelligence upgrades GBP benchmark resolution from an overnight SONIA proxy to the Bank of England SONIA Compounded Index annualized over a trailing 90-day window.
- GBP benchmark refresh now uses the Bank of England IADB SONIA Compounded Index `IUDZOS2` instead of the overnight SONIA proxy
- The daily benchmark cron annualizes the trailing 90-day index change to produce `GBP 3M compounded SONIA`
- Benchmark metadata records source `boe-sonia-compounded-index`
- GBP feed failures use fallback mode `gbp-sonia-compounded-index-failed` and retain the existing retained-last-market behavior when available
Impact Notes
- GBP benchmark refresh now uses the Bank of England IADB SONIA Compounded Index `IUDZOS2` instead of the overnight SONIA proxy
- The daily benchmark cron annualizes the trailing 90-day index change to produce `GBP 3M compounded SONIA`
- Benchmark metadata records source `boe-sonia-compounded-index`
- GBP feed failures use fallback mode `gbp-sonia-compounded-index-failed` and retain the existing retained-last-market behavior when available
- PYS formula, source arbitration, source-risk calibration, publication guards, and non-GBP benchmark paths are unchanged
v8.27Jun 9, 2026Fixed-Yield Pendle PT Opportunities
Yield Intelligence adds a fixed-yield YieldType for Pendle principal-token opportunities and treats those rows as external alternatives that do not displace native holder-yield rows.
- `fixed-yield` joins the YieldType taxonomy with the Fixed Yield label for fixed-maturity principal-token opportunities
- Pendle supplemental PT market rows now publish as `protocol-api` `fixed-yield` candidates with source keys shaped as `protocol-api:pendle:<chain>:<marketAddress>`
- Pendle rows keep underlying stablecoin matching through the PT market's underlying asset symbol/address instead of creating synthetic stablecoin entries
- `fixed-yield` joins `lending-opportunity` in the external opportunity projection guard, so PT rows can appear alongside native holder-yield rows without displacing those rows through variant projection or parent inheritance
DetailsHide details
Fixed-Yield Pendle PT Opportunities
Yield Intelligence adds a fixed-yield YieldType for Pendle principal-token opportunities and treats those rows as external alternatives that do not displace native holder-yield rows.
- `fixed-yield` joins the YieldType taxonomy with the Fixed Yield label for fixed-maturity principal-token opportunities
- Pendle supplemental PT market rows now publish as `protocol-api` `fixed-yield` candidates with source keys shaped as `protocol-api:pendle:<chain>:<marketAddress>`
- Pendle rows keep underlying stablecoin matching through the PT market's underlying asset symbol/address instead of creating synthetic stablecoin entries
- `fixed-yield` joins `lending-opportunity` in the external opportunity projection guard, so PT rows can appear alongside native holder-yield rows without displacing those rows through variant projection or parent inheritance
Impact Notes
- `fixed-yield` joins the YieldType taxonomy with the Fixed Yield label for fixed-maturity principal-token opportunities
- Pendle supplemental PT market rows now publish as `protocol-api` `fixed-yield` candidates with source keys shaped as `protocol-api:pendle:<chain>:<marketAddress>`
- Pendle rows keep underlying stablecoin matching through the PT market's underlying asset symbol/address instead of creating synthetic stablecoin entries
- `fixed-yield` joins `lending-opportunity` in the external opportunity projection guard, so PT rows can appear alongside native holder-yield rows without displacing those rows through variant projection or parent inheritance
- PYS formula, benchmark selection, source-risk calibration, history semantics, and publication guards are unchanged
v8.26Jun 9, 2026Wave 2 Category-Gated Lending Allowlist
Yield Intelligence adds a Wave 2 batch of category-gated thin-chain and app-chain lending protocols to auto-discovery after DeFiLlama category verification.
- The curated lending allowlist now includes `aries-markets`, `blend-pools-v2`, `current`, `curvance`, `scallop-lend`, and `tydro`
- These protocols were verified on 2026-06-09 as DeFiLlama category Lending with live single-asset stablecoin pools on Aptos, Stellar, Sui, Monad, and Ink
- Speculative non-lending categories remain excluded by the protocol category gate before they can become high-confidence allowlist recommendations
- The existing APY floor, chain-specific TVL floors, supply-relative `0.1%` gate, reserved-pool exclusion, and source-risk penalty semantics continue to apply
DetailsHide details
Wave 2 Category-Gated Lending Allowlist
Yield Intelligence adds a Wave 2 batch of category-gated thin-chain and app-chain lending protocols to auto-discovery after DeFiLlama category verification.
- The curated lending allowlist now includes `aries-markets`, `blend-pools-v2`, `current`, `curvance`, `scallop-lend`, and `tydro`
- These protocols were verified on 2026-06-09 as DeFiLlama category Lending with live single-asset stablecoin pools on Aptos, Stellar, Sui, Monad, and Ink
- Speculative non-lending categories remain excluded by the protocol category gate before they can become high-confidence allowlist recommendations
- The existing APY floor, chain-specific TVL floors, supply-relative `0.1%` gate, reserved-pool exclusion, and source-risk penalty semantics continue to apply
Impact Notes
- The curated lending allowlist now includes `aries-markets`, `blend-pools-v2`, `current`, `curvance`, `scallop-lend`, and `tydro`
- These protocols were verified on 2026-06-09 as DeFiLlama category Lending with live single-asset stablecoin pools on Aptos, Stellar, Sui, Monad, and Ink
- Speculative non-lending categories remain excluded by the protocol category gate before they can become high-confidence allowlist recommendations
- The existing APY floor, chain-specific TVL floors, supply-relative `0.1%` gate, reserved-pool exclusion, and source-risk penalty semantics continue to apply
- PYS formula, benchmark selection, history semantics, and publication guards are unchanged; the bump records a source-roster expansion only
v8.25Jun 9, 2026USDGO EFFR Rate-Derived Source
Yield Intelligence promotes USDGO back into runtime yield coverage through an EFFR-linked rate-derived source using FRED DFF, net of OSL's documented 38 bps fee spread.
- `usdgo-osl` is yield-bearing again and leaves the intentional-gap manifest because it now has a reliable rate-derived runtime APY path
- The benchmark registry adds optional `USD_EFFR`, sourced from FRED DFF (`fred-dff`) as the Effective Federal Funds Rate feed
- USDGO computes rate-derived APY as `max(0, USD_EFFR - 38 bps)`, matching OSL public material that references approximately 3.24% net yield versus May 2026 EFFR after fees
- The default USD benchmark remains `USD` / FRED `DGS3MO`; `USD_EFFR` is a source-specific benchmark key for EFFR-linked products rather than a replacement global USD hurdle
DetailsHide details
USDGO EFFR Rate-Derived Source
Yield Intelligence promotes USDGO back into runtime yield coverage through an EFFR-linked rate-derived source using FRED DFF, net of OSL's documented 38 bps fee spread.
- `usdgo-osl` is yield-bearing again and leaves the intentional-gap manifest because it now has a reliable rate-derived runtime APY path
- The benchmark registry adds optional `USD_EFFR`, sourced from FRED DFF (`fred-dff`) as the Effective Federal Funds Rate feed
- USDGO computes rate-derived APY as `max(0, USD_EFFR - 38 bps)`, matching OSL public material that references approximately 3.24% net yield versus May 2026 EFFR after fees
- The default USD benchmark remains `USD` / FRED `DGS3MO`; `USD_EFFR` is a source-specific benchmark key for EFFR-linked products rather than a replacement global USD hurdle
Impact Notes
- `usdgo-osl` is yield-bearing again and leaves the intentional-gap manifest because it now has a reliable rate-derived runtime APY path
- The benchmark registry adds optional `USD_EFFR`, sourced from FRED DFF (`fred-dff`) as the Effective Federal Funds Rate feed
- USDGO computes rate-derived APY as `max(0, USD_EFFR - 38 bps)`, matching OSL public material that references approximately 3.24% net yield versus May 2026 EFFR after fees
- The default USD benchmark remains `USD` / FRED `DGS3MO`; `USD_EFFR` is a source-specific benchmark key for EFFR-linked products rather than a replacement global USD hurdle
- PYS formula, source-risk penalties, publication guards, and benchmark retained-last-market semantics are unchanged
v8.24Jun 9, 2026Source Management, Venue Risk, and Sync Telemetry
Yield Intelligence now uses cached DeFiLlama protocol categories for coverage-audit recommendations, table-driven chain lending TVL floors, monthly quarantine re-probes, a fully reviewed venue-risk tier registry for tracked source families, and observability metadata for deterministic-envelope rejections and comparison-anchor freshness.
- The DEX-liquidity job caches DeFiLlama `/protocols` metadata under `defillama-protocols`, and the monthly yield coverage audit reuses that cache to annotate protocol recommendations with DeFiLlama category metadata
- `high-confidence` lending-allowlist recommendations now require a category of Lending, CDP, RWA Lending, or Uncollateralized Lending; missing categories and non-lending categories stay `review-needed` even when TVL and pool count are high
- Auto-discovered lending opportunities now use the table-driven `CHAIN_LENDING_TVL_FLOOR_USD`: `$100K` remains the default floor, while Aptos, Berachain, Cardano, Ink, Monad, Plasma, Solana, Stacks, Stellar, and Sui use the configured `$25K` smaller/pre-mainnet floor
- The supply-relative lending gate still applies on top of the chain floor for eligible tracked stablecoins
DetailsHide details
Source Management, Venue Risk, and Sync Telemetry
Yield Intelligence now uses cached DeFiLlama protocol categories for coverage-audit recommendations, table-driven chain lending TVL floors, monthly quarantine re-probes, a fully reviewed venue-risk tier registry for tracked source families, and observability metadata for deterministic-envelope rejections and comparison-anchor freshness.
- The DEX-liquidity job caches DeFiLlama `/protocols` metadata under `defillama-protocols`, and the monthly yield coverage audit reuses that cache to annotate protocol recommendations with DeFiLlama category metadata
- `high-confidence` lending-allowlist recommendations now require a category of Lending, CDP, RWA Lending, or Uncollateralized Lending; missing categories and non-lending categories stay `review-needed` even when TVL and pool count are high
- Auto-discovered lending opportunities now use the table-driven `CHAIN_LENDING_TVL_FLOOR_USD`: `$100K` remains the default floor, while Aptos, Berachain, Cardano, Ink, Monad, Plasma, Solana, Stacks, Stellar, and Sui use the configured `$25K` smaller/pre-mainnet floor
- The supply-relative lending gate still applies on top of the chain floor for eligible tracked stablecoins
Impact Notes
- The DEX-liquidity job caches DeFiLlama `/protocols` metadata under `defillama-protocols`, and the monthly yield coverage audit reuses that cache to annotate protocol recommendations with DeFiLlama category metadata
- `high-confidence` lending-allowlist recommendations now require a category of Lending, CDP, RWA Lending, or Uncollateralized Lending; missing categories and non-lending categories stay `review-needed` even when TVL and pool count are high
- Auto-discovered lending opportunities now use the table-driven `CHAIN_LENDING_TVL_FLOOR_USD`: `$100K` remains the default floor, while Aptos, Berachain, Cardano, Ink, Monad, Plasma, Solana, Stacks, Stellar, and Sui use the configured `$25K` smaller/pre-mainnet floor
- The supply-relative lending gate still applies on top of the chain floor for eligible tracked stablecoins
- Reviewed venue-risk tiers now cover the tracked backlog: `spark-savings`, `yearn`, `yearn-finance`, and `pendle` are `low`; `maple`, `morpho`, `morpho-v1`, `morpho-blue`, and `beefy` are `medium`; unknown or unreviewed venues remain neutral
- Monthly coverage audits now re-probe explicit generic `convertToAssets` quarantines with configured monthly `chainRpcs` when available; `reusd-re-protocol` has an inactive audit probe config and remains outside hourly `ON_CHAIN_RATE_CONFIGS`
- Successful nonzero quarantine probe rates inside the `<=300%` exchange-rate envelope produce `quarantineReadyToRestore`, `quarantineProbeSummary`, and an operator queue candidate kind `quarantine-ready-to-restore`; restoration remains manual
- `scrvusd-curve` stays quarantined from the generic reader because it already uses the dedicated current-rate reader; `scrvusd-curve` and `reusd-re-protocol` both carry `nextReviewAt: 2026-07-09`
- Tier 1 deterministic APYs above the 300% sanity envelope are counted in sync metadata at `sourceCoverage.onChainEnvelopeRejectionCount` with bounded examples and truncation state; fallback resolution remains unchanged
- Sync metadata now records `sourceCoverage.comparisonAnchorFreshness` with anchored row count, stale anchor count, oldest stale anchor age/source, bounded stale examples, and truncation state
- Admin `/api/status` exposes the comparison-anchor freshness summary at `yieldHealth.comparisonAnchorFreshness`; it is observability-only and does not change source arbitration, scoring, or publication eligibility
- PYS formula, history semantics, and publication guards are unchanged; `low` remains a no-op and `medium` continues to contribute the existing +0.15 source-risk penalty
- DEWS v6.07 consumes reviewed medium venue risk as `structured-medium-risk-venue` (+10) while the existing high-risk venue branch remains +25
v8.23Jun 9, 2026Wave 1 Source-Roster Expansion
Yield Intelligence promotes selected curated wrappers to deterministic ERC-4626 coverage, adds rate-derived coverage for FUSD/SAFO/SPKCC, adds Aave v4 to lending auto-discovery, and removes an unreachable Matrixdock STBT intentional gap.
- `susdc-spark`, `susdt-spark`, `syrupusdc-maple`, `syrupusdt-maple`, `yvusdc-yearn`, `gtusdc-gauntlet`, `sgho-aave`, `wsrusd-reservoir`, `stcusd-cap`, `savusd-avant`, and `yousd-yield-optimizer` now have deterministic ERC-4626 exchange-rate coverage where the configured chain reader is available
- Curated DeFiLlama rows for those wrappers remain eligible as fallback or retained alternate sources; the update improves source resilience without changing wrapper ownership semantics
- `fusd-finchain`, `safo-spiko-usd`, and `spkcc-spiko` gain rate-derived coverage for fund or rebase mechanics that price-derived APY cannot model cleanly
- `aave-v4` joins the curated lending auto-discovery allowlist
DetailsHide details
Wave 1 Source-Roster Expansion
Yield Intelligence promotes selected curated wrappers to deterministic ERC-4626 coverage, adds rate-derived coverage for FUSD/SAFO/SPKCC, adds Aave v4 to lending auto-discovery, and removes an unreachable Matrixdock STBT intentional gap.
- `susdc-spark`, `susdt-spark`, `syrupusdc-maple`, `syrupusdt-maple`, `yvusdc-yearn`, `gtusdc-gauntlet`, `sgho-aave`, `wsrusd-reservoir`, `stcusd-cap`, `savusd-avant`, and `yousd-yield-optimizer` now have deterministic ERC-4626 exchange-rate coverage where the configured chain reader is available
- Curated DeFiLlama rows for those wrappers remain eligible as fallback or retained alternate sources; the update improves source resilience without changing wrapper ownership semantics
- `fusd-finchain`, `safo-spiko-usd`, and `spkcc-spiko` gain rate-derived coverage for fund or rebase mechanics that price-derived APY cannot model cleanly
- `aave-v4` joins the curated lending auto-discovery allowlist
Impact Notes
- `susdc-spark`, `susdt-spark`, `syrupusdc-maple`, `syrupusdt-maple`, `yvusdc-yearn`, `gtusdc-gauntlet`, `sgho-aave`, `wsrusd-reservoir`, `stcusd-cap`, `savusd-avant`, and `yousd-yield-optimizer` now have deterministic ERC-4626 exchange-rate coverage where the configured chain reader is available
- Curated DeFiLlama rows for those wrappers remain eligible as fallback or retained alternate sources; the update improves source resilience without changing wrapper ownership semantics
- `fusd-finchain`, `safo-spiko-usd`, and `spkcc-spiko` gain rate-derived coverage for fund or rebase mechanics that price-derived APY cannot model cleanly
- `aave-v4` joins the curated lending auto-discovery allowlist
- The phantom `stbt-matrixdock` intentional-gap entry is pruned because STBT is not a tracked stablecoin and could not surface in the yield adapter manifest
- VBILL is intentionally excluded from this rate-derived batch; its metadata points to an on-chain NAVLink-style NAV feed, so it belongs to a future NAV-oracle source lane
- PYS scoring math, source-risk penalties, history semantics, and publication guards are unchanged; the bump records source-roster and coverage-accounting changes
v8.22Jun 7, 2026First-Party GBP/JPY/AUD Benchmarks
The daily benchmark registry now reads GBP SONIA, JPY overnight call rate, and AUD cash-rate data from first-party central-bank endpoints instead of stale or slow FRED mirrors.
- GBP benchmark refreshes use the Bank of England IADB SONIA CSV (`IUDSOIA`) directly
- JPY benchmark refreshes use Bank of Japan Time-Series Data Search `STRDCLUCON`, replacing the discontinued FRED mirror that ended at December 2023
- AUD benchmark refreshes use the Reserve Bank of Australia F1 money-market CSV cash-rate target instead of the FRED 3-month interbank mirror
- Retained-last-market fallback semantics and PYS scoring math are unchanged; the bump records benchmark source reliability and source-roster changes
DetailsHide details
First-Party GBP/JPY/AUD Benchmarks
The daily benchmark registry now reads GBP SONIA, JPY overnight call rate, and AUD cash-rate data from first-party central-bank endpoints instead of stale or slow FRED mirrors.
- GBP benchmark refreshes use the Bank of England IADB SONIA CSV (`IUDSOIA`) directly
- JPY benchmark refreshes use Bank of Japan Time-Series Data Search `STRDCLUCON`, replacing the discontinued FRED mirror that ended at December 2023
- AUD benchmark refreshes use the Reserve Bank of Australia F1 money-market CSV cash-rate target instead of the FRED 3-month interbank mirror
- Retained-last-market fallback semantics and PYS scoring math are unchanged; the bump records benchmark source reliability and source-roster changes
Impact Notes
- GBP benchmark refreshes use the Bank of England IADB SONIA CSV (`IUDSOIA`) directly
- JPY benchmark refreshes use Bank of Japan Time-Series Data Search `STRDCLUCON`, replacing the discontinued FRED mirror that ended at December 2023
- AUD benchmark refreshes use the Reserve Bank of Australia F1 money-market CSV cash-rate target instead of the FRED 3-month interbank mirror
- Retained-last-market fallback semantics and PYS scoring math are unchanged; the bump records benchmark source reliability and source-roster changes
v8.21Jun 6, 2026Anchor Freshness and Published Coverage Guards
Yield publication now treats stale comparison anchors as stale data, blocks severe lending-opportunity or total ranking collapses against the prior public snapshot, and tightens Layer-3 DeFiLlama fallback matching to exact symbols or address-corroborated wrappers.
- On-chain and price-derived rows with comparison anchors older than 14 days carry `anchor-stale` decision evidence and publish the existing `data-stale` warning even when the current source observation is fresh
- The hourly publisher compares the candidate rankings against the previous public cache for yield-bearing rows, non-yield-bearing lending-opportunity rows, and total ranking count before replacing the cache
- Severe lending-opportunity or total ranking count regressions return a degraded no-op so partial supplemental loss does not silently overwrite the last good public rankings snapshot
- Layer-3 DeFiLlama fallback no longer accepts substring-only symbol matches; exact normalized symbols can still match, and prefixed/suffixed wrapper rows require underlying-token address corroboration
DetailsHide details
Anchor Freshness and Published Coverage Guards
Yield publication now treats stale comparison anchors as stale data, blocks severe lending-opportunity or total ranking collapses against the prior public snapshot, and tightens Layer-3 DeFiLlama fallback matching to exact symbols or address-corroborated wrappers.
- On-chain and price-derived rows with comparison anchors older than 14 days carry `anchor-stale` decision evidence and publish the existing `data-stale` warning even when the current source observation is fresh
- The hourly publisher compares the candidate rankings against the previous public cache for yield-bearing rows, non-yield-bearing lending-opportunity rows, and total ranking count before replacing the cache
- Severe lending-opportunity or total ranking count regressions return a degraded no-op so partial supplemental loss does not silently overwrite the last good public rankings snapshot
- Layer-3 DeFiLlama fallback no longer accepts substring-only symbol matches; exact normalized symbols can still match, and prefixed/suffixed wrapper rows require underlying-token address corroboration
Impact Notes
- On-chain and price-derived rows with comparison anchors older than 14 days carry `anchor-stale` decision evidence and publish the existing `data-stale` warning even when the current source observation is fresh
- The hourly publisher compares the candidate rankings against the previous public cache for yield-bearing rows, non-yield-bearing lending-opportunity rows, and total ranking count before replacing the cache
- Severe lending-opportunity or total ranking count regressions return a degraded no-op so partial supplemental loss does not silently overwrite the last good public rankings snapshot
- Layer-3 DeFiLlama fallback no longer accepts substring-only symbol matches; exact normalized symbols can still match, and prefixed/suffixed wrapper rows require underlying-token address corroboration
- PYS scoring math and source confidence tiers are unchanged; the bump records publication safety, freshness labeling, and source-resolution guardrails
v8.20Jun 6, 2026Deterministic APY Sanity Envelope
Deterministic exchange-rate and price-derived APY rows are now rejected when short-window annualization exceeds the shared sanity ceiling.
- Adds a shared 300% APY sanity envelope for generic on-chain exchange-rate and price-derived observations
- Rejects out-of-envelope Tier 1 on-chain rows instead of publishing or storing the suspicious current exchange rate as a fresh history anchor
- Rejects out-of-envelope price-derived NAV rows so curated DeFiLlama, protocol API, or rate-derived rows can win arbitration instead of being displaced by a transient price spike
- Protocol-specific adapters and benchmark rate-derived rows keep their existing source-family rules and are not governed by this generic annualization guard
DetailsHide details
Deterministic APY Sanity Envelope
Deterministic exchange-rate and price-derived APY rows are now rejected when short-window annualization exceeds the shared sanity ceiling.
- Adds a shared 300% APY sanity envelope for generic on-chain exchange-rate and price-derived observations
- Rejects out-of-envelope Tier 1 on-chain rows instead of publishing or storing the suspicious current exchange rate as a fresh history anchor
- Rejects out-of-envelope price-derived NAV rows so curated DeFiLlama, protocol API, or rate-derived rows can win arbitration instead of being displaced by a transient price spike
- Protocol-specific adapters and benchmark rate-derived rows keep their existing source-family rules and are not governed by this generic annualization guard
Impact Notes
- Adds a shared 300% APY sanity envelope for generic on-chain exchange-rate and price-derived observations
- Rejects out-of-envelope Tier 1 on-chain rows instead of publishing or storing the suspicious current exchange rate as a fresh history anchor
- Rejects out-of-envelope price-derived NAV rows so curated DeFiLlama, protocol API, or rate-derived rows can win arbitration instead of being displaced by a transient price spike
- Protocol-specific adapters and benchmark rate-derived rows keep their existing source-family rules and are not governed by this generic annualization guard
v8.19Jun 3, 2026Royco Dawn Tranche Opportunities
Royco Dawn is now ingested as a Yield Intelligence protocol-API source with separate senior and junior structured-tranche opportunity rows attached to the tracked underlying stablecoin where the deposit token can be resolved.
- Royco Dawn market rows publish under `royco-dawn:<chainId>:<marketId>:senior` and `royco-dawn:<chainId>:<marketId>:junior` source keys rather than creating synthetic stablecoin registry entries for tranche share tokens
- The supplemental source lane maps Royco deposit-token addresses against tracked stablecoin contracts and configured wrapper variants, including the Neutrl `sNUSD` -> `nusd-neutrl` route
- A new `structured-tranche` yield type labels tranche opportunities without applying generic base-asset lending size gates designed for ordinary lending suggestions
- PYS now consumes an opportunity-level tranche Safety Score for Royco rows: senior rows are capped at or below the underlying Safety Score, while junior rows carry first-loss, utilization, coverage, drawdown, market-status, TVL, withdrawal, explicit access, and venue-posture penalties
DetailsHide details
Royco Dawn Tranche Opportunities
Royco Dawn is now ingested as a Yield Intelligence protocol-API source with separate senior and junior structured-tranche opportunity rows attached to the tracked underlying stablecoin where the deposit token can be resolved.
- Royco Dawn market rows publish under `royco-dawn:<chainId>:<marketId>:senior` and `royco-dawn:<chainId>:<marketId>:junior` source keys rather than creating synthetic stablecoin registry entries for tranche share tokens
- The supplemental source lane maps Royco deposit-token addresses against tracked stablecoin contracts and configured wrapper variants, including the Neutrl `sNUSD` -> `nusd-neutrl` route
- A new `structured-tranche` yield type labels tranche opportunities without applying generic base-asset lending size gates designed for ordinary lending suggestions
- PYS now consumes an opportunity-level tranche Safety Score for Royco rows: senior rows are capped at or below the underlying Safety Score, while junior rows carry first-loss, utilization, coverage, drawdown, market-status, TVL, withdrawal, explicit access, and venue-posture penalties
Impact Notes
- Royco Dawn market rows publish under `royco-dawn:<chainId>:<marketId>:senior` and `royco-dawn:<chainId>:<marketId>:junior` source keys rather than creating synthetic stablecoin registry entries for tranche share tokens
- The supplemental source lane maps Royco deposit-token addresses against tracked stablecoin contracts and configured wrapper variants, including the Neutrl `sNUSD` -> `nusd-neutrl` route
- A new `structured-tranche` yield type labels tranche opportunities without applying generic base-asset lending size gates designed for ordinary lending suggestions
- PYS now consumes an opportunity-level tranche Safety Score for Royco rows: senior rows are capped at or below the underlying Safety Score, while junior rows carry first-loss, utilization, coverage, drawdown, market-status, TVL, withdrawal, explicit access, and venue-posture penalties
- Royco tranche safety is exposed through nested `sourceRisk` fields such as `trancheSide`, `underlyingSafetyScore`, `trancheSafetyScore`, `marketCoverageRatio`, `marketUtilizationRatio`, and `marketStatus`; the underlying Report Card Safety Score itself is unchanged
- Read-time safety hydration recomputes Royco tranche safety from the live underlying Report Card snapshot instead of overwriting the row with the raw underlying Safety Score
v8.18May 22, 2026Base Asset Yield Source Corrections
GHO and DOLA no longer publish savings-wrapper APY through their base stablecoin rows; tracked wrappers own their own rows when present, and untracked wrappers stay out of the runtime source roster.
- `gho-aave` no longer carries parent-side yield metadata, `YIELD_POOL_MAP`, or `YIELD_VARIANT_MAP` entries for sGHO
- `sgho-aave` remains the tracked Aave Savings GHO yield asset and keeps the curated Aave V3 DeFiLlama pool mapping
- `dola-inverse-finance` no longer carries yield-bearing metadata, `YIELD_POOL_MAP`, `YIELD_VARIANT_MAP`, or generic on-chain exchange-rate coverage for the untracked sDOLA wrapper
- The generic on-chain vault set drops the DOLA/sDOLA parent mapping, reducing the documented `ON_CHAIN_RATE_CONFIGS` count from 12 to 11
DetailsHide details
Base Asset Yield Source Corrections
GHO and DOLA no longer publish savings-wrapper APY through their base stablecoin rows; tracked wrappers own their own rows when present, and untracked wrappers stay out of the runtime source roster.
- `gho-aave` no longer carries parent-side yield metadata, `YIELD_POOL_MAP`, or `YIELD_VARIANT_MAP` entries for sGHO
- `sgho-aave` remains the tracked Aave Savings GHO yield asset and keeps the curated Aave V3 DeFiLlama pool mapping
- `dola-inverse-finance` no longer carries yield-bearing metadata, `YIELD_POOL_MAP`, `YIELD_VARIANT_MAP`, or generic on-chain exchange-rate coverage for the untracked sDOLA wrapper
- The generic on-chain vault set drops the DOLA/sDOLA parent mapping, reducing the documented `ON_CHAIN_RATE_CONFIGS` count from 12 to 11
Impact Notes
- `gho-aave` no longer carries parent-side yield metadata, `YIELD_POOL_MAP`, or `YIELD_VARIANT_MAP` entries for sGHO
- `sgho-aave` remains the tracked Aave Savings GHO yield asset and keeps the curated Aave V3 DeFiLlama pool mapping
- `dola-inverse-finance` no longer carries yield-bearing metadata, `YIELD_POOL_MAP`, `YIELD_VARIANT_MAP`, or generic on-chain exchange-rate coverage for the untracked sDOLA wrapper
- The generic on-chain vault set drops the DOLA/sDOLA parent mapping, reducing the documented `ON_CHAIN_RATE_CONFIGS` count from 12 to 11
- `usdn-smardex` now uses its exact SMARDEX USDN DeFiLlama single-exposure pool after the asset was corrected from NAV-token to rebase semantics
- `a7a5-old-vector` is explicitly yield-bearing but remains an intentional runtime gap until a reliable RUB benchmark or issuer APY source is wired
- PYS scoring math, source-risk penalties, and confidence arbitration are unchanged; the bump records source ownership and tracked-universe routing
v8.17May 21, 2026sdUSD Direct Yield Ownership
dTRINITY sdUSD is now tracked as its own yield-bearing NAV variant of dUSD, so sdUSD owns the dStake yield row instead of publishing through the dUSD parent.
- `sdusd-dtrinity` is admitted as a CoinGecko-backed active NAV variant with `variantOf: dusd-dtrinity` and a 100% wrapper dependency on dUSD
- `dusd-dtrinity` is no longer statically marked yield-bearing and no longer resolves sdUSD through `YIELD_VARIANT_MAP`
- The existing Ethereum/Fraxtal dStake weighted DeFiLlama pool group now publishes under `sdusd-dtrinity` with the same `defillama-weighted:dtrinity-sdusd` source key
- Parent-side dUSD sdUSD history is suppressed through the ownership-handoff cleanup path so wrapper APY history does not remain attached to the base stablecoin
DetailsHide details
sdUSD Direct Yield Ownership
dTRINITY sdUSD is now tracked as its own yield-bearing NAV variant of dUSD, so sdUSD owns the dStake yield row instead of publishing through the dUSD parent.
- `sdusd-dtrinity` is admitted as a CoinGecko-backed active NAV variant with `variantOf: dusd-dtrinity` and a 100% wrapper dependency on dUSD
- `dusd-dtrinity` is no longer statically marked yield-bearing and no longer resolves sdUSD through `YIELD_VARIANT_MAP`
- The existing Ethereum/Fraxtal dStake weighted DeFiLlama pool group now publishes under `sdusd-dtrinity` with the same `defillama-weighted:dtrinity-sdusd` source key
- Parent-side dUSD sdUSD history is suppressed through the ownership-handoff cleanup path so wrapper APY history does not remain attached to the base stablecoin
Impact Notes
- `sdusd-dtrinity` is admitted as a CoinGecko-backed active NAV variant with `variantOf: dusd-dtrinity` and a 100% wrapper dependency on dUSD
- `dusd-dtrinity` is no longer statically marked yield-bearing and no longer resolves sdUSD through `YIELD_VARIANT_MAP`
- The existing Ethereum/Fraxtal dStake weighted DeFiLlama pool group now publishes under `sdusd-dtrinity` with the same `defillama-weighted:dtrinity-sdusd` source key
- Parent-side dUSD sdUSD history is suppressed through the ownership-handoff cleanup path so wrapper APY history does not remain attached to the base stablecoin
- PYS scoring math, source-risk penalties, and confidence arbitration are unchanged; the bump records source ownership and tracked-universe routing
v8.16May 19, 2026NAV Metadata Fixes + cgUSD/USDN Rate Proxies
Fixes FPI, SILK, and ISC NAV-token metadata so they route through NAV-appreciation coverage, and adds rate-derived proxy coverage for cgUSD and USDN.
- `fpi-frax`, `silk-shade-protocol`, and `isc-international-stable-currency` now carry the NAV-token metadata needed to route through price-derived NAV-appreciation coverage instead of appearing as yield coverage gaps
- `cgusd-cygnus-finance` gains a rate-derived T-bill proxy source modeled net of its 0.35% protocol fee
- `usdn-noble` gains a rate-derived M0 T-bill rebase proxy source with no configured spread
- PYS scoring math, source-risk penalties, and confidence arbitration are unchanged; the bump records corrected coverage routing and source-roster expansion
DetailsHide details
NAV Metadata Fixes + cgUSD/USDN Rate Proxies
Fixes FPI, SILK, and ISC NAV-token metadata so they route through NAV-appreciation coverage, and adds rate-derived proxy coverage for cgUSD and USDN.
- `fpi-frax`, `silk-shade-protocol`, and `isc-international-stable-currency` now carry the NAV-token metadata needed to route through price-derived NAV-appreciation coverage instead of appearing as yield coverage gaps
- `cgusd-cygnus-finance` gains a rate-derived T-bill proxy source modeled net of its 0.35% protocol fee
- `usdn-noble` gains a rate-derived M0 T-bill rebase proxy source with no configured spread
- PYS scoring math, source-risk penalties, and confidence arbitration are unchanged; the bump records corrected coverage routing and source-roster expansion
Impact Notes
- `fpi-frax`, `silk-shade-protocol`, and `isc-international-stable-currency` now carry the NAV-token metadata needed to route through price-derived NAV-appreciation coverage instead of appearing as yield coverage gaps
- `cgusd-cygnus-finance` gains a rate-derived T-bill proxy source modeled net of its 0.35% protocol fee
- `usdn-noble` gains a rate-derived M0 T-bill rebase proxy source with no configured spread
- PYS scoring math, source-risk penalties, and confidence arbitration are unchanged; the bump records corrected coverage routing and source-roster expansion
v8.15May 19, 2026Etherfuse CETES APY Source + MXN Benchmark Fallback
Etherfuse CETES now publishes APY from Etherfuse's current Stablebond issuance rate instead of the fallback USD price-derived NAV path, and the MXN benchmark can use the same first-party issuance rate as a degraded proxy when Banxico is unavailable.
- `cetes-etherfuse` gains a curated `protocol-api:etherfuse-cetes-current-issuance` source that reads Etherfuse's first-party Next data for the active CETES issuance `interestRateBps`, avoiding USD/MXN FX movement being interpreted as yield
- The price-derived CETES fallback can still run as an alternate source, but curated protocol-API confidence makes the Etherfuse issuance rate the selected source when available
- MXN benchmark resolution still prefers Banxico SIE `SF43936`; when `BANXICO_TOKEN` is missing or Banxico fails, the cron tries Etherfuse CETES current issuance as an explicit `isFallback` / `isProxy` benchmark with `fallbackMode` ending in `etherfuse-stablebond`
- If both Banxico and Etherfuse fail, the existing retained-last-source behavior remains in place; otherwise MXN stays unavailable and affected rows fall back to USD
DetailsHide details
Etherfuse CETES APY Source + MXN Benchmark Fallback
Etherfuse CETES now publishes APY from Etherfuse's current Stablebond issuance rate instead of the fallback USD price-derived NAV path, and the MXN benchmark can use the same first-party issuance rate as a degraded proxy when Banxico is unavailable.
- `cetes-etherfuse` gains a curated `protocol-api:etherfuse-cetes-current-issuance` source that reads Etherfuse's first-party Next data for the active CETES issuance `interestRateBps`, avoiding USD/MXN FX movement being interpreted as yield
- The price-derived CETES fallback can still run as an alternate source, but curated protocol-API confidence makes the Etherfuse issuance rate the selected source when available
- MXN benchmark resolution still prefers Banxico SIE `SF43936`; when `BANXICO_TOKEN` is missing or Banxico fails, the cron tries Etherfuse CETES current issuance as an explicit `isFallback` / `isProxy` benchmark with `fallbackMode` ending in `etherfuse-stablebond`
- If both Banxico and Etherfuse fail, the existing retained-last-source behavior remains in place; otherwise MXN stays unavailable and affected rows fall back to USD
Impact Notes
- `cetes-etherfuse` gains a curated `protocol-api:etherfuse-cetes-current-issuance` source that reads Etherfuse's first-party Next data for the active CETES issuance `interestRateBps`, avoiding USD/MXN FX movement being interpreted as yield
- The price-derived CETES fallback can still run as an alternate source, but curated protocol-API confidence makes the Etherfuse issuance rate the selected source when available
- MXN benchmark resolution still prefers Banxico SIE `SF43936`; when `BANXICO_TOKEN` is missing or Banxico fails, the cron tries Etherfuse CETES current issuance as an explicit `isFallback` / `isProxy` benchmark with `fallbackMode` ending in `etherfuse-stablebond`
- If both Banxico and Etherfuse fail, the existing retained-last-source behavior remains in place; otherwise MXN stays unavailable and affected rows fall back to USD
- The CETES self-reference caveat remains: when the asset yield and the MXN benchmark both represent CETES exposure, spread credit is intentionally near zero rather than inflated by USD FX effects
v8.14May 19, 2026Adapter Manifest Public Endpoint
The yield adapter manifest is now published at `/api/yield-adapter-manifest` as the canonical machine-readable source list for every yield-bearing asset, with per-entry family, exact source key when known, source-key pattern for runtime-resolved or disabled strategies, label, chain/project hints, lifecycle, and methodology version stamping.
- New public endpoint `/api/yield-adapter-manifest` enumerates every adapter row (deterministic on-chain, curated DeFiLlama, protocol-API, auto-discovery lending overrides, rate-derived, price-derived, and intentional coverage gaps) with a 5-minute cache profile
- Each entry exposes `stablecoinId`, `coinSymbol`, `family`, nullable `sourceKey`, optional `sourceKeyPattern`, `label`, optional `chain`/`project` hints, `lifecycle` (`active` / `quarantined` / `intentional-gap` / `experimental`), and the current `methodologyVersion`
- `sourceKey` is populated only when the entry has an exact runtime key that joins to rankings, decision rows, or `/api/yield-history?sourceKey=...`; runtime-resolved and disabled rows use `sourceKeyPattern` instead of synthetic non-runtime keys
- Quarantined adapter rows are surfaced as disabled entries for the underlying family, with the quarantine rationale carried in `quarantineReason`, so active sibling sources stay active
DetailsHide details
Adapter Manifest Public Endpoint
The yield adapter manifest is now published at `/api/yield-adapter-manifest` as the canonical machine-readable source list for every yield-bearing asset, with per-entry family, exact source key when known, source-key pattern for runtime-resolved or disabled strategies, label, chain/project hints, lifecycle, and methodology version stamping.
- New public endpoint `/api/yield-adapter-manifest` enumerates every adapter row (deterministic on-chain, curated DeFiLlama, protocol-API, auto-discovery lending overrides, rate-derived, price-derived, and intentional coverage gaps) with a 5-minute cache profile
- Each entry exposes `stablecoinId`, `coinSymbol`, `family`, nullable `sourceKey`, optional `sourceKeyPattern`, `label`, optional `chain`/`project` hints, `lifecycle` (`active` / `quarantined` / `intentional-gap` / `experimental`), and the current `methodologyVersion`
- `sourceKey` is populated only when the entry has an exact runtime key that joins to rankings, decision rows, or `/api/yield-history?sourceKey=...`; runtime-resolved and disabled rows use `sourceKeyPattern` instead of synthetic non-runtime keys
- Quarantined adapter rows are surfaced as disabled entries for the underlying family, with the quarantine rationale carried in `quarantineReason`, so active sibling sources stay active
Impact Notes
- New public endpoint `/api/yield-adapter-manifest` enumerates every adapter row (deterministic on-chain, curated DeFiLlama, protocol-API, auto-discovery lending overrides, rate-derived, price-derived, and intentional coverage gaps) with a 5-minute cache profile
- Each entry exposes `stablecoinId`, `coinSymbol`, `family`, nullable `sourceKey`, optional `sourceKeyPattern`, `label`, optional `chain`/`project` hints, `lifecycle` (`active` / `quarantined` / `intentional-gap` / `experimental`), and the current `methodologyVersion`
- `sourceKey` is populated only when the entry has an exact runtime key that joins to rankings, decision rows, or `/api/yield-history?sourceKey=...`; runtime-resolved and disabled rows use `sourceKeyPattern` instead of synthetic non-runtime keys
- Quarantined adapter rows are surfaced as disabled entries for the underlying family, with the quarantine rationale carried in `quarantineReason`, so active sibling sources stay active
- Methodology version stamp is the canonical Yield Intelligence label and is included on every entry so downstream consumers can pin against a known methodology snapshot
- Public decision ledger surfaces selected reason code, previous best source key, sourceSwitch boolean, and up to 2 retained alternates (with coded rejection reasons) on every `/api/yield-rankings` row through the new `decisionLedger` field; reason codes ship as a stable enum so UI templates render text client-side
- When a source switch's previous source is present in the evaluated candidate set, `decisionLedger.apy30dDeltaFromPrevious` carries the selected APY30d delta versus that previous source
- Persists PYS / safety / variance snapshots on each `yield_history` row (`pys_at_publish`, `safety_at_publish`, `variance_at_publish`) for honest reconstruction of historical rankings without recomputing from live inputs
- Decision-ledger alternatives migrate to a sibling `yield_source_decision_alternatives` table; the legacy `alternatives_json` blob is still written for one cycle of co-existence so admin readers can dual-source. A nullable `retention_reason` column on `yield_source_decisions` tags each row as `trend` (source switch, any evaluated-source anomaly, or rejection of a higher-confidence source) or `audit` so audit-only rows and old null rollout rows can be pruned at 30 days while trend rows persist
- Scoring, source resolution, history semantics, and publication rules are unchanged in v8.14; the bump tracks the new public contract only
v8.13May 15, 2026Benchmark Registry Expansion + First Venue Tier Batch
Benchmark registry adds GBP, JPY, MXN, BRL, AUD, and CAD rate feeds, ending the universal USD T-Bill fallback for those non-USD-pegged stablecoins. `sourceRiskScore` is now derived from the resolved source-risk penalty so the 0–100 display field stops being universally null, and the first reviewed venue tier batch lands for Aave V3, Compound V3, Spark, and Morpho Blue.
- EUR/CHF retain their existing native benchmarks; GBP now uses FRED `IUDSOIA` (SONIA proxy), JPY uses FRED `IRSTCB01JPM156N` (TONA-equivalent overnight call rate proxy), MXN uses Banxico SIE `SF43936` (CETES 28d, requires `BANXICO_TOKEN`), BRL uses BCB SGS series `11` (SELIC), AUD uses FRED `IR3TIB01AUM156N` (3M interbank, RBA cash rate proxy), and CAD uses Bank of Canada Valet series `V122530` (CORRA proxy)
- AED, IDR, TRY, ZAR, and SGD continue to fall back to USD until a stable public feed is wired; SGD is registered in the type but no fetcher landed in this batch
- CETES self-reference caveat is now explicit: benchmarking the Etherfuse CETES tokenization against the MXN CETES rate yields ≈0% spread, so PYS now under-rewards the asset rather than the prior over-reward; a tokenized-treasury rule can override per-source to the next-tier-up rate later
- `sourceRiskScore` is now derived from the resolved source-risk penalty via `computeSourceRiskScoreFromPenalty` when no upstream value is provided, normalizing `penalty=1` to `0` and `penalty=2.5` to `100`, ending the 100% null rate documented in the v8 production-sample calibration
DetailsHide details
Benchmark Registry Expansion + First Venue Tier Batch
Benchmark registry adds GBP, JPY, MXN, BRL, AUD, and CAD rate feeds, ending the universal USD T-Bill fallback for those non-USD-pegged stablecoins. `sourceRiskScore` is now derived from the resolved source-risk penalty so the 0–100 display field stops being universally null, and the first reviewed venue tier batch lands for Aave V3, Compound V3, Spark, and Morpho Blue.
- EUR/CHF retain their existing native benchmarks; GBP now uses FRED `IUDSOIA` (SONIA proxy), JPY uses FRED `IRSTCB01JPM156N` (TONA-equivalent overnight call rate proxy), MXN uses Banxico SIE `SF43936` (CETES 28d, requires `BANXICO_TOKEN`), BRL uses BCB SGS series `11` (SELIC), AUD uses FRED `IR3TIB01AUM156N` (3M interbank, RBA cash rate proxy), and CAD uses Bank of Canada Valet series `V122530` (CORRA proxy)
- AED, IDR, TRY, ZAR, and SGD continue to fall back to USD until a stable public feed is wired; SGD is registered in the type but no fetcher landed in this batch
- CETES self-reference caveat is now explicit: benchmarking the Etherfuse CETES tokenization against the MXN CETES rate yields ≈0% spread, so PYS now under-rewards the asset rather than the prior over-reward; a tokenized-treasury rule can override per-source to the next-tier-up rate later
- `sourceRiskScore` is now derived from the resolved source-risk penalty via `computeSourceRiskScoreFromPenalty` when no upstream value is provided, normalizing `penalty=1` to `0` and `penalty=2.5` to `100`, ending the 100% null rate documented in the v8 production-sample calibration
Impact Notes
- EUR/CHF retain their existing native benchmarks; GBP now uses FRED `IUDSOIA` (SONIA proxy), JPY uses FRED `IRSTCB01JPM156N` (TONA-equivalent overnight call rate proxy), MXN uses Banxico SIE `SF43936` (CETES 28d, requires `BANXICO_TOKEN`), BRL uses BCB SGS series `11` (SELIC), AUD uses FRED `IR3TIB01AUM156N` (3M interbank, RBA cash rate proxy), and CAD uses Bank of Canada Valet series `V122530` (CORRA proxy)
- AED, IDR, TRY, ZAR, and SGD continue to fall back to USD until a stable public feed is wired; SGD is registered in the type but no fetcher landed in this batch
- CETES self-reference caveat is now explicit: benchmarking the Etherfuse CETES tokenization against the MXN CETES rate yields ≈0% spread, so PYS now under-rewards the asset rather than the prior over-reward; a tokenized-treasury rule can override per-source to the next-tier-up rate later
- `sourceRiskScore` is now derived from the resolved source-risk penalty via `computeSourceRiskScoreFromPenalty` when no upstream value is provided, normalizing `penalty=1` to `0` and `penalty=2.5` to `100`, ending the 100% null rate documented in the v8 production-sample calibration
- First reviewed venue tier batch in `YIELD_RISK_CONFIG`: `aave-v3`, `compound-v3`, and `sparklend` move to `low` (currently a no-op penalty); `morpho-blue` moves to `medium` (+0.15 penalty contribution); remaining tracked venues stay `unknown` with rationale/evidence fields until the next monthly coverage audit
- Rollback compatibility is preserved: missing or invalid source-risk inputs continue to resolve to the neutral source-risk penalty, and v7.48-shaped payloads remain schema-valid
- 10e469cf4
- e70720a3c
v8.12May 14, 2026Tradable Private-Credit Yield Gaps
Tradable private-credit note additions are inventoried as explicit yield intentional gaps until a reliable public APY or cashflow source is wired.
- `pc0000031-tradable`, `pc0000033-tradable`, `pc0000089-tradable`, and `pc0000101-tradable` stay yield-bearing but do not publish synthetic runtime APY rows
- The yield manifest reports the four Tradable notes as intentional gaps instead of silently dropping them from coverage accounting
- Contract-priced zero-volume private-credit notes stay out of live rankings until a trustworthy source can measure realized yield
DetailsHide details
Tradable Private-Credit Yield Gaps
Tradable private-credit note additions are inventoried as explicit yield intentional gaps until a reliable public APY or cashflow source is wired.
- `pc0000031-tradable`, `pc0000033-tradable`, `pc0000089-tradable`, and `pc0000101-tradable` stay yield-bearing but do not publish synthetic runtime APY rows
- The yield manifest reports the four Tradable notes as intentional gaps instead of silently dropping them from coverage accounting
- Contract-priced zero-volume private-credit notes stay out of live rankings until a trustworthy source can measure realized yield
Impact Notes
- `pc0000031-tradable`, `pc0000033-tradable`, `pc0000089-tradable`, and `pc0000101-tradable` stay yield-bearing but do not publish synthetic runtime APY rows
- The yield manifest reports the four Tradable notes as intentional gaps instead of silently dropping them from coverage accounting
- Contract-priced zero-volume private-credit notes stay out of live rankings until a trustworthy source can measure realized yield
v8.11May 13, 2026Yield Coverage Expansion and Rate-Derived Fund Sources
Yield coverage now includes the May 2026 curated wrapper, tokenized-treasury, Tier C lending, and commodity exact-pool expansion while keeping invalid multi-exposure DeFiLlama rows out of the native pool lane.
- `gtusdc-gauntlet`, `susdc-spark`, `susdt-spark`, `sgho-aave`, `ybold-yearn`, and `yvusdc-yearn` now own curated single-exposure DeFiLlama native pool mappings
- `aa-falconx-mev-capital` remains covered by its NAV/price-derived fallback path until a usable single-exposure nonzero APY source is available; the current DeFiLlama tranche row is not pinned because it is multi-exposure and reports zero APY
- `benji-franklin-templeton`, `wtgxx-wisdomtree`, `ustbl-spiko`, and `eutbl-spiko` now resolve through the rate-derived benchmark lane, with EUTBL using the EUR benchmark override
- The curated lending allowlist now includes AutoFinance, Neverland, Metrom, Mystic Finance, Bitway, and Frankencoin, with exact deterministic lending pins for `reusd-resupply`, `xusd-babelfish`, and `usda-anzens`
DetailsHide details
Yield Coverage Expansion and Rate-Derived Fund Sources
Yield coverage now includes the May 2026 curated wrapper, tokenized-treasury, Tier C lending, and commodity exact-pool expansion while keeping invalid multi-exposure DeFiLlama rows out of the native pool lane.
- `gtusdc-gauntlet`, `susdc-spark`, `susdt-spark`, `sgho-aave`, `ybold-yearn`, and `yvusdc-yearn` now own curated single-exposure DeFiLlama native pool mappings
- `aa-falconx-mev-capital` remains covered by its NAV/price-derived fallback path until a usable single-exposure nonzero APY source is available; the current DeFiLlama tranche row is not pinned because it is multi-exposure and reports zero APY
- `benji-franklin-templeton`, `wtgxx-wisdomtree`, `ustbl-spiko`, and `eutbl-spiko` now resolve through the rate-derived benchmark lane, with EUTBL using the EUR benchmark override
- The curated lending allowlist now includes AutoFinance, Neverland, Metrom, Mystic Finance, Bitway, and Frankencoin, with exact deterministic lending pins for `reusd-resupply`, `xusd-babelfish`, and `usda-anzens`
Impact Notes
- `gtusdc-gauntlet`, `susdc-spark`, `susdt-spark`, `sgho-aave`, `ybold-yearn`, and `yvusdc-yearn` now own curated single-exposure DeFiLlama native pool mappings
- `aa-falconx-mev-capital` remains covered by its NAV/price-derived fallback path until a usable single-exposure nonzero APY source is available; the current DeFiLlama tranche row is not pinned because it is multi-exposure and reports zero APY
- `benji-franklin-templeton`, `wtgxx-wisdomtree`, `ustbl-spiko`, and `eutbl-spiko` now resolve through the rate-derived benchmark lane, with EUTBL using the EUR benchmark override
- The curated lending allowlist now includes AutoFinance, Neverland, Metrom, Mystic Finance, Bitway, and Frankencoin, with exact deterministic lending pins for `reusd-resupply`, `xusd-babelfish`, and `usda-anzens`
- Exact-pool commodity coverage now includes XAUT on Lista Lending and PAXG on Hydration, and the source-link registry covers the new Tier C and Hydration labels
v8.1May 13, 2026Linked Variant Parent Source Projection
Tracked yield-bearing variants now project eligible wrapper yield sources onto their active parent stablecoin as linked alternative sources, while retaining the variant's own first-class yield row.
- Resolved sources for active tracked variants such as `ybold-yearn` and `sbold-k3-capital` can now publish linked parent candidates under `bold-liquity` with `linked-variant:<variantId>:<sourceKey>` source keys
- Variant assets still own their native runtime rows and history; parent projection is a linked source route for comparison and coverage, not a reversion to parent-owned wrapper metadata
- Third-party `lending-opportunity` rows are not projected from variants to parents, and duplicate parent source pools are skipped so the parent does not receive repeated observations for the same venue
- `felix-cdp` and `sovryn-dex` are now in the curated lending allowlist, with deterministic pool pins for `feusd-felix`, `dllr-sovryn`, `doc-money-on-chain`, and `tgbp-tokenised` so current source-backed opportunities can pass normal APY, TVL, and safety gates
DetailsHide details
Linked Variant Parent Source Projection
Tracked yield-bearing variants now project eligible wrapper yield sources onto their active parent stablecoin as linked alternative sources, while retaining the variant's own first-class yield row.
- Resolved sources for active tracked variants such as `ybold-yearn` and `sbold-k3-capital` can now publish linked parent candidates under `bold-liquity` with `linked-variant:<variantId>:<sourceKey>` source keys
- Variant assets still own their native runtime rows and history; parent projection is a linked source route for comparison and coverage, not a reversion to parent-owned wrapper metadata
- Third-party `lending-opportunity` rows are not projected from variants to parents, and duplicate parent source pools are skipped so the parent does not receive repeated observations for the same venue
- `felix-cdp` and `sovryn-dex` are now in the curated lending allowlist, with deterministic pool pins for `feusd-felix`, `dllr-sovryn`, `doc-money-on-chain`, and `tgbp-tokenised` so current source-backed opportunities can pass normal APY, TVL, and safety gates
Impact Notes
- Resolved sources for active tracked variants such as `ybold-yearn` and `sbold-k3-capital` can now publish linked parent candidates under `bold-liquity` with `linked-variant:<variantId>:<sourceKey>` source keys
- Variant assets still own their native runtime rows and history; parent projection is a linked source route for comparison and coverage, not a reversion to parent-owned wrapper metadata
- Third-party `lending-opportunity` rows are not projected from variants to parents, and duplicate parent source pools are skipped so the parent does not receive repeated observations for the same venue
- `felix-cdp` and `sovryn-dex` are now in the curated lending allowlist, with deterministic pool pins for `feusd-felix`, `dllr-sovryn`, `doc-money-on-chain`, and `tgbp-tokenised` so current source-backed opportunities can pass normal APY, TVL, and safety gates
- Coverage can increase only where a parent has a live source-backed tracked variant; the publisher does not create no-source or synthetic APY rows to inflate coverage counts
v8.0May 13, 2026PYS v8 Source-Risk Penalty Rollout
PYS now applies nested source-risk penalties derived from measured yield-source evidence, while missing or unknown source-risk evidence remains neutral for scoring and rollback compatibility.
- `sourceRisk.sourceRiskPenalty` is populated from measured reward share, source depth, source age, source-switch count, bootstrap history, and sourced venue tier where available; missing or invalid evidence stays neutral (`1`) and penalties clamp to the `1..2.5` range
- DeFiLlama rows without row-level observation timestamps inherit the DeFiLlama input metadata age, keeping provenance freshness and source-age scoring penalties aligned
- PYS now computes source-risk-adjusted row utility before applying the existing safety curve, volatility multiplier, benchmark spread weight, and scaling factor
- Same-confidence source arbitration compares source-risk-adjusted utility after penalty resolution, then falls back to APY and TVL tie-breakers
DetailsHide details
PYS v8 Source-Risk Penalty Rollout
PYS now applies nested source-risk penalties derived from measured yield-source evidence, while missing or unknown source-risk evidence remains neutral for scoring and rollback compatibility.
- `sourceRisk.sourceRiskPenalty` is populated from measured reward share, source depth, source age, source-switch count, bootstrap history, and sourced venue tier where available; missing or invalid evidence stays neutral (`1`) and penalties clamp to the `1..2.5` range
- DeFiLlama rows without row-level observation timestamps inherit the DeFiLlama input metadata age, keeping provenance freshness and source-age scoring penalties aligned
- PYS now computes source-risk-adjusted row utility before applying the existing safety curve, volatility multiplier, benchmark spread weight, and scaling factor
- Same-confidence source arbitration compares source-risk-adjusted utility after penalty resolution, then falls back to APY and TVL tie-breakers
Impact Notes
- `sourceRisk.sourceRiskPenalty` is populated from measured reward share, source depth, source age, source-switch count, bootstrap history, and sourced venue tier where available; missing or invalid evidence stays neutral (`1`) and penalties clamp to the `1..2.5` range
- DeFiLlama rows without row-level observation timestamps inherit the DeFiLlama input metadata age, keeping provenance freshness and source-age scoring penalties aligned
- PYS now computes source-risk-adjusted row utility before applying the existing safety curve, volatility multiplier, benchmark spread weight, and scaling factor
- Same-confidence source arbitration compares source-risk-adjusted utility after penalty resolution, then falls back to APY and TVL tie-breakers
- The hourly publisher now writes the `yield-rankings` cache through CAS before replacing current `yield_data` rows, so failed cache writes or older-run CAS skips preserve the previous published D1 snapshot for downstream readers
- External lending opportunities remain no-op inputs for base stablecoin Safety Scores; report-card yield-risk helpers normalize the source-risk payload but return explicit no-op adjustments until a separate report-card methodology version consumes them
- Legacy `v7.48` payloads without `sourceRisk`, rank, attribution, or publication fields remain schema-valid, and missing source-risk fields continue to behave neutrally
v7.48May 13, 2026dTRINITY sdUSD Multi-Chain Weighted Source
dTRINITY dUSD yield now publishes a TVL-weighted sdUSD source across the Ethereum and Fraxtal dStake vaults instead of using only the Ethereum DeFiLlama row.
- `dusd-dtrinity` resolves an exact DeFiLlama weighted pool group for Ethereum and Fraxtal sdUSD
- The synthetic source key starts a new history series so prior Ethereum-only rows are not treated as equivalent 30-day samples
- The dUSD metadata entry stays unchanged because its checked-in collateral and contract data already documents chain-isolated deployments
DetailsHide details
dTRINITY sdUSD Multi-Chain Weighted Source
dTRINITY dUSD yield now publishes a TVL-weighted sdUSD source across the Ethereum and Fraxtal dStake vaults instead of using only the Ethereum DeFiLlama row.
- `dusd-dtrinity` resolves an exact DeFiLlama weighted pool group for Ethereum and Fraxtal sdUSD
- The synthetic source key starts a new history series so prior Ethereum-only rows are not treated as equivalent 30-day samples
- The dUSD metadata entry stays unchanged because its checked-in collateral and contract data already documents chain-isolated deployments
Impact Notes
- `dusd-dtrinity` resolves an exact DeFiLlama weighted pool group for Ethereum and Fraxtal sdUSD
- The synthetic source key starts a new history series so prior Ethereum-only rows are not treated as equivalent 30-day samples
- The dUSD metadata entry stays unchanged because its checked-in collateral and contract data already documents chain-isolated deployments
v7.47May 13, 2026Avant savUSD ownership correction
Avant yield is now attributed to the tracked savUSD senior-tranche wrapper rather than base avUSD, matching Avant's current token documentation.
- `savusd-avant` now owns the Avant native savings pool directly in the yield manifest
- `avusd-avant` is no longer marked yield-bearing because avUSD is the non-yield base asset and savUSD is the yield-accruing route
- Parent-side `avusd-avant` savUSD variant and pool mappings were removed so new yield history publishes under the tracked savUSD asset
DetailsHide details
Avant savUSD ownership correction
Avant yield is now attributed to the tracked savUSD senior-tranche wrapper rather than base avUSD, matching Avant's current token documentation.
- `savusd-avant` now owns the Avant native savings pool directly in the yield manifest
- `avusd-avant` is no longer marked yield-bearing because avUSD is the non-yield base asset and savUSD is the yield-accruing route
- Parent-side `avusd-avant` savUSD variant and pool mappings were removed so new yield history publishes under the tracked savUSD asset
Impact Notes
- `savusd-avant` now owns the Avant native savings pool directly in the yield manifest
- `avusd-avant` is no longer marked yield-bearing because avUSD is the non-yield base asset and savUSD is the yield-accruing route
- Parent-side `avusd-avant` savUSD variant and pool mappings were removed so new yield history publishes under the tracked savUSD asset
v7.46May 12, 2026Zephyr ZYS direct yield source
Zephyr yield is now attributed to the tracked ZYS yield-share wrapper rather than base ZSD, using Zephyr Scanner's historical-return API as a direct protocol source.
- `zys-zephyr-protocol` is tracked as a yield-bearing NAV wrapper over `zsd-zephyr-protocol`
- `protocol-api:zys-zephyr-protocol` reads Zephyr Scanner one-day effective APY and publishes it as `Zephyr Scanner ZYS returns`
- `zsd-zephyr-protocol` remains non-yield-bearing so the base stablecoin does not receive the wrapper's APY row
DetailsHide details
Zephyr ZYS direct yield source
Zephyr yield is now attributed to the tracked ZYS yield-share wrapper rather than base ZSD, using Zephyr Scanner's historical-return API as a direct protocol source.
- `zys-zephyr-protocol` is tracked as a yield-bearing NAV wrapper over `zsd-zephyr-protocol`
- `protocol-api:zys-zephyr-protocol` reads Zephyr Scanner one-day effective APY and publishes it as `Zephyr Scanner ZYS returns`
- `zsd-zephyr-protocol` remains non-yield-bearing so the base stablecoin does not receive the wrapper's APY row
Impact Notes
- `zys-zephyr-protocol` is tracked as a yield-bearing NAV wrapper over `zsd-zephyr-protocol`
- `protocol-api:zys-zephyr-protocol` reads Zephyr Scanner one-day effective APY and publishes it as `Zephyr Scanner ZYS returns`
- `zsd-zephyr-protocol` remains non-yield-bearing so the base stablecoin does not receive the wrapper's APY row
v7.45May 8, 2026USG Yield Ownership Correction
Tangent USG is no longer treated as a yield-bearing asset because yield accrues in the separate sUSG savings wrapper, not in USG itself.
- `usg-tangent` now carries `yieldBearing: false`, matching Tangent's USG/sUSG split
- `usg-tangent` is removed from intentional yield-gap coverage because it is no longer part of the yield-bearing manifest universe
- The intentional-gap manifest remains reserved for assets that are actually marked yield-bearing but lack a reliable runtime APY source
DetailsHide details
USG Yield Ownership Correction
Tangent USG is no longer treated as a yield-bearing asset because yield accrues in the separate sUSG savings wrapper, not in USG itself.
- `usg-tangent` now carries `yieldBearing: false`, matching Tangent's USG/sUSG split
- `usg-tangent` is removed from intentional yield-gap coverage because it is no longer part of the yield-bearing manifest universe
- The intentional-gap manifest remains reserved for assets that are actually marked yield-bearing but lack a reliable runtime APY source
Impact Notes
- `usg-tangent` now carries `yieldBearing: false`, matching Tangent's USG/sUSG split
- `usg-tangent` is removed from intentional yield-gap coverage because it is no longer part of the yield-bearing manifest universe
- The intentional-gap manifest remains reserved for assets that are actually marked yield-bearing but lack a reliable runtime APY source
v7.44May 5, 2026Solayer sUSD Treasury fallback coverage
Solayer sUSD is covered through the rate-derived Treasury fallback lane, while newly added reward-bearing account or restricted strategy assets stay out of runtime yield until a reliable APY source is wired.
- `susd-solayer` now has an explicit rate-derived T-bill fallback strategy in the yield manifest
- Reward-bearing account products and restricted strategy tokens without reliable public APY telemetry are not marked as runtime yield-bearing, so they do not publish misleading zero-strategy yield rows
- The active yield-bearing invariant still requires every marked asset to have a runtime strategy before it can enter live yield rankings
DetailsHide details
Solayer sUSD Treasury fallback coverage
Solayer sUSD is covered through the rate-derived Treasury fallback lane, while newly added reward-bearing account or restricted strategy assets stay out of runtime yield until a reliable APY source is wired.
- `susd-solayer` now has an explicit rate-derived T-bill fallback strategy in the yield manifest
- Reward-bearing account products and restricted strategy tokens without reliable public APY telemetry are not marked as runtime yield-bearing, so they do not publish misleading zero-strategy yield rows
- The active yield-bearing invariant still requires every marked asset to have a runtime strategy before it can enter live yield rankings
Impact Notes
- `susd-solayer` now has an explicit rate-derived T-bill fallback strategy in the yield manifest
- Reward-bearing account products and restricted strategy tokens without reliable public APY telemetry are not marked as runtime yield-bearing, so they do not publish misleading zero-strategy yield rows
- The active yield-bearing invariant still requires every marked asset to have a runtime strategy before it can enter live yield rankings
v7.43Apr 22, 2026Tracked savings wrappers own their native APY history
Base stablecoins no longer publish tracked savings-wrapper APY through parent-owned config or historical series when the wrapper is itself a tracked asset.
- `sUSDe`, `sUSDS`, `sDAI`, `sfrxUSD`, and `scrvUSD` now own the native runtime pool and deterministic rate readers that used to live on `USDe`, `USDS`, `DAI`, `frxUSD`, and `crvUSD`
- Those five base assets no longer advertise wrapper-owned `yieldBearing` metadata or serve the old wrapper APY series through `/api/yield-history`; the historical discontinuity is intentional and reflects corrected ownership rather than a missing backfill
- Parent-side wrapper source keys are filtered immediately at read time and purged on the hourly yield sync path, so misattributed pre-handoff rows do not linger under the base ids after rollout
DetailsHide details
Tracked savings wrappers own their native APY history
Base stablecoins no longer publish tracked savings-wrapper APY through parent-owned config or historical series when the wrapper is itself a tracked asset.
- `sUSDe`, `sUSDS`, `sDAI`, `sfrxUSD`, and `scrvUSD` now own the native runtime pool and deterministic rate readers that used to live on `USDe`, `USDS`, `DAI`, `frxUSD`, and `crvUSD`
- Those five base assets no longer advertise wrapper-owned `yieldBearing` metadata or serve the old wrapper APY series through `/api/yield-history`; the historical discontinuity is intentional and reflects corrected ownership rather than a missing backfill
- Parent-side wrapper source keys are filtered immediately at read time and purged on the hourly yield sync path, so misattributed pre-handoff rows do not linger under the base ids after rollout
Impact Notes
- `sUSDe`, `sUSDS`, `sDAI`, `sfrxUSD`, and `scrvUSD` now own the native runtime pool and deterministic rate readers that used to live on `USDe`, `USDS`, `DAI`, `frxUSD`, and `crvUSD`
- Those five base assets no longer advertise wrapper-owned `yieldBearing` metadata or serve the old wrapper APY series through `/api/yield-history`; the historical discontinuity is intentional and reflects corrected ownership rather than a missing backfill
- Parent-side wrapper source keys are filtered immediately at read time and purged on the hourly yield sync path, so misattributed pre-handoff rows do not linger under the base ids after rollout
v7.42Apr 21, 2026First-Class Risk Wrapper Yield Assets
Yield wrappers whose holder risk differs materially from the base stablecoin now own their yield rows directly instead of publishing through the base asset.
- Cap `stcUSD`, GAIB `sAID`, Main Street `msY`, and K3 `sBOLD` are tracked as first-class yield-bearing NAV/wrapper assets rather than as native yield on cUSD, AID, msUSD, or BOLD
- `stUSDS` uses the generic on-chain ERC-4626 exchange-rate reader because the risk-capital token is distinct from Sky's plain sUSDS savings wrapper and has no standalone DeFiLlama stablecoin row
- Aave Umbrella `stkGHO` is inventoried as an intentional runtime-yield gap until a reliable reward APY source is available, avoiding a misleading zero-yield publication
DetailsHide details
First-Class Risk Wrapper Yield Assets
Yield wrappers whose holder risk differs materially from the base stablecoin now own their yield rows directly instead of publishing through the base asset.
- Cap `stcUSD`, GAIB `sAID`, Main Street `msY`, and K3 `sBOLD` are tracked as first-class yield-bearing NAV/wrapper assets rather than as native yield on cUSD, AID, msUSD, or BOLD
- `stUSDS` uses the generic on-chain ERC-4626 exchange-rate reader because the risk-capital token is distinct from Sky's plain sUSDS savings wrapper and has no standalone DeFiLlama stablecoin row
- Aave Umbrella `stkGHO` is inventoried as an intentional runtime-yield gap until a reliable reward APY source is available, avoiding a misleading zero-yield publication
Impact Notes
- Cap `stcUSD`, GAIB `sAID`, Main Street `msY`, and K3 `sBOLD` are tracked as first-class yield-bearing NAV/wrapper assets rather than as native yield on cUSD, AID, msUSD, or BOLD
- `stUSDS` uses the generic on-chain ERC-4626 exchange-rate reader because the risk-capital token is distinct from Sky's plain sUSDS savings wrapper and has no standalone DeFiLlama stablecoin row
- Aave Umbrella `stkGHO` is inventoried as an intentional runtime-yield gap until a reliable reward APY source is available, avoiding a misleading zero-yield publication
v7.41Apr 21, 2026On-Chain Bootstrap Seeds Excluded From Rolling APY
Deterministic on-chain seed rows used only to establish a 7-day exchange-rate anchor no longer count as observed zero-yield samples in rolling APY, excess-yield, stability, or PYS calculations.
- On-chain rows whose first observations were bootstrap `0%` APY placeholders now compute `apy7d`, `apy30d`, `excessYield`, yield stability, and PYS from real APY samples once an anchor exists
- `excessYield` remains defined as `apy30d - benchmarkRate`; detail-page and hero-chip copy now labels it as 30-day based so it is not confused with current APY spread
- Historical seed rows remain in `yield_history` for exchange-rate anchoring, but the evaluator excludes rows with `data_source='onchain'`, `exchange_rate IS NOT NULL`, `apy = 0`, and `apy_base IS NULL` from rolling stats
DetailsHide details
On-Chain Bootstrap Seeds Excluded From Rolling APY
Deterministic on-chain seed rows used only to establish a 7-day exchange-rate anchor no longer count as observed zero-yield samples in rolling APY, excess-yield, stability, or PYS calculations.
- On-chain rows whose first observations were bootstrap `0%` APY placeholders now compute `apy7d`, `apy30d`, `excessYield`, yield stability, and PYS from real APY samples once an anchor exists
- `excessYield` remains defined as `apy30d - benchmarkRate`; detail-page and hero-chip copy now labels it as 30-day based so it is not confused with current APY spread
- Historical seed rows remain in `yield_history` for exchange-rate anchoring, but the evaluator excludes rows with `data_source='onchain'`, `exchange_rate IS NOT NULL`, `apy = 0`, and `apy_base IS NULL` from rolling stats
Impact Notes
- On-chain rows whose first observations were bootstrap `0%` APY placeholders now compute `apy7d`, `apy30d`, `excessYield`, yield stability, and PYS from real APY samples once an anchor exists
- `excessYield` remains defined as `apy30d - benchmarkRate`; detail-page and hero-chip copy now labels it as 30-day based so it is not confused with current APY spread
- Historical seed rows remain in `yield_history` for exchange-rate anchoring, but the evaluator excludes rows with `data_source='onchain'`, `exchange_rate IS NOT NULL`, `apy = 0`, and `apy_base IS NULL` from rolling stats
v7.4Apr 13, 2026Pre-Launch Lending Overrides Quarantined
Pre-launch assets are now isolated from deterministic lending override publication, so upcoming coins cannot appear in live yield rankings before launch.
- `pusd-polaris` is now an explicit pre-launch intentional gap instead of resolving through a deterministic Silo v2 lending override
- Yield source resolution now skips configured explicit or deterministic lending candidates unless the target asset is in the active stablecoin universe
- The stablecoin metadata registry now keeps pre-launch assets in per-coin files with `status: "pre-launch"`; the legacy `shared/data/stablecoins/pre-launch.json` shell stays empty while upcoming pages and launch alerts continue to work
DetailsHide details
Pre-Launch Lending Overrides Quarantined
Pre-launch assets are now isolated from deterministic lending override publication, so upcoming coins cannot appear in live yield rankings before launch.
- `pusd-polaris` is now an explicit pre-launch intentional gap instead of resolving through a deterministic Silo v2 lending override
- Yield source resolution now skips configured explicit or deterministic lending candidates unless the target asset is in the active stablecoin universe
- The stablecoin metadata registry now keeps pre-launch assets in per-coin files with `status: "pre-launch"`; the legacy `shared/data/stablecoins/pre-launch.json` shell stays empty while upcoming pages and launch alerts continue to work
Impact Notes
- `pusd-polaris` is now an explicit pre-launch intentional gap instead of resolving through a deterministic Silo v2 lending override
- Yield source resolution now skips configured explicit or deterministic lending candidates unless the target asset is in the active stablecoin universe
- The stablecoin metadata registry now keeps pre-launch assets in per-coin files with `status: "pre-launch"`; the legacy `shared/data/stablecoins/pre-launch.json` shell stays empty while upcoming pages and launch alerts continue to work
v7.3Apr 11, 2026scrvUSD Current-Rate On-Chain Reader
Curve Savings crvUSD now uses a dedicated Yearn V3 profit-unlock reader for current APY instead of the generic 7-day ERC-4626 exchange-rate delta.
- Legacy parent-side `crvusd-curve` rows are quarantined from the generic `convertToAssets(1e18)` Tier 1 reader because that trailing 7-day delta understated Curve's current savings APY
- The new `onchain:scrvusd-curve:scrvusd-current-rate` source reads scrvUSD vault `totalSupply`, `totalAssets`, `profitUnlockingRate`, and `fullProfitUnlockDate` to compute the current daily-compounded APY
- The existing DeFiLlama scrvUSD pool remains as a curated alternative and fallback row, while source-specific history starts fresh under the new current-rate source key
DetailsHide details
scrvUSD Current-Rate On-Chain Reader
Curve Savings crvUSD now uses a dedicated Yearn V3 profit-unlock reader for current APY instead of the generic 7-day ERC-4626 exchange-rate delta.
- Legacy parent-side `crvusd-curve` rows are quarantined from the generic `convertToAssets(1e18)` Tier 1 reader because that trailing 7-day delta understated Curve's current savings APY
- The new `onchain:scrvusd-curve:scrvusd-current-rate` source reads scrvUSD vault `totalSupply`, `totalAssets`, `profitUnlockingRate`, and `fullProfitUnlockDate` to compute the current daily-compounded APY
- The existing DeFiLlama scrvUSD pool remains as a curated alternative and fallback row, while source-specific history starts fresh under the new current-rate source key
Impact Notes
- Legacy parent-side `crvusd-curve` rows are quarantined from the generic `convertToAssets(1e18)` Tier 1 reader because that trailing 7-day delta understated Curve's current savings APY
- The new `onchain:scrvusd-curve:scrvusd-current-rate` source reads scrvUSD vault `totalSupply`, `totalAssets`, `profitUnlockingRate`, and `fullProfitUnlockDate` to compute the current daily-compounded APY
- The existing DeFiLlama scrvUSD pool remains as a curated alternative and fallback row, while source-specific history starts fresh under the new current-rate source key
v7.2Apr 4, 2026USD.AI Base/Yield Token Split
Yield coverage now treats sUSDai as its own tracked yield-bearing NAV token instead of hanging the savings venue off the base USDai page via wrapper indirection.
- `usdai-usd-ai` is no longer treated as a yield-bearing wrapper host, so base USDai stops inheriting sUSDai's savings pool as its native yield source
- New tracked asset `susdai-usd-ai` now owns the existing USD.AI savings pool mapping directly, aligning yield rankings with the dedicated sUSDai detail page and nav-token semantics
- The stale USD.AI wrapper config that pointed at Arbitrum PYUSD as the `sUSDai` variant address is removed, eliminating a concrete address-level misbinding
DetailsHide details
USD.AI Base/Yield Token Split
Yield coverage now treats sUSDai as its own tracked yield-bearing NAV token instead of hanging the savings venue off the base USDai page via wrapper indirection.
- `usdai-usd-ai` is no longer treated as a yield-bearing wrapper host, so base USDai stops inheriting sUSDai's savings pool as its native yield source
- New tracked asset `susdai-usd-ai` now owns the existing USD.AI savings pool mapping directly, aligning yield rankings with the dedicated sUSDai detail page and nav-token semantics
- The stale USD.AI wrapper config that pointed at Arbitrum PYUSD as the `sUSDai` variant address is removed, eliminating a concrete address-level misbinding
Impact Notes
- `usdai-usd-ai` is no longer treated as a yield-bearing wrapper host, so base USDai stops inheriting sUSDai's savings pool as its native yield source
- New tracked asset `susdai-usd-ai` now owns the existing USD.AI savings pool mapping directly, aligning yield rankings with the dedicated sUSDai detail page and nav-token semantics
- The stale USD.AI wrapper config that pointed at Arbitrum PYUSD as the `sUSDai` variant address is removed, eliminating a concrete address-level misbinding
v7.1Apr 3, 2026Explicit Intentional Gaps For Pre-Launch Yield Assets
Pre-launch yield-bearing assets without a live runtime source are now emitted as explicit intentional manifest gaps instead of appearing as covered entries with zero strategies.
- `bd-basedollar` is now classified the same way as other pre-launch yield-bearing assets with no live runtime source, so the manifest no longer reports it as a covered entry with zero strategies
- Coverage audits and operator tooling continue to inventory every yield-bearing asset, but pre-launch gaps are now fail-closed and explicit rather than implicit
- The public yield methodology docs and timeline now call out the intentional-gap treatment for these pre-launch assets
DetailsHide details
Explicit Intentional Gaps For Pre-Launch Yield Assets
Pre-launch yield-bearing assets without a live runtime source are now emitted as explicit intentional manifest gaps instead of appearing as covered entries with zero strategies.
- `bd-basedollar` is now classified the same way as other pre-launch yield-bearing assets with no live runtime source, so the manifest no longer reports it as a covered entry with zero strategies
- Coverage audits and operator tooling continue to inventory every yield-bearing asset, but pre-launch gaps are now fail-closed and explicit rather than implicit
- The public yield methodology docs and timeline now call out the intentional-gap treatment for these pre-launch assets
Impact Notes
- `bd-basedollar` is now classified the same way as other pre-launch yield-bearing assets with no live runtime source, so the manifest no longer reports it as a covered entry with zero strategies
- Coverage audits and operator tooling continue to inventory every yield-bearing asset, but pre-launch gaps are now fail-closed and explicit rather than implicit
- The public yield methodology docs and timeline now call out the intentional-gap treatment for these pre-launch assets
v7.0Apr 3, 2026Supply-Relative Size Gates For Published Lending Suggestions
Published lending-opportunity rows now require observable venue TVL and must be large enough relative to the tracked stablecoin's circulating supply before they can surface as live recommendations.
- For tracked stablecoins, lending-opportunity rows now require `sourceTvlUsd` and must clear `max(existing absolute floor, 0.1% of current supply)` before publication
- This applies across auto-discovered DeFiLlama lending markets, deterministic exact-pool overrides, and supplemental protocol-native lending venues
- TVL-less protocol suggestions no longer fail open into live recommendations; until venue size is observable they are omitted from published lending-opportunity coverage
- Yield methodology docs and changelog entries now document the new supply-relative recommendation gate explicitly
DetailsHide details
Supply-Relative Size Gates For Published Lending Suggestions
Published lending-opportunity rows now require observable venue TVL and must be large enough relative to the tracked stablecoin's circulating supply before they can surface as live recommendations.
- For tracked stablecoins, lending-opportunity rows now require `sourceTvlUsd` and must clear `max(existing absolute floor, 0.1% of current supply)` before publication
- This applies across auto-discovered DeFiLlama lending markets, deterministic exact-pool overrides, and supplemental protocol-native lending venues
- TVL-less protocol suggestions no longer fail open into live recommendations; until venue size is observable they are omitted from published lending-opportunity coverage
- Yield methodology docs and changelog entries now document the new supply-relative recommendation gate explicitly
Impact Notes
- For tracked stablecoins, lending-opportunity rows now require `sourceTvlUsd` and must clear `max(existing absolute floor, 0.1% of current supply)` before publication
- This applies across auto-discovered DeFiLlama lending markets, deterministic exact-pool overrides, and supplemental protocol-native lending venues
- TVL-less protocol suggestions no longer fail open into live recommendations; until venue size is observable they are omitted from published lending-opportunity coverage
- Yield methodology docs and changelog entries now document the new supply-relative recommendation gate explicitly
v6.9Mar 28, 2026K3 sBOLD Added As A Distinct Native BOLD Yield Source
Yield Intelligence now publishes Liquity's K3 `sBOLD` wrapper as a second native BOLD source instead of limiting BOLD coverage to the base `yBOLD` wrapper path.
- The supplemental Yearn/Kong reader now recognizes Ethereum `Staked yBOLD` and pins it to `bold-liquity` as `K3: sBOLD`
- This source is classified as `lending-vault`, keeping BOLD's wrapper-over-wrapper Stability Pool path in the native-yield bucket rather than `lending-opportunity` or `governance-set`
- Source-link resolution now deep-links `K3: sBOLD` to Liquity's dedicated earn route
- Yield methodology docs and the public changelog now document the additional native BOLD source coverage
DetailsHide details
K3 sBOLD Added As A Distinct Native BOLD Yield Source
Yield Intelligence now publishes Liquity's K3 `sBOLD` wrapper as a second native BOLD source instead of limiting BOLD coverage to the base `yBOLD` wrapper path.
- The supplemental Yearn/Kong reader now recognizes Ethereum `Staked yBOLD` and pins it to `bold-liquity` as `K3: sBOLD`
- This source is classified as `lending-vault`, keeping BOLD's wrapper-over-wrapper Stability Pool path in the native-yield bucket rather than `lending-opportunity` or `governance-set`
- Source-link resolution now deep-links `K3: sBOLD` to Liquity's dedicated earn route
- Yield methodology docs and the public changelog now document the additional native BOLD source coverage
Impact Notes
- The supplemental Yearn/Kong reader now recognizes Ethereum `Staked yBOLD` and pins it to `bold-liquity` as `K3: sBOLD`
- This source is classified as `lending-vault`, keeping BOLD's wrapper-over-wrapper Stability Pool path in the native-yield bucket rather than `lending-opportunity` or `governance-set`
- Source-link resolution now deep-links `K3: sBOLD` to Liquity's dedicated earn route
- Yield methodology docs and the public changelog now document the additional native BOLD source coverage
v6.8Mar 28, 2026Blocked USR-Linked Lending Suggestions
Yield suggestion publication now excludes lending-opportunity venues that are explicitly tied to Resolv / USR wrappers, so severely impaired wrapper ecosystems cannot surface as recommended base-asset yield routes.
- Supplemental protocol-API lending candidates such as `Morpho: Resolv USDC` are dropped before ranking publication when the venue label resolves to Resolv / `USR`, `stUSR`, or `wstUSR` exposures
- Auto-discovered DeFiLlama lending pools now preserve `poolMeta` in the shared cache and apply the same Resolv / USR exclusion rule, keeping the hourly publisher and the slower supplemental lane aligned
- The exclusion is scoped to `lending-opportunity` venues, so native tracked yield assets and their own methodology coverage remain unchanged
- Wrapper-over-native venues such as BOLD / `yBOLD` are documented and classified as native yield rather than `governance-set` when the wrapper only packages the protocol's own Stability Pool return
DetailsHide details
Blocked USR-Linked Lending Suggestions
Yield suggestion publication now excludes lending-opportunity venues that are explicitly tied to Resolv / USR wrappers, so severely impaired wrapper ecosystems cannot surface as recommended base-asset yield routes.
- Supplemental protocol-API lending candidates such as `Morpho: Resolv USDC` are dropped before ranking publication when the venue label resolves to Resolv / `USR`, `stUSR`, or `wstUSR` exposures
- Auto-discovered DeFiLlama lending pools now preserve `poolMeta` in the shared cache and apply the same Resolv / USR exclusion rule, keeping the hourly publisher and the slower supplemental lane aligned
- The exclusion is scoped to `lending-opportunity` venues, so native tracked yield assets and their own methodology coverage remain unchanged
- Wrapper-over-native venues such as BOLD / `yBOLD` are documented and classified as native yield rather than `governance-set` when the wrapper only packages the protocol's own Stability Pool return
Impact Notes
- Supplemental protocol-API lending candidates such as `Morpho: Resolv USDC` are dropped before ranking publication when the venue label resolves to Resolv / `USR`, `stUSR`, or `wstUSR` exposures
- Auto-discovered DeFiLlama lending pools now preserve `poolMeta` in the shared cache and apply the same Resolv / USR exclusion rule, keeping the hourly publisher and the slower supplemental lane aligned
- The exclusion is scoped to `lending-opportunity` venues, so native tracked yield assets and their own methodology coverage remain unchanged
- Wrapper-over-native venues such as BOLD / `yBOLD` are documented and classified as native yield rather than `governance-set` when the wrapper only packages the protocol's own Stability Pool return
- Yield methodology docs and the public changelog now document the explicit USR-linked venue exclusion rule
v6.7Mar 27, 2026Benchmark-Aware PYS For Cross-Currency Yield Context
Pharos Yield Score now preserves raw APY as the base yield term, then adds a modest share of row-level benchmark spread before applying the steep safety curve and consistency multiplier.
- PYS now computes `effectiveYield = max(0, apy30d + 0.25 * (apy30d - benchmarkRate))` before dividing by the adjusted risk penalty, so local-currency benchmark outperformance affects the score directly
- The change rewards rows that clear tighter EUR, CHF, or other native hurdles without turning PYS into a pure excess-yield ranker
- Worker-time scoring and live `/api/yield-rankings` safety hydration now pass row benchmark context into the shared scorer, removing another source of score drift risk
- Leaderboard/detail breakdowns, methodology docs, and yield-changelog entries now expose the benchmark adjustment and effective-yield terms explicitly
DetailsHide details
Benchmark-Aware PYS For Cross-Currency Yield Context
Pharos Yield Score now preserves raw APY as the base yield term, then adds a modest share of row-level benchmark spread before applying the steep safety curve and consistency multiplier.
- PYS now computes `effectiveYield = max(0, apy30d + 0.25 * (apy30d - benchmarkRate))` before dividing by the adjusted risk penalty, so local-currency benchmark outperformance affects the score directly
- The change rewards rows that clear tighter EUR, CHF, or other native hurdles without turning PYS into a pure excess-yield ranker
- Worker-time scoring and live `/api/yield-rankings` safety hydration now pass row benchmark context into the shared scorer, removing another source of score drift risk
- Leaderboard/detail breakdowns, methodology docs, and yield-changelog entries now expose the benchmark adjustment and effective-yield terms explicitly
Impact Notes
- PYS now computes `effectiveYield = max(0, apy30d + 0.25 * (apy30d - benchmarkRate))` before dividing by the adjusted risk penalty, so local-currency benchmark outperformance affects the score directly
- The change rewards rows that clear tighter EUR, CHF, or other native hurdles without turning PYS into a pure excess-yield ranker
- Worker-time scoring and live `/api/yield-rankings` safety hydration now pass row benchmark context into the shared scorer, removing another source of score drift risk
- Leaderboard/detail breakdowns, methodology docs, and yield-changelog entries now expose the benchmark adjustment and effective-yield terms explicitly
v6.6Mar 27, 2026Supplemental Freshness Windows Match The 4-Hour Cache Lane
Read-time `data-stale` warnings now give supplemental protocol-API and optional Aave/Compound rows a freshness window that matches their 4-hour cache cadence instead of treating them like hourly publisher data.
- Supplemental-backed protocol-API rows now wait 6 hours before surfacing `data-stale`, so normal end-of-cycle hourly publishes no longer show false stale warnings
- Optional Aave V3 and Compound V3 rows now use the same 6 hour freshness window because they are refreshed by `sync-yield-supplemental`, not the hourly publisher
- Deterministic hourly on-chain rows keep the existing three-hour stale threshold, so only the slower supplemental families move
- Yield methodology and operations docs now distinguish hourly, supplemental, and daily freshness windows explicitly
DetailsHide details
Supplemental Freshness Windows Match The 4-Hour Cache Lane
Read-time `data-stale` warnings now give supplemental protocol-API and optional Aave/Compound rows a freshness window that matches their 4-hour cache cadence instead of treating them like hourly publisher data.
- Supplemental-backed protocol-API rows now wait 6 hours before surfacing `data-stale`, so normal end-of-cycle hourly publishes no longer show false stale warnings
- Optional Aave V3 and Compound V3 rows now use the same 6 hour freshness window because they are refreshed by `sync-yield-supplemental`, not the hourly publisher
- Deterministic hourly on-chain rows keep the existing three-hour stale threshold, so only the slower supplemental families move
- Yield methodology and operations docs now distinguish hourly, supplemental, and daily freshness windows explicitly
Impact Notes
- Supplemental-backed protocol-API rows now wait 6 hours before surfacing `data-stale`, so normal end-of-cycle hourly publishes no longer show false stale warnings
- Optional Aave V3 and Compound V3 rows now use the same 6 hour freshness window because they are refreshed by `sync-yield-supplemental`, not the hourly publisher
- Deterministic hourly on-chain rows keep the existing three-hour stale threshold, so only the slower supplemental families move
- Yield methodology and operations docs now distinguish hourly, supplemental, and daily freshness windows explicitly
v6.5Mar 27, 2026Optional RPC Hardening And Explicit Wrapper Venue Pins
Supplemental optional RPC readers now probe configured endpoints more resiliently and expose per-family miss telemetry, while wrapper matching can pin the intended DeFiLlama venue when one wrapper token appears across multiple pools.
- Compound V3 now probes both configured RPC endpoints instead of only the fallback URL, and Aave V3 plus Compound V3 rotate endpoint order across targets with a slightly deeper retry budget on the best-effort supplemental lane
- `sync-yield-supplemental` metadata now records optional RPC family target counts, attempted counts, resolved target counts, emitted row counts, missing target counts, per-chain miss breakdowns, and miss reasons
- Layer 2 wrapper matching can now pin a preferred DeFiLlama project in addition to chain and address, so shared wrapper tokens like `sUSDe`, `sUSDS`, and similar cases stay fail-closed without attaching to the wrong venue
- Under-specified wrapper configs now carry explicit live chain/address/project pins for native venues such as `sUSDai`, `sNUSD`, `savUSD`, `sUSDu`, `syzUSD`, `sAID`, `stCUSD`, and `sGHO`
DetailsHide details
Optional RPC Hardening And Explicit Wrapper Venue Pins
Supplemental optional RPC readers now probe configured endpoints more resiliently and expose per-family miss telemetry, while wrapper matching can pin the intended DeFiLlama venue when one wrapper token appears across multiple pools.
- Compound V3 now probes both configured RPC endpoints instead of only the fallback URL, and Aave V3 plus Compound V3 rotate endpoint order across targets with a slightly deeper retry budget on the best-effort supplemental lane
- `sync-yield-supplemental` metadata now records optional RPC family target counts, attempted counts, resolved target counts, emitted row counts, missing target counts, per-chain miss breakdowns, and miss reasons
- Layer 2 wrapper matching can now pin a preferred DeFiLlama project in addition to chain and address, so shared wrapper tokens like `sUSDe`, `sUSDS`, and similar cases stay fail-closed without attaching to the wrong venue
- Under-specified wrapper configs now carry explicit live chain/address/project pins for native venues such as `sUSDai`, `sNUSD`, `savUSD`, `sUSDu`, `syzUSD`, `sAID`, `stCUSD`, and `sGHO`
Impact Notes
- Compound V3 now probes both configured RPC endpoints instead of only the fallback URL, and Aave V3 plus Compound V3 rotate endpoint order across targets with a slightly deeper retry budget on the best-effort supplemental lane
- `sync-yield-supplemental` metadata now records optional RPC family target counts, attempted counts, resolved target counts, emitted row counts, missing target counts, per-chain miss breakdowns, and miss reasons
- Layer 2 wrapper matching can now pin a preferred DeFiLlama project in addition to chain and address, so shared wrapper tokens like `sUSDe`, `sUSDS`, and similar cases stay fail-closed without attaching to the wrong venue
- Under-specified wrapper configs now carry explicit live chain/address/project pins for native venues such as `sUSDai`, `sNUSD`, `savUSD`, `sUSDu`, `syzUSD`, `sAID`, `stCUSD`, and `sGHO`
v6.4Mar 27, 2026Protocol-Native Lending Readers No Longer Outrank Stronger Native Wrapper Yields
Supplemental lending-market readers that query protocol state directly now stay in the curated protocol-native tier instead of inheriting Tier 1 deterministic precedence reserved for native wrapper sources.
- Aave V3 supplemental supply-rate rows now participate in arbitration as curated protocol-native venues rather than deterministic wrapper rows
- Native wrapper yields such as sDAI no longer lose the primary row to a lower-yield supplemental lending market purely because the lending reader used an on-chain transport
- Source keys and alternative-source history remain unchanged, so only arbitration precedence moves
- Yield methodology docs and the timeline now document that Tier 2.5 lending readers do not outrank stronger native wrapper yields by source family alone
DetailsHide details
Protocol-Native Lending Readers No Longer Outrank Stronger Native Wrapper Yields
Supplemental lending-market readers that query protocol state directly now stay in the curated protocol-native tier instead of inheriting Tier 1 deterministic precedence reserved for native wrapper sources.
- Aave V3 supplemental supply-rate rows now participate in arbitration as curated protocol-native venues rather than deterministic wrapper rows
- Native wrapper yields such as sDAI no longer lose the primary row to a lower-yield supplemental lending market purely because the lending reader used an on-chain transport
- Source keys and alternative-source history remain unchanged, so only arbitration precedence moves
- Yield methodology docs and the timeline now document that Tier 2.5 lending readers do not outrank stronger native wrapper yields by source family alone
Impact Notes
- Aave V3 supplemental supply-rate rows now participate in arbitration as curated protocol-native venues rather than deterministic wrapper rows
- Native wrapper yields such as sDAI no longer lose the primary row to a lower-yield supplemental lending market purely because the lending reader used an on-chain transport
- Source keys and alternative-source history remain unchanged, so only arbitration precedence moves
- Yield methodology docs and the timeline now document that Tier 2.5 lending readers do not outrank stronger native wrapper yields by source family alone
v6.3Mar 27, 2026Restored Mixed-View Scatter Benchmark Frame
The `/yield` scatter plot now keeps its four-zone benchmark frame visible on mixed-benchmark scopes by using the default USD benchmark for orientation, instead of dropping the overlay entirely.
- Mixed-benchmark scopes such as the default `All` view now render the horizontal benchmark line and four shaded quadrants again
- When the visible set mixes USD, EUR, and CHF hurdles, the scatter frame explicitly uses the USD benchmark as a shared visual reference
- Mixed-view copy now tells users that the background zones are an orientation frame and that each row's benchmark tag still governs excess-yield interpretation
- Yield methodology docs and the changelog now describe the restored mixed-view scatter behavior explicitly
DetailsHide details
Restored Mixed-View Scatter Benchmark Frame
The `/yield` scatter plot now keeps its four-zone benchmark frame visible on mixed-benchmark scopes by using the default USD benchmark for orientation, instead of dropping the overlay entirely.
- Mixed-benchmark scopes such as the default `All` view now render the horizontal benchmark line and four shaded quadrants again
- When the visible set mixes USD, EUR, and CHF hurdles, the scatter frame explicitly uses the USD benchmark as a shared visual reference
- Mixed-view copy now tells users that the background zones are an orientation frame and that each row's benchmark tag still governs excess-yield interpretation
- Yield methodology docs and the changelog now describe the restored mixed-view scatter behavior explicitly
Impact Notes
- Mixed-benchmark scopes such as the default `All` view now render the horizontal benchmark line and four shaded quadrants again
- When the visible set mixes USD, EUR, and CHF hurdles, the scatter frame explicitly uses the USD benchmark as a shared visual reference
- Mixed-view copy now tells users that the background zones are an orientation frame and that each row's benchmark tag still governs excess-yield interpretation
- Yield methodology docs and the changelog now describe the restored mixed-view scatter behavior explicitly
v6.2Mar 26, 2026Source-Cadence-Aware Freshness Warnings
Read-time `data-stale` warnings now respect the cadence of the underlying source family, so daily price-derived rows are not marked stale by the hourly publisher threshold.
- `price-derived` rankings now use a 36 hour stale threshold because they are backed by daily `supply_history` snapshots rather than hourly source observations
- Hourly publication families such as on-chain, DeFiLlama, protocol-native, and auto-discovered rows still mark stale after three missed `sync-yield-data` intervals
- Healthy daily snapshot rows such as USTB, USDA, and CETES no longer show false `data-stale` warnings after roughly one day of normal operation
- The methodology docs, changelog, and operations note now document the source-cadence freshness windows explicitly
DetailsHide details
Source-Cadence-Aware Freshness Warnings
Read-time `data-stale` warnings now respect the cadence of the underlying source family, so daily price-derived rows are not marked stale by the hourly publisher threshold.
- `price-derived` rankings now use a 36 hour stale threshold because they are backed by daily `supply_history` snapshots rather than hourly source observations
- Hourly publication families such as on-chain, DeFiLlama, protocol-native, and auto-discovered rows still mark stale after three missed `sync-yield-data` intervals
- Healthy daily snapshot rows such as USTB, USDA, and CETES no longer show false `data-stale` warnings after roughly one day of normal operation
- The methodology docs, changelog, and operations note now document the source-cadence freshness windows explicitly
Impact Notes
- `price-derived` rankings now use a 36 hour stale threshold because they are backed by daily `supply_history` snapshots rather than hourly source observations
- Hourly publication families such as on-chain, DeFiLlama, protocol-native, and auto-discovered rows still mark stale after three missed `sync-yield-data` intervals
- Healthy daily snapshot rows such as USTB, USDA, and CETES no longer show false `data-stale` warnings after roughly one day of normal operation
- The methodology docs, changelog, and operations note now document the source-cadence freshness windows explicitly
v6.1Mar 26, 20263M Risk-Free Benchmarks For EUR And CHF
Yield Intelligence now benchmarks EUR pegs against 3-month compounded €STR and CHF pegs against 3-month compounded SARON instead of using overnight €STR and a CHF policy-rate proxy.
- EUR benchmark refreshes now use the ECB's official 3-month compounded €STR series (`EST/B.EU000A2QQF32.CR`) instead of the overnight €STR series
- CHF benchmark refreshes now fetch delayed public `SAR3MC` from SIX via the guest OAuth plus report-download flow, replacing the old SNB policy-rate proxy
- CHF benchmark entries are no longer labeled as proxies, and mixed-benchmark UI copy now names the 3-month compounded EUR and CHF cash hurdles explicitly
- Methodology docs, API examples, and the about-page source inventory now reflect the new EUR/CHF risk-free benchmark stack
DetailsHide details
3M Risk-Free Benchmarks For EUR And CHF
Yield Intelligence now benchmarks EUR pegs against 3-month compounded €STR and CHF pegs against 3-month compounded SARON instead of using overnight €STR and a CHF policy-rate proxy.
- EUR benchmark refreshes now use the ECB's official 3-month compounded €STR series (`EST/B.EU000A2QQF32.CR`) instead of the overnight €STR series
- CHF benchmark refreshes now fetch delayed public `SAR3MC` from SIX via the guest OAuth plus report-download flow, replacing the old SNB policy-rate proxy
- CHF benchmark entries are no longer labeled as proxies, and mixed-benchmark UI copy now names the 3-month compounded EUR and CHF cash hurdles explicitly
- Methodology docs, API examples, and the about-page source inventory now reflect the new EUR/CHF risk-free benchmark stack
Impact Notes
- EUR benchmark refreshes now use the ECB's official 3-month compounded €STR series (`EST/B.EU000A2QQF32.CR`) instead of the overnight €STR series
- CHF benchmark refreshes now fetch delayed public `SAR3MC` from SIX via the guest OAuth plus report-download flow, replacing the old SNB policy-rate proxy
- CHF benchmark entries are no longer labeled as proxies, and mixed-benchmark UI copy now names the 3-month compounded EUR and CHF cash hurdles explicitly
- Methodology docs, API examples, and the about-page source inventory now reflect the new EUR/CHF risk-free benchmark stack
v6.0Mar 26, 2026Asset-Scoped Supplemental Identity and Actionable Coverage Audits
Supplemental protocol families now keep asset-scoped source identity instead of collapsing same-chain markets together, and the monthly coverage audit now measures the real exact-pool DL surface rather than only the native static map.
- Aave V3 supplemental on-chain rows now use asset-scoped source keys, so same-chain markets no longer overwrite each other in the supplemental cache
- `sync-yield-supplemental` now reports raw candidate count, deduped candidate count, and dropped-row count in cron metadata so silent row loss becomes visible to operators
- The monthly coverage audit now counts explicit auto-discovery overrides and curated exact-pool overrides as covered DL surfaces instead of treating only `YIELD_POOL_MAP` UUIDs as covered
- High-TVL coverage-gap reporting now focuses on unsupported protocol surfaces rather than flooding the audit with already-supported allowlisted markets
DetailsHide details
Asset-Scoped Supplemental Identity and Actionable Coverage Audits
Supplemental protocol families now keep asset-scoped source identity instead of collapsing same-chain markets together, and the monthly coverage audit now measures the real exact-pool DL surface rather than only the native static map.
- Aave V3 supplemental on-chain rows now use asset-scoped source keys, so same-chain markets no longer overwrite each other in the supplemental cache
- `sync-yield-supplemental` now reports raw candidate count, deduped candidate count, and dropped-row count in cron metadata so silent row loss becomes visible to operators
- The monthly coverage audit now counts explicit auto-discovery overrides and curated exact-pool overrides as covered DL surfaces instead of treating only `YIELD_POOL_MAP` UUIDs as covered
- High-TVL coverage-gap reporting now focuses on unsupported protocol surfaces rather than flooding the audit with already-supported allowlisted markets
Impact Notes
- Aave V3 supplemental on-chain rows now use asset-scoped source keys, so same-chain markets no longer overwrite each other in the supplemental cache
- `sync-yield-supplemental` now reports raw candidate count, deduped candidate count, and dropped-row count in cron metadata so silent row loss becomes visible to operators
- The monthly coverage audit now counts explicit auto-discovery overrides and curated exact-pool overrides as covered DL surfaces instead of treating only `YIELD_POOL_MAP` UUIDs as covered
- High-TVL coverage-gap reporting now focuses on unsupported protocol surfaces rather than flooding the audit with already-supported allowlisted markets
v5.9Mar 26, 2026Cadence-Aligned Data-Stale Warnings
The read-time `data-stale` warning now follows the shared hourly `sync-yield-data` cadence instead of a leftover fixed 90-minute threshold from the old half-hourly lane.
- `data-stale` now triggers after three `sync-yield-data` intervals (currently about 3 hours) instead of after a hard-coded 90 minutes
- Stablecoin detail Yield Intelligence cards no longer flag healthy hourly snapshots as stale after only one delayed publish window
- The stale-warning threshold is now derived from shared cron metadata so future cadence moves stay aligned automatically
- Methodology docs and the internal timeline now describe the cadence-aware stale-warning rule explicitly
DetailsHide details
Cadence-Aligned Data-Stale Warnings
The read-time `data-stale` warning now follows the shared hourly `sync-yield-data` cadence instead of a leftover fixed 90-minute threshold from the old half-hourly lane.
- `data-stale` now triggers after three `sync-yield-data` intervals (currently about 3 hours) instead of after a hard-coded 90 minutes
- Stablecoin detail Yield Intelligence cards no longer flag healthy hourly snapshots as stale after only one delayed publish window
- The stale-warning threshold is now derived from shared cron metadata so future cadence moves stay aligned automatically
- Methodology docs and the internal timeline now describe the cadence-aware stale-warning rule explicitly
Impact Notes
- `data-stale` now triggers after three `sync-yield-data` intervals (currently about 3 hours) instead of after a hard-coded 90 minutes
- Stablecoin detail Yield Intelligence cards no longer flag healthy hourly snapshots as stale after only one delayed publish window
- The stale-warning threshold is now derived from shared cron metadata so future cadence moves stay aligned automatically
- Methodology docs and the internal timeline now describe the cadence-aware stale-warning rule explicitly
v5.8Mar 26, 2026First-Party EUR Benchmarks and Resilient CHF Parsing
Yield benchmark fetching now sources EUR €STR from the ECB's official data API with the FRED mirror as fallback, and the CHF proxy parser now tolerates the SNB's current HTML structure instead of depending on one plain-text sentence layout.
- EUR benchmark refreshes now try the ECB Data API first and only fall back to the FRED €STR mirror when the official feed is unavailable
- CHF benchmark parsing now normalizes the SNB page to text before extracting the policy-rate sentence, avoiding breakage from harmless markup changes
- Degraded benchmark metadata now reports explicit EUR and CHF failure modes instead of collapsing first-run failures into a generic `unavailable` bucket
- Yield methodology, API examples, and source inventory now reflect the official ECB feed plus the hardened SNB proxy parser
DetailsHide details
First-Party EUR Benchmarks and Resilient CHF Parsing
Yield benchmark fetching now sources EUR €STR from the ECB's official data API with the FRED mirror as fallback, and the CHF proxy parser now tolerates the SNB's current HTML structure instead of depending on one plain-text sentence layout.
- EUR benchmark refreshes now try the ECB Data API first and only fall back to the FRED €STR mirror when the official feed is unavailable
- CHF benchmark parsing now normalizes the SNB page to text before extracting the policy-rate sentence, avoiding breakage from harmless markup changes
- Degraded benchmark metadata now reports explicit EUR and CHF failure modes instead of collapsing first-run failures into a generic `unavailable` bucket
- Yield methodology, API examples, and source inventory now reflect the official ECB feed plus the hardened SNB proxy parser
Impact Notes
- EUR benchmark refreshes now try the ECB Data API first and only fall back to the FRED €STR mirror when the official feed is unavailable
- CHF benchmark parsing now normalizes the SNB page to text before extracting the policy-rate sentence, avoiding breakage from harmless markup changes
- Degraded benchmark metadata now reports explicit EUR and CHF failure modes instead of collapsing first-run failures into a generic `unavailable` bucket
- Yield methodology, API examples, and source inventory now reflect the official ECB feed plus the hardened SNB proxy parser
v5.7Mar 26, 2026Safety-Reweighted PYS Curve and Shared Scoring Hydration
Pharos Yield Score now uses a steeper safety penalty curve so risky names need much larger yield spreads to outrank safe ones, and the scaling factor was retuned to keep the score range readable.
- PYS now computes yield efficiency as `apy30d / (riskPenalty ^ 1.75)` instead of dividing by a linear safety penalty
- The global `PYS_SCALING_FACTOR` increased from `5` to `8` so score distribution remains readable after the steeper safety curve
- Live `/api/yield-rankings` hydration now reuses the shared PYS scorer, removing formula drift risk between cron-time scoring and read-time safety hydration
- Leaderboard, detail-surface breakdowns, docs, and the methodology page now reference the adjusted risk penalty explicitly
DetailsHide details
Safety-Reweighted PYS Curve and Shared Scoring Hydration
Pharos Yield Score now uses a steeper safety penalty curve so risky names need much larger yield spreads to outrank safe ones, and the scaling factor was retuned to keep the score range readable.
- PYS now computes yield efficiency as `apy30d / (riskPenalty ^ 1.75)` instead of dividing by a linear safety penalty
- The global `PYS_SCALING_FACTOR` increased from `5` to `8` so score distribution remains readable after the steeper safety curve
- Live `/api/yield-rankings` hydration now reuses the shared PYS scorer, removing formula drift risk between cron-time scoring and read-time safety hydration
- Leaderboard, detail-surface breakdowns, docs, and the methodology page now reference the adjusted risk penalty explicitly
Impact Notes
- PYS now computes yield efficiency as `apy30d / (riskPenalty ^ 1.75)` instead of dividing by a linear safety penalty
- The global `PYS_SCALING_FACTOR` increased from `5` to `8` so score distribution remains readable after the steeper safety curve
- Live `/api/yield-rankings` hydration now reuses the shared PYS scorer, removing formula drift risk between cron-time scoring and read-time safety hydration
- Leaderboard, detail-surface breakdowns, docs, and the methodology page now reference the adjusted risk penalty explicitly
v5.6Mar 26, 2026Currency-Aware Benchmarks For Excess Yield
Yield Intelligence now resolves row-level benchmark context by peg currency, using USD T-bills by default, EUR €STR when available, and a CHF SNB policy-rate proxy for Swiss-franc pegs.
- The benchmark cache now publishes a small benchmark registry instead of only a single global USD risk-free rate
- Each ranking row now exposes its selected benchmark label, rate, fallback state, and selection mode so excess-yield semantics remain explicit downstream
- Detail pages, hero chips, and yield-history charts now label excess yield against the row's actual benchmark instead of hard-coding `vs T-Bill`
- The `/yield` page now hides the single benchmark line on mixed-benchmark views and restores it only when the visible scope shares one benchmark
DetailsHide details
Currency-Aware Benchmarks For Excess Yield
Yield Intelligence now resolves row-level benchmark context by peg currency, using USD T-bills by default, EUR €STR when available, and a CHF SNB policy-rate proxy for Swiss-franc pegs.
- The benchmark cache now publishes a small benchmark registry instead of only a single global USD risk-free rate
- Each ranking row now exposes its selected benchmark label, rate, fallback state, and selection mode so excess-yield semantics remain explicit downstream
- Detail pages, hero chips, and yield-history charts now label excess yield against the row's actual benchmark instead of hard-coding `vs T-Bill`
- The `/yield` page now hides the single benchmark line on mixed-benchmark views and restores it only when the visible scope shares one benchmark
Impact Notes
- The benchmark cache now publishes a small benchmark registry instead of only a single global USD risk-free rate
- Each ranking row now exposes its selected benchmark label, rate, fallback state, and selection mode so excess-yield semantics remain explicit downstream
- Detail pages, hero chips, and yield-history charts now label excess yield against the row's actual benchmark instead of hard-coding `vs T-Bill`
- The `/yield` page now hides the single benchmark line on mixed-benchmark views and restores it only when the visible scope shares one benchmark
- CHF support uses the public SNB policy rate as a proxy rather than the SNB-published SARON display, whose usage is restricted
v5.5Mar 26, 2026Non-USD Yield Scoping and Exact-Pool Commodity Overrides
Yield Intelligence now exposes a shareable non-USD ranking scope on `/yield`, and commodity coverage can use curated exact-pool DeFiLlama venues without relaxing the generic gold/silver discovery guardrails.
- The `/yield` page now supports peg-scoped ranking views, including a `non-usd` preset that groups the live EUR, CHF, SGD, MXN, and commodity rows into one visible universe
- Tier-2 DeFiLlama ingestion now preserves exact curated non-stablecoin pool UUIDs in addition to native pool IDs and wrapper symbols
- A new exact-pool override lane can publish assets like `xaut-tether` from a named venue when the UUID, project, chain, and symbol all match and the APY/TVL quality gates pass
- Generic gold/silver auto-discovery remains disabled, preventing mixed baskets such as Multipli's RWAUSDI pool from being misclassified as single-asset commodity yield sources
DetailsHide details
Non-USD Yield Scoping and Exact-Pool Commodity Overrides
Yield Intelligence now exposes a shareable non-USD ranking scope on `/yield`, and commodity coverage can use curated exact-pool DeFiLlama venues without relaxing the generic gold/silver discovery guardrails.
- The `/yield` page now supports peg-scoped ranking views, including a `non-usd` preset that groups the live EUR, CHF, SGD, MXN, and commodity rows into one visible universe
- Tier-2 DeFiLlama ingestion now preserves exact curated non-stablecoin pool UUIDs in addition to native pool IDs and wrapper symbols
- A new exact-pool override lane can publish assets like `xaut-tether` from a named venue when the UUID, project, chain, and symbol all match and the APY/TVL quality gates pass
- Generic gold/silver auto-discovery remains disabled, preventing mixed baskets such as Multipli's RWAUSDI pool from being misclassified as single-asset commodity yield sources
Impact Notes
- The `/yield` page now supports peg-scoped ranking views, including a `non-usd` preset that groups the live EUR, CHF, SGD, MXN, and commodity rows into one visible universe
- Tier-2 DeFiLlama ingestion now preserves exact curated non-stablecoin pool UUIDs in addition to native pool IDs and wrapper symbols
- A new exact-pool override lane can publish assets like `xaut-tether` from a named venue when the UUID, project, chain, and symbol all match and the APY/TVL quality gates pass
- Generic gold/silver auto-discovery remains disabled, preventing mixed baskets such as Multipli's RWAUSDI pool from being misclassified as single-asset commodity yield sources
v5.4Mar 26, 2026Address-First Identity, Explicit Coverage, and Publish-Consistent History
Yield resolution now matches by chain and address before symbol fallbacks, every yield-bearing asset has explicit manifest coverage or an intentional gap, and published history is bounded to the latest rankings snapshot.
- DeFiLlama discovery, variant matching, and protocol-native adapters now prefer chain+address identity and drop ambiguous symbol-only candidates instead of attaching them to the first matching coin
- Protocol-native source keys now use full chain-aware identifiers (Morpho, Pendle, Yearn, Kong, Beefy, Compound, Aave) and source-link matching understands prefixed and chain-qualified labels
- Yield manifest coverage now includes explicit price-derived fallbacks and intentional gaps, so assets like cetes-etherfuse no longer disappear from coverage reporting
- Warning heuristics and published `medianApy` now share the same TVL-weighted 30d benchmark
DetailsHide details
Address-First Identity, Explicit Coverage, and Publish-Consistent History
Yield resolution now matches by chain and address before symbol fallbacks, every yield-bearing asset has explicit manifest coverage or an intentional gap, and published history is bounded to the latest rankings snapshot.
- DeFiLlama discovery, variant matching, and protocol-native adapters now prefer chain+address identity and drop ambiguous symbol-only candidates instead of attaching them to the first matching coin
- Protocol-native source keys now use full chain-aware identifiers (Morpho, Pendle, Yearn, Kong, Beefy, Compound, Aave) and source-link matching understands prefixed and chain-qualified labels
- Yield manifest coverage now includes explicit price-derived fallbacks and intentional gaps, so assets like cetes-etherfuse no longer disappear from coverage reporting
- Warning heuristics and published `medianApy` now share the same TVL-weighted 30d benchmark
Impact Notes
- DeFiLlama discovery, variant matching, and protocol-native adapters now prefer chain+address identity and drop ambiguous symbol-only candidates instead of attaching them to the first matching coin
- Protocol-native source keys now use full chain-aware identifiers (Morpho, Pendle, Yearn, Kong, Beefy, Compound, Aave) and source-link matching understands prefixed and chain-qualified labels
- Yield manifest coverage now includes explicit price-derived fallbacks and intentional gaps, so assets like cetes-etherfuse no longer disappear from coverage reporting
- Warning heuristics and published `medianApy` now share the same TVL-weighted 30d benchmark
- yield-history no longer advances past the latest published yield-rankings snapshot when DB writes and cache publication diverge
v5.3Mar 26, 2026Yield Infrastructure Automation
Chain-scoped Layer 3 symbol matching prevents cross-chain false positives in auto-lending discovery, variant symbol auto-scanner detects new wrapper tokens (advisory mode), and monthly yield coverage audit cron provides protocol expansion recommendations.
- Chain-scoped matching adds optional chainFilter to findBestLendingPool, derived from coin contract deployments
- Variant scanner detects sXXX/stXXX/wXXX prefix and SAVE/VAULT/EARN/STAKE suffix patterns in DL pools
- Monthly coverage audit cron (1st of month, 06:00 UTC) flags unmatched high-TVL pools and missing protocols
- Protocol recommendations classify missing protocols as high-confidence (>$10M, 3+ pools) or review-needed
DetailsHide details
Yield Infrastructure Automation
Chain-scoped Layer 3 symbol matching prevents cross-chain false positives in auto-lending discovery, variant symbol auto-scanner detects new wrapper tokens (advisory mode), and monthly yield coverage audit cron provides protocol expansion recommendations.
- Chain-scoped matching adds optional chainFilter to findBestLendingPool, derived from coin contract deployments
- Variant scanner detects sXXX/stXXX/wXXX prefix and SAVE/VAULT/EARN/STAKE suffix patterns in DL pools
- Monthly coverage audit cron (1st of month, 06:00 UTC) flags unmatched high-TVL pools and missing protocols
- Protocol recommendations classify missing protocols as high-confidence (>$10M, 3+ pools) or review-needed
Impact Notes
- Chain-scoped matching adds optional chainFilter to findBestLendingPool, derived from coin contract deployments
- Variant scanner detects sXXX/stXXX/wXXX prefix and SAVE/VAULT/EARN/STAKE suffix patterns in DL pools
- Monthly coverage audit cron (1st of month, 06:00 UTC) flags unmatched high-TVL pools and missing protocols
- Protocol recommendations classify missing protocols as high-confidence (>$10M, 3+ pools) or review-needed
v5.2Mar 25, 2026Yield Coverage Expansion — Protocol-Native API Wave
Major yield coverage expansion: 10 protocol-native adapters (Hashnote USYC, Ondo oracle, Morpho GraphQL, Pendle REST, Yearn Kong GraphQL, Beefy REST, Aave V3 on-chain, Compound V3 on-chain, BIMA Earn), USTB + thBILL promoted to on-chain ERC-4626, cusd-cap flagged yield-bearing, 19 new lending protocols added, TVL floor lowered for smaller ecosystems, DeFiLlama yield history backfill for instant 365-day charts.
- 10 protocol-native adapters provide direct yield data, reducing DeFiLlama intermediation
- Aave V3 + Compound V3 direct on-chain supply rates across Ethereum, Arbitrum, and Base
- Kong adapter covers 2,083 ERC-4626 vaults (Yearn + Morpho + Spark + Fluid + others)
- USTB + thBILL upgraded from T-bill proxy to actual on-chain ERC-4626 exchange rate reads
DetailsHide details
Yield Coverage Expansion — Protocol-Native API Wave
Major yield coverage expansion: 10 protocol-native adapters (Hashnote USYC, Ondo oracle, Morpho GraphQL, Pendle REST, Yearn Kong GraphQL, Beefy REST, Aave V3 on-chain, Compound V3 on-chain, BIMA Earn), USTB + thBILL promoted to on-chain ERC-4626, cusd-cap flagged yield-bearing, 19 new lending protocols added, TVL floor lowered for smaller ecosystems, DeFiLlama yield history backfill for instant 365-day charts.
- 10 protocol-native adapters provide direct yield data, reducing DeFiLlama intermediation
- Aave V3 + Compound V3 direct on-chain supply rates across Ethereum, Arbitrum, and Base
- Kong adapter covers 2,083 ERC-4626 vaults (Yearn + Morpho + Spark + Fluid + others)
- USTB + thBILL upgraded from T-bill proxy to actual on-chain ERC-4626 exchange rate reads
Impact Notes
- 10 protocol-native adapters provide direct yield data, reducing DeFiLlama intermediation
- Aave V3 + Compound V3 direct on-chain supply rates across Ethereum, Arbitrum, and Base
- Kong adapter covers 2,083 ERC-4626 vaults (Yearn + Morpho + Spark + Fluid + others)
- USTB + thBILL upgraded from T-bill proxy to actual on-chain ERC-4626 exchange rate reads
- DeFiLlama yield history backfill gives instant 365-day charts for newly tracked coins
- Expanded lending protocol allowlist with 19 new protocols (Wildcat $235M, Tectonic $100M, etc.)
- cusd-cap flagged as yield-bearing with stCUSD savings wrapper ($68M TVL)
- Lower TVL floor ($25K) captures Solana/Sui/Aptos/Cardano/Stacks lending markets
v5.1Mar 24, 2026Protocol-native BIMA savings fallback for USBD
USBD now resolves through BIMA's public earn API when DeFiLlama has no usable sUSBD wrapper pool, closing the remaining native-yield coverage gap without introducing a hand-set rate.
- usbd-bima now emits a protocol-native `BIMA savings (sUSBD)` source row sourced from BIMA's published `/api/earn/pools` feed
- Yield arbitration treats protocol-owned earn APIs as curated sources rather than misclassifying them as on-chain or DeFiLlama data
- The about page and source-link registry now expose BIMA's earn surface as an official yield-source reference
DetailsHide details
Protocol-native BIMA savings fallback for USBD
USBD now resolves through BIMA's public earn API when DeFiLlama has no usable sUSBD wrapper pool, closing the remaining native-yield coverage gap without introducing a hand-set rate.
- usbd-bima now emits a protocol-native `BIMA savings (sUSBD)` source row sourced from BIMA's published `/api/earn/pools` feed
- Yield arbitration treats protocol-owned earn APIs as curated sources rather than misclassifying them as on-chain or DeFiLlama data
- The about page and source-link registry now expose BIMA's earn surface as an official yield-source reference
Impact Notes
- usbd-bima now emits a protocol-native `BIMA savings (sUSBD)` source row sourced from BIMA's published `/api/earn/pools` feed
- Yield arbitration treats protocol-owned earn APIs as curated sources rather than misclassifying them as on-chain or DeFiLlama data
- The about page and source-link registry now expose BIMA's earn surface as an official yield-source reference
v5.0Mar 24, 2026Richer freshness provenance and curated lending source links
Yield rankings provenance now carries source-observation and comparison-anchor timing for derived sources, and the lending allowlist now has curated source-link coverage for all supported protocols.
- Price-derived and on-chain rankings now expose the age of their actual observation inputs instead of always presenting as fresh at sync time
- Derived-source provenance now includes comparison-anchor timing so older anchors are visible to downstream consumers
- All allowlisted lending protocols now resolve to curated source links instead of falling back to coin-level websites or nulls
DetailsHide details
Richer freshness provenance and curated lending source links
Yield rankings provenance now carries source-observation and comparison-anchor timing for derived sources, and the lending allowlist now has curated source-link coverage for all supported protocols.
- Price-derived and on-chain rankings now expose the age of their actual observation inputs instead of always presenting as fresh at sync time
- Derived-source provenance now includes comparison-anchor timing so older anchors are visible to downstream consumers
- All allowlisted lending protocols now resolve to curated source links instead of falling back to coin-level websites or nulls
Impact Notes
- Price-derived and on-chain rankings now expose the age of their actual observation inputs instead of always presenting as fresh at sync time
- Derived-source provenance now includes comparison-anchor timing so older anchors are visible to downstream consumers
- All allowlisted lending protocols now resolve to curated source links instead of falling back to coin-level websites or nulls
v4.9Mar 24, 2026Publish-safe retention and deterministic adapter quarantine
Yield publication now preflights rankings payloads before mutating live rows, degraded runs retain prior rows instead of destructively pruning, and the two known-bad generic deterministic vault probes were quarantined from Tier 1 coverage.
- Rankings publication is now validated before live row mutation, reducing DB/cache divergence risk on schema or publish-guard failures
- Degraded runs retain prior current rows by skipping destructive cleanup instead of deleting rows while upstream inputs are impaired
- dUSD and reUSD were removed from the generic ERC-4626 deterministic adapter set until protocol-specific readers exist, reducing false confidence in Tier 1 coverage
DetailsHide details
Publish-safe retention and deterministic adapter quarantine
Yield publication now preflights rankings payloads before mutating live rows, degraded runs retain prior rows instead of destructively pruning, and the two known-bad generic deterministic vault probes were quarantined from Tier 1 coverage.
- Rankings publication is now validated before live row mutation, reducing DB/cache divergence risk on schema or publish-guard failures
- Degraded runs retain prior current rows by skipping destructive cleanup instead of deleting rows while upstream inputs are impaired
- dUSD and reUSD were removed from the generic ERC-4626 deterministic adapter set until protocol-specific readers exist, reducing false confidence in Tier 1 coverage
Impact Notes
- Rankings publication is now validated before live row mutation, reducing DB/cache divergence risk on schema or publish-guard failures
- Degraded runs retain prior current rows by skipping destructive cleanup instead of deleting rows while upstream inputs are impaired
- dUSD and reUSD were removed from the generic ERC-4626 deterministic adapter set until protocol-specific readers exist, reducing false confidence in Tier 1 coverage
v4.8Mar 24, 2026Explicit edge-case overrides for remaining high-signal lending markets
A final selective pass added deterministic lending overrides for the remaining high-signal exact-symbol markets that were still blocked only by report-card coverage gaps or sub-C safety gating.
- Polaris pUSD now resolves through a deterministic Silo v2 lending market override, fixing the prior bypass-only configuration gap
- USDX, USDO, and USDM now use deterministic exact-symbol lending overrides rather than waiting on the generic dynamic discovery path
- These explicit overrides bypass the normal C- safety gate only for a short named list of high-TVL or protocol-native edge cases, preserving the broader global discovery standard
DetailsHide details
Explicit edge-case overrides for remaining high-signal lending markets
A final selective pass added deterministic lending overrides for the remaining high-signal exact-symbol markets that were still blocked only by report-card coverage gaps or sub-C safety gating.
- Polaris pUSD now resolves through a deterministic Silo v2 lending market override, fixing the prior bypass-only configuration gap
- USDX, USDO, and USDM now use deterministic exact-symbol lending overrides rather than waiting on the generic dynamic discovery path
- These explicit overrides bypass the normal C- safety gate only for a short named list of high-TVL or protocol-native edge cases, preserving the broader global discovery standard
Impact Notes
- Polaris pUSD now resolves through a deterministic Silo v2 lending market override, fixing the prior bypass-only configuration gap
- USDX, USDO, and USDM now use deterministic exact-symbol lending overrides rather than waiting on the generic dynamic discovery path
- These explicit overrides bypass the normal C- safety gate only for a short named list of high-TVL or protocol-native edge cases, preserving the broader global discovery standard
v4.7Mar 24, 2026Early NAV fallback support and deeper long-tail lending coverage
Yield coverage widened again through lower but still curated lending floors, two additional protocol families, and price-derived fallbacks that can bootstrap younger NAV tokens before day 30.
- Auto-discovered lending opportunities now accept single-asset pools down to $100K TVL and 0.10% APY, capturing still-meaningful long-tail markets without opening full dust-pool coverage
- The curated lending allowlist now includes More Markets and SmarDex USDN, while Polaris pUSD can bypass the report-card gate through an explicit vetted edge-case override
- Price-derived APY now annualizes from the oldest available price anchor between 7 and 45 days instead of requiring a strict 30-day sample, improving early coverage for newer NAV tokens
DetailsHide details
Early NAV fallback support and deeper long-tail lending coverage
Yield coverage widened again through lower but still curated lending floors, two additional protocol families, and price-derived fallbacks that can bootstrap younger NAV tokens before day 30.
- Auto-discovered lending opportunities now accept single-asset pools down to $100K TVL and 0.10% APY, capturing still-meaningful long-tail markets without opening full dust-pool coverage
- The curated lending allowlist now includes More Markets and SmarDex USDN, while Polaris pUSD can bypass the report-card gate through an explicit vetted edge-case override
- Price-derived APY now annualizes from the oldest available price anchor between 7 and 45 days instead of requiring a strict 30-day sample, improving early coverage for newer NAV tokens
Impact Notes
- Auto-discovered lending opportunities now accept single-asset pools down to $100K TVL and 0.10% APY, capturing still-meaningful long-tail markets without opening full dust-pool coverage
- The curated lending allowlist now includes More Markets and SmarDex USDN, while Polaris pUSD can bypass the report-card gate through an explicit vetted edge-case override
- Price-derived APY now annualizes from the oldest available price anchor between 7 and 45 days instead of requiring a strict 30-day sample, improving early coverage for newer NAV tokens
v4.6Mar 24, 2026Rate-derived treasury expansion and broader lending discovery
Yield coverage widened through new deterministic Treasury fallbacks plus a broader but still curated lending auto-discovery set for long-tail safe assets.
- USYC and thBILL now participate in rate-derived Treasury fallback coverage alongside the existing BUIDL/USTB/YLDS/mTBILL/OUSG set
- Auto-discovered lending coverage now recognizes additional curated protocol slugs already present in live DeFiLlama data, including Loopscale, Vesper, Lista Lending, Liqwid, Overnight, Lagoon, and NAVI Lending
- The lending auto-discovery TVL floor was reduced from $1.0M to $0.5M to capture still-meaningful long-tail lending markets without opening the door to dust pools
DetailsHide details
Rate-derived treasury expansion and broader lending discovery
Yield coverage widened through new deterministic Treasury fallbacks plus a broader but still curated lending auto-discovery set for long-tail safe assets.
- USYC and thBILL now participate in rate-derived Treasury fallback coverage alongside the existing BUIDL/USTB/YLDS/mTBILL/OUSG set
- Auto-discovered lending coverage now recognizes additional curated protocol slugs already present in live DeFiLlama data, including Loopscale, Vesper, Lista Lending, Liqwid, Overnight, Lagoon, and NAVI Lending
- The lending auto-discovery TVL floor was reduced from $1.0M to $0.5M to capture still-meaningful long-tail lending markets without opening the door to dust pools
Impact Notes
- USYC and thBILL now participate in rate-derived Treasury fallback coverage alongside the existing BUIDL/USTB/YLDS/mTBILL/OUSG set
- Auto-discovered lending coverage now recognizes additional curated protocol slugs already present in live DeFiLlama data, including Loopscale, Vesper, Lista Lending, Liqwid, Overnight, Lagoon, and NAVI Lending
- The lending auto-discovery TVL floor was reduced from $1.0M to $0.5M to capture still-meaningful long-tail lending markets without opening the door to dust pools
v4.5Mar 23, 2026Fail-closed source validation and retained-market benchmark continuity
Yield sync now treats broken direct-source payloads and total deterministic on-chain outages as degraded inputs, while retained Treasury benchmarks preserve the last market-derived rate across fallback streaks.
- Direct DeFiLlama yield fetches now degrade on invalid payloads or zero relevant stablecoin pools instead of being treated as a benign empty set
- Runs now degrade when all configured deterministic on-chain sources fail in the same cycle, exposing that outage in rankings provenance
- Retained `risk_free_rate` fallbacks preserve the last market-derived benchmark fields across degraded streaks, and rankings-cache publication now blocks on severe shrink versus the prior cache
DetailsHide details
Fail-closed source validation and retained-market benchmark continuity
Yield sync now treats broken direct-source payloads and total deterministic on-chain outages as degraded inputs, while retained Treasury benchmarks preserve the last market-derived rate across fallback streaks.
- Direct DeFiLlama yield fetches now degrade on invalid payloads or zero relevant stablecoin pools instead of being treated as a benign empty set
- Runs now degrade when all configured deterministic on-chain sources fail in the same cycle, exposing that outage in rankings provenance
- Retained `risk_free_rate` fallbacks preserve the last market-derived benchmark fields across degraded streaks, and rankings-cache publication now blocks on severe shrink versus the prior cache
Impact Notes
- Direct DeFiLlama yield fetches now degrade on invalid payloads or zero relevant stablecoin pools instead of being treated as a benign empty set
- Runs now degrade when all configured deterministic on-chain sources fail in the same cycle, exposing that outage in rankings provenance
- Retained `risk_free_rate` fallbacks preserve the last market-derived benchmark fields across degraded streaks, and rankings-cache publication now blocks on severe shrink versus the prior cache
v4.4Mar 20, 2026On-chain rate bootstrapping and pipeline hardening
Fixed a bootstrapping deadlock preventing all 13 Tier 1 vault configs from computing on-chain APY, plus DRY and performance improvements.
- On-chain rate configs now emit a seed row when no previous exchange rate exists, breaking the bootstrapping deadlock that prevented Tier 1 APY computation since launch
- buildOnChainSourceKey consolidated from 3 duplicate definitions into a single shared export
- Pool pre-filter set allocations promoted from per-call to module-level for improved DL pool ingestion performance
- Live safety hydration coverage ratio now uses active card count instead of total card count for accurate degradation detection
DetailsHide details
On-chain rate bootstrapping and pipeline hardening
Fixed a bootstrapping deadlock preventing all 13 Tier 1 vault configs from computing on-chain APY, plus DRY and performance improvements.
- On-chain rate configs now emit a seed row when no previous exchange rate exists, breaking the bootstrapping deadlock that prevented Tier 1 APY computation since launch
- buildOnChainSourceKey consolidated from 3 duplicate definitions into a single shared export
- Pool pre-filter set allocations promoted from per-call to module-level for improved DL pool ingestion performance
- Live safety hydration coverage ratio now uses active card count instead of total card count for accurate degradation detection
Impact Notes
- On-chain rate configs now emit a seed row when no previous exchange rate exists, breaking the bootstrapping deadlock that prevented Tier 1 APY computation since launch
- buildOnChainSourceKey consolidated from 3 duplicate definitions into a single shared export
- Pool pre-filter set allocations promoted from per-call to module-level for improved DL pool ingestion performance
- Live safety hydration coverage ratio now uses active card count instead of total card count for accurate degradation detection
v4.3Mar 19, 2026Wrapper-preserving ingestion and hydration hardening
Yield ingestion now preserves wrapper-relevant pools through pre-filtering, separates deterministic history from curated pools, and hardens public hydration paths against partial safety or warning data.
- DeFiLlama pool ingestion now retains single-exposure wrapper pools that are explicitly relevant via native or variant config even when upstream `stablecoin` flags are false
- Deterministic on-chain rows now use `onchain:<stablecoinId>` source keys so previous-rate lookups and source-aware history cannot collide with curated pool UUIDs
- Live `/api/yield-rankings` safety hydration keeps rows with `DEFAULT_SAFETY_SCORE` / `NR` when report-card coverage is incomplete instead of dropping yield coverage
- Retained benchmark fallbacks stay marked as degraded, and malformed stored `warning_signals` payloads no longer fail `yield-history` requests
DetailsHide details
Wrapper-preserving ingestion and hydration hardening
Yield ingestion now preserves wrapper-relevant pools through pre-filtering, separates deterministic history from curated pools, and hardens public hydration paths against partial safety or warning data.
- DeFiLlama pool ingestion now retains single-exposure wrapper pools that are explicitly relevant via native or variant config even when upstream `stablecoin` flags are false
- Deterministic on-chain rows now use `onchain:<stablecoinId>` source keys so previous-rate lookups and source-aware history cannot collide with curated pool UUIDs
- Live `/api/yield-rankings` safety hydration keeps rows with `DEFAULT_SAFETY_SCORE` / `NR` when report-card coverage is incomplete instead of dropping yield coverage
- Retained benchmark fallbacks stay marked as degraded, and malformed stored `warning_signals` payloads no longer fail `yield-history` requests
Impact Notes
- DeFiLlama pool ingestion now retains single-exposure wrapper pools that are explicitly relevant via native or variant config even when upstream `stablecoin` flags are false
- Deterministic on-chain rows now use `onchain:<stablecoinId>` source keys so previous-rate lookups and source-aware history cannot collide with curated pool UUIDs
- Live `/api/yield-rankings` safety hydration keeps rows with `DEFAULT_SAFETY_SCORE` / `NR` when report-card coverage is incomplete instead of dropping yield coverage
- Retained benchmark fallbacks stay marked as degraded, and malformed stored `warning_signals` payloads no longer fail `yield-history` requests
v4.2Mar 10, 2026Source-aware history and confidence-weighted arbitration
Yield rankings now preserve per-source history, retain benchmark provenance, and prefer higher-confidence sources when multiple candidates disagree.
- yield_history now persists per-source rows with best-source markers instead of a single mixed best series
- 7d and 30d APY metrics are computed from source-specific history, preventing source-switch contamination
- Rankings now include provenance for benchmark freshness, safety coverage, source-switch state, and selection reasoning
- Cross-source arbitration can reject divergent discovered or fallback sources when canonical sources disagree materially
DetailsHide details
Source-aware history and confidence-weighted arbitration
Yield rankings now preserve per-source history, retain benchmark provenance, and prefer higher-confidence sources when multiple candidates disagree.
- yield_history now persists per-source rows with best-source markers instead of a single mixed best series
- 7d and 30d APY metrics are computed from source-specific history, preventing source-switch contamination
- Rankings now include provenance for benchmark freshness, safety coverage, source-switch state, and selection reasoning
- Cross-source arbitration can reject divergent discovered or fallback sources when canonical sources disagree materially
Impact Notes
- yield_history now persists per-source rows with best-source markers instead of a single mixed best series
- 7d and 30d APY metrics are computed from source-specific history, preventing source-switch contamination
- Rankings now include provenance for benchmark freshness, safety coverage, source-switch state, and selection reasoning
- Cross-source arbitration can reject divergent discovered or fallback sources when canonical sources disagree materially
v4.1Mar 7, 2026Conservative LUSD Stability Pool source
LUSD gained a deterministic B.Protocol / Liquity Stability Pool source that estimates only the LQTY incentive stream and labels that limitation explicitly.
- Added direct on-chain LUSD source using Liquity Stability Pool deposits and CommunityIssuance totals
- APR converts projected LQTY emissions to USD using CoinGecko spot price and excludes ETH liquidation gains by design
- LUSD can now surface both B.Protocol Stability Pool and auto-discovered lending alternatives in the same ranking payload
DetailsHide details
Conservative LUSD Stability Pool source
LUSD gained a deterministic B.Protocol / Liquity Stability Pool source that estimates only the LQTY incentive stream and labels that limitation explicitly.
- Added direct on-chain LUSD source using Liquity Stability Pool deposits and CommunityIssuance totals
- APR converts projected LQTY emissions to USD using CoinGecko spot price and excludes ETH liquidation gains by design
- LUSD can now surface both B.Protocol Stability Pool and auto-discovered lending alternatives in the same ranking payload
Impact Notes
- Added direct on-chain LUSD source using Liquity Stability Pool deposits and CommunityIssuance totals
- APR converts projected LQTY emissions to USD using CoinGecko spot price and excludes ETH liquidation gains by design
- LUSD can now surface both B.Protocol Stability Pool and auto-discovered lending alternatives in the same ranking payload
v4.0Mar 3, 2026ReconstructedMulti-source rankings and alternative-source transparency
Yield rankings moved from single-source rows to per-source modeling, so each coin can expose both native and wrapper yield paths.
- yield_data primary key changed to (stablecoin_id, source_key) with per-source rows
- is_best now marks the highest-APY source per coin; non-best alternatives are retained
- Tier 2 matching aggregates all valid sources (native map, wrapper map, symbol fallback)
- /api/yield-rankings now includes altSources[] and UI exposes +N alternative source details
DetailsHide details
Multi-source rankings and alternative-source transparency
Yield rankings moved from single-source rows to per-source modeling, so each coin can expose both native and wrapper yield paths.
- yield_data primary key changed to (stablecoin_id, source_key) with per-source rows
- is_best now marks the highest-APY source per coin; non-best alternatives are retained
- Tier 2 matching aggregates all valid sources (native map, wrapper map, symbol fallback)
- /api/yield-rankings now includes altSources[] and UI exposes +N alternative source details
Impact Notes
- yield_data primary key changed to (stablecoin_id, source_key) with per-source rows
- is_best now marks the highest-APY source per coin; non-best alternatives are retained
- Tier 2 matching aggregates all valid sources (native map, wrapper map, symbol fallback)
- /api/yield-rankings now includes altSources[] and UI exposes +N alternative source details
- b94e042
v3.3Mar 3, 2026ReconstructedCoverage ratchet: deterministic overrides + address-aware discovery
Auto-discovered lending coverage expanded with stricter quality gates, deterministic overrides, and contract-address fallback matching for symbol drift.
- Auto-discovery added minimum APY/TVL filters and expanded protocol allowlist coverage
- Deterministic pool overrides introduced for hard-to-match symbols (including explicit safety bypass handling)
- findBestLendingPool now falls back to underlying token address matches when symbol matching fails
- Price-derived fallback explicitly extended to BUIDL when no usable on-chain or DL source exists
DetailsHide details
Coverage ratchet: deterministic overrides + address-aware discovery
Auto-discovered lending coverage expanded with stricter quality gates, deterministic overrides, and contract-address fallback matching for symbol drift.
- Auto-discovery added minimum APY/TVL filters and expanded protocol allowlist coverage
- Deterministic pool overrides introduced for hard-to-match symbols (including explicit safety bypass handling)
- findBestLendingPool now falls back to underlying token address matches when symbol matching fails
- Price-derived fallback explicitly extended to BUIDL when no usable on-chain or DL source exists
Impact Notes
- Auto-discovery added minimum APY/TVL filters and expanded protocol allowlist coverage
- Deterministic pool overrides introduced for hard-to-match symbols (including explicit safety bypass handling)
- findBestLendingPool now falls back to underlying token address matches when symbol matching fails
- Price-derived fallback explicitly extended to BUIDL when no usable on-chain or DL source exists
- d9bf617
- 39f3f95
- 2a45230
- ce2293d
v3.2Mar 2, 2026ReconstructedInherited blacklistability alignment for inline safety scoring
Yield sync safety scoring switched to shared blacklistability logic (including reserve inheritance), improving parity with report-card safety behavior.
- Resilience inputs in inline safety computation now use shared isBlacklistable() logic
- Risk penalties in PYS better reflect inherited blacklist exposure
- Reduced divergence between yield-page safety grades and safety-scores page outputs
DetailsHide details
Inherited blacklistability alignment for inline safety scoring
Yield sync safety scoring switched to shared blacklistability logic (including reserve inheritance), improving parity with report-card safety behavior.
- Resilience inputs in inline safety computation now use shared isBlacklistable() logic
- Risk penalties in PYS better reflect inherited blacklist exposure
- Reduced divergence between yield-page safety grades and safety-scores page outputs
Impact Notes
- Resilience inputs in inline safety computation now use shared isBlacklistable() logic
- Risk penalties in PYS better reflect inherited blacklist exposure
- Reduced divergence between yield-page safety grades and safety-scores page outputs
- 595f176
v3.1Mar 1, 2026ReconstructedAuto-discovery hardening and finite-math safeguards
Post-launch hardening pass improved reliability of discovered yield rows and prevented non-finite volatility values from polluting persisted rankings.
- NAV tokens were included in inline safety scoring instead of defaulting to implicit NR behavior
- Yield sync now reuses cached DeFiLlama pools from DEX sync to reduce upstream fetch failures
- Non-finite 30-day APY volatility values are sanitized before D1 writes
DetailsHide details
Auto-discovery hardening and finite-math safeguards
Post-launch hardening pass improved reliability of discovered yield rows and prevented non-finite volatility values from polluting persisted rankings.
- NAV tokens were included in inline safety scoring instead of defaulting to implicit NR behavior
- Yield sync now reuses cached DeFiLlama pools from DEX sync to reduce upstream fetch failures
- Non-finite 30-day APY volatility values are sanitized before D1 writes
Impact Notes
- NAV tokens were included in inline safety scoring instead of defaulting to implicit NR behavior
- Yield sync now reuses cached DeFiLlama pools from DEX sync to reduce upstream fetch failures
- Non-finite 30-day APY volatility values are sanitized before D1 writes
- 2e2a0aa
- 9decd36
- 4402307
v3.0Mar 1, 2026ReconstructedAutomatic lending-opportunity discovery
Yield Intelligence expanded beyond explicitly yield-bearing tokens by automatically discovering best lending pools for safer non-yield-bearing coins.
- Added allowlist-based auto-discovery pass over DeFiLlama lending pools
- Eligibility gated by safety score threshold before pool selection
- Introduced defillama-auto source type and lending-opportunity yield classification
DetailsHide details
Automatic lending-opportunity discovery
Yield Intelligence expanded beyond explicitly yield-bearing tokens by automatically discovering best lending pools for safer non-yield-bearing coins.
- Added allowlist-based auto-discovery pass over DeFiLlama lending pools
- Eligibility gated by safety score threshold before pool selection
- Introduced defillama-auto source type and lending-opportunity yield classification
Impact Notes
- Added allowlist-based auto-discovery pass over DeFiLlama lending pools
- Eligibility gated by safety score threshold before pool selection
- Introduced defillama-auto source type and lending-opportunity yield classification
- 2b1a551
v2.1Mar 1, 2026ReconstructedWarning-signal telemetry and fxUSD native mapping
Yield rows gained warning-signal state for anomaly detection, while deterministic pool coverage expanded with fxUSD native yield mapping.
- warning_signals persistence added with spike/divergence/trend/reward/TVL-outflow checks
- Signal detection now uses market-median APY and prior TVL context per coin
- Tier-2 deterministic source map added explicit fxUSD Stability Pool coverage
DetailsHide details
Warning-signal telemetry and fxUSD native mapping
Yield rows gained warning-signal state for anomaly detection, while deterministic pool coverage expanded with fxUSD native yield mapping.
- warning_signals persistence added with spike/divergence/trend/reward/TVL-outflow checks
- Signal detection now uses market-median APY and prior TVL context per coin
- Tier-2 deterministic source map added explicit fxUSD Stability Pool coverage
Impact Notes
- warning_signals persistence added with spike/divergence/trend/reward/TVL-outflow checks
- Signal detection now uses market-median APY and prior TVL context per coin
- Tier-2 deterministic source map added explicit fxUSD Stability Pool coverage
- dcdefde
- 35f8021
v2.0Mar 1, 2026ReconstructedWave-1 coverage expansion and numerical hardening
Wave-1 expanded native/wrapper mappings and tightened core PYS stability math to avoid edge-case distortion.
- Added wave-1 variant/pool mappings for additional native-yield stablecoins
- Near-zero mean handling in stability/variance math prevents coefficient-of-variation blowups
- Safety fallback and finite-value guards were formalized for ranking writes
DetailsHide details
Wave-1 coverage expansion and numerical hardening
Wave-1 expanded native/wrapper mappings and tightened core PYS stability math to avoid edge-case distortion.
- Added wave-1 variant/pool mappings for additional native-yield stablecoins
- Near-zero mean handling in stability/variance math prevents coefficient-of-variation blowups
- Safety fallback and finite-value guards were formalized for ranking writes
Impact Notes
- Added wave-1 variant/pool mappings for additional native-yield stablecoins
- Near-zero mean handling in stability/variance math prevents coefficient-of-variation blowups
- Safety fallback and finite-value guards were formalized for ranking writes
- f5ecd72
- 6b327eb
v1.1Mar 1, 2026ReconstructedLaunch-audit corrections for APY windowing and display
Early launch audit corrected APY window semantics and cleaned up yield stability presentation/lookup behavior.
- 7-day APY switched to timestamp-window filtering instead of proportional sample slicing
- Tier-1 previous exchange-rate reads were reused from cached lookup state
- Yield stability display normalized as a true 0-100 percentage in UI components
DetailsHide details
Launch-audit corrections for APY windowing and display
Early launch audit corrected APY window semantics and cleaned up yield stability presentation/lookup behavior.
- 7-day APY switched to timestamp-window filtering instead of proportional sample slicing
- Tier-1 previous exchange-rate reads were reused from cached lookup state
- Yield stability display normalized as a true 0-100 percentage in UI components
Impact Notes
- 7-day APY switched to timestamp-window filtering instead of proportional sample slicing
- Tier-1 previous exchange-rate reads were reused from cached lookup state
- Yield stability display normalized as a true 0-100 percentage in UI components
- 873842c
v1.0Mar 1, 2026ReconstructedInitial Yield Intelligence release
Launched Yield Intelligence schema, cron computation pipeline, API surface, and dashboard integration.
- Introduced three-tier APY resolution (on-chain rate, DeFiLlama pool, NAV price-derived fallback)
- Launched PYS model (risk penalty + variance sustainability multiplier + scaling factor)
- Added yield_data/yield_history tables and public yield-rankings/yield-history API handlers
DetailsHide details
Initial Yield Intelligence release
Launched Yield Intelligence schema, cron computation pipeline, API surface, and dashboard integration.
- Introduced three-tier APY resolution (on-chain rate, DeFiLlama pool, NAV price-derived fallback)
- Launched PYS model (risk penalty + variance sustainability multiplier + scaling factor)
- Added yield_data/yield_history tables and public yield-rankings/yield-history API handlers
Impact Notes
- Introduced three-tier APY resolution (on-chain rate, DeFiLlama pool, NAV price-derived fallback)
- Launched PYS model (risk penalty + variance sustainability multiplier + scaling factor)
- Added yield_data/yield_history tables and public yield-rankings/yield-history API handlers
- 0709a1d
- 569664e
- 22695dc
- 81ba632
- 0e7b8b3