Primary yield sources
Yield.ly primarily uses DefiLlama yield data for decentralized yield opportunities, then validates, normalizes, qualifies, and enriches that information before publishing it. Bitcompare supplements CeFi and hybrid lending, staking, and borrowing coverage.
Full source registry: Sources
Enrichment sources
CoinGecko may be used for asset metadata and market enrichment. Missing CoinGecko data does not turn a valid yield rate or TVL into zero. De.Fi Rekt Database supplies security incident evidence for observed risk, not APY or TVL.
Source role table
| Source | Used for | Not used for |
|---|
| DefiLlama | Primary yield and TVL observations for decentralized opportunities | Sponsor ranking; Observed risk verdicts; Asset identity without mapping |
| Bitcompare | CeFi and hybrid lending, staking, and borrowing rate coverage | On-chain pool TVL truth for DeFi markets; Sponsor ranking |
| CoinGecko | Asset metadata and market enrichment | Primary APY truth; TVL authority; Qualification decisions alone |
| De.Fi Rekt Database | Security and incident evidence for observed risk | APY; TVL; Ranking scores; Qualification by itself |
Ingestion and refresh cadence
Scheduled ingestion and dashboard builds run on offset cron cadences. Dashboard refresh target: every 20 minutes. DefiLlama pool ingestion: every 30 minutes. Bitcompare rotation: every 2 hours.
Source observed time vs Yield.ly refresh time
Source observed time is when the upstream observation applies.
Yield.ly refresh time is when Yield.ly processed or published the data in the current dashboard generation.
A page rendered five minutes ago does not mean the underlying source observation is five minutes old.
Data freshness states
| State | Meaning | What users see | Default results |
|---|
| Fresh | Source observation is within the ideal refresh window. | Normal display without freshness warning. | Eligible if other qualification rules pass. |
| Delayed | Observation is older than ideal but still within acceptable bounds. | Delayed data label or warning where applicable. | May remain qualified with a warning. |
| Stale | Observation exceeds the stale threshold but has not hard-stopped. | Stale warning. Values may be retained from last valid observation. | Typically hidden from default discovery until recovery. |
| Partial | Some required fields or sources are missing while others remain valid. | Partial coverage indicators where fields are unavailable. | Depends on which fields are affected. |
| Unavailable | Required data is missing or failed validation. | Unavailable label. No fabricated zero fallback. | Excluded or temporarily hidden. |
Thresholds derived from production policy: fresh within 30 minutes, stale after 120 minutes, hard stop at 150 minutes.
Provider failure policy
When an upstream provider fails, Yield.ly preserves the latest accepted valid dataset rather than replacing values with zeros or unverified data.
Delayed and stale warnings appear when observations exceed ideal windows. Yield.ly does not display zero as a fallback for unavailable financial data.
Data validation
Yield.ly rejects or quarantines records with:
- Malformed or non-finite APY values
- Impossible timestamps
- Invalid or negative TVL where TVL is required
- Unsupported rate units without explicit labeling
- Mapping conflicts and missing required lineage
- Corrupt provider generations that fail quality gates
APY and APR convention
APY assumes compounding over one year when labeled as APY. APR is simple interest without compounding assumption. Yield.ly does not silently convert an unknown APR into APY without explicit assumptions.
Source-provided vs Yield.ly-derived
Source-provided: current APY, TVL, provider pool ID, base and reward components when reported.
Yield.ly-derived: 7D and 30D medians, reward dependency, qualification state, observed risk bands, and ranking inputs.
Data methodology version
Current data methodology: methodology@0.7.0. Last updated 2026-08-25.