Skip to main content

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.

GradeScoreLabelReading
A80–100DurableDeep, mostly organic, steady. Size can go in.
B66–79SolidOne soft factor, usually depth or a partial emissions component.
C52–65MixedWorks, but the rate or the depth will not hold at size.
D38–51FragileMostly incentives, thin depth, or a rate far from its own mean.
E0–37SpeculativeTreat 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 · Durable

Quoted 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 · Mixed

Quoted 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 · Speculative

Quoted 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.

Related