Yield rating methodology
Two numbers drive every yield table on usd.net: a 0–100 durability rating and a risk-adjusted APY derived from it. Neither rewards a big headline number. This page gives you the full formula, the weights, the grade bands and the cases where the model is wrong.
The question the rating answers
Not "how big is this APY?" — the table already shows you that. The rating answers a narrower and more useful question: how likely is this rate to still be there next month, at the size you actually want to deposit? A 12% pool that pays in an emissions token, sits on $1.4m of depth and halves every six weeks is a worse allocation than a 5% lending market with $1.8bn of depth, and the rating is built to say so out loud.
The five factors and their weights
Each factor is scored 0–100 from live pool data, then combined as a weighted sum. Weights add to 100% and are fixed — we do not tune them per pool, per chain or per protocol.
Pool depth
26%Larger pools absorb size without moving the rate.
How it is computed: log10(TVL) mapped linearly from $316k (score 0) to $1bn (score 100), then clamped. Depth is scored on a log scale because the difference between $1m and $10m matters far more than between $1bn and $10bn.
Base vs incentives
26%Organic base yield survives; token emissions expire.
How it is computed: base APY ÷ total APY × 100, where base APY is the venue's reported base rate, or total minus rewards when only rewards are reported.
When data is missing: Neither figure reported: scored a neutral 55 rather than assumed good or bad.
30d rate stability
20%Distance between the live APY and its own 30-day mean.
How it is computed: drift = (APY − 30d mean APY) ÷ 30d mean APY × 100; score = 100 − |drift| × 1.4, clamped. A rate 25% away from its own monthly mean in either direction loses 35 points — a spike is as informative as a collapse.
When data is missing: No 30-day mean available: scored a neutral 55.
Exposure structure
16%Single-sided stable exposure with no impermanent loss scores highest.
How it is computed: Starts at 100; −25 if exposure is not single-sided, −35 if the venue flags impermanent-loss risk. Both penalties can apply.
Rate plausibility
12%Double-digit dollar yields price in a risk somebody is carrying.
How it is computed: 100 − (APY − 8) × 5 for every point above 8% APY, clamped at 0. A 20% dollar yield scores 40 here; a 28% yield scores 0.
Grade bands
The rating is rounded to a whole number and mapped to a letter grade and a plain-language label. Bands are absolute, not a curve — if every pool tracked is fragile, no pool gets an A.
| Grade | Score | Label | Reading |
|---|---|---|---|
| A | 80–100 | Durable | Deep, mostly organic, steady. Size can go in. |
| B | 66–79 | Solid | One soft factor, usually depth or a partial emissions component. |
| C | 52–65 | Mixed | Works, but the rate or the depth will not hold at size. |
| D | 38–51 | Fragile | Mostly incentives, thin depth, or a rate far from its own mean. |
| E | 0–37 | Speculative | Treat the headline rate as marketing until proven otherwise. |
Risk-adjusted APY
Sorting by raw APY puts the most fragile pools on top of every table, which is exactly backwards. Risk-adjusted APY is the sort key we use instead:
riskAdjustedApy = apy × (0.35 + rating / 100 × 0.65)- A rating of 100 keeps 100% of the quoted APY.
- A rating of 50 keeps about 67% of it.
- A rating of 0 still keeps 35% — a floor, because even a bad pool pays something while it lasts.
The 0.35 floor is a judgment call, not a derived constant. It exists so the ranking discriminates between weak pools instead of flattening them all to zero. Risk-adjusted APY is a comparison device and not a projected return: nobody pays you the adjusted number. To model what actually lands in your account after fees, gas, tax and a depeg haircut, use the net yield calculator.
Worked examples
These three pools are scored below by the exact same function that scores the live tables, so you can see the model disagree with the headline rate.
Deep lending market, all base yield
99/100 · A · DurableQuoted 5.20% → risk-adjusted 5.17%
- Pool depth100
- Base vs incentives100
- 30d rate stability94
- Exposure structure100
- Rate plausibility100
Mid-size pool, half of it emissions
64/100 · C · MixedQuoted 11.40% → risk-adjusted 8.73%
- Pool depth61
- Base vs incentives50
- 30d rate stability65
- Exposure structure75
- Rate plausibility83
Small volatile LP with a headline rate
13/100 · E · SpeculativeQuoted 38.00% → risk-adjusted 16.51%
- Pool depth18
- Base vs incentives6
- 30d rate stability0
- Exposure structure40
- Rate plausibility0
Inputs and refresh
- Pool APY, base/reward split, 30d mean, TVL, exposure, IL risk — DefiLlama Yields (yields.llama.fi/pools), refreshed roughly every 30 minutes and cached server-side.
- Rating and risk-adjusted APY — recomputed on every data refresh. Nothing is stored or smoothed between refreshes, so a rating can move as soon as the underlying pool does.
What this model does not capture
- Smart-contract and admin risk. An audited protocol and an unaudited fork with identical depth and rate structure score the same. The rating is not a security review.
- Issuer and collateral risk of the underlying stablecoin. That lives in the separate safety score. A durable yield on a fragile dollar is still a fragile position.
- Lockups, withdrawal queues and gates. Depth is measured as TVL, which says nothing about whether you can leave on demand.
- Counterparty and custody terms for centralised venues, and any off-chain rate that is not reported to the source API.
- Source error. If DefiLlama misreports a base/reward split or a stale TVL, the rating inherits that mistake.
The rating is our opinion expressed as a number. It is not a credit rating, not advice, and not a substitute for reading the protocol's own documentation before you allocate.