Protocol risk
Rates the lender itself: the code, the team's history with it, and who controls it. This is the dimension that answers "is the protocol my position sits in sound", independent of which market inside it you pick.
Identified by lender key (AAVE_V3, MORPHO_BLUE, EULER_V2, …), the same
identifier used in market identifiers.
1. Baseline
Every protocol starts from a third-party baseline rating (Exponential.fi's
green / yellow / red), which folds in code quality, complexity, team and
audit posture.
| Baseline | Level | Score |
|---|---|---|
| green | green | 1 |
| yellow | yellow | 3 |
| red | red | 4 |
| no rating available | yellow | 3 |
An unrated protocol is not given the benefit of the doubt. Most protocols with no third-party coverage are small, new, or both.
2. Track record: exploits
An incident's severity is its size relative to what the protocol held at the time, not its headline USD figure. A $400k loss on a $1.7M protocol is an existential event; $800k on a $58B protocol is a rounding error that says nothing about the protocol's soundness today.
impact = hackAmountUsd / protocolTvlAtHackTime
Incidents below 0.1% of TVL are treated as negligible. Above that, each incident adds a penalty and forces a level downgrade.
| Impact | Score penalty |
|---|---|
| below 0.1% of TVL | none |
| under 1% | +0.5 |
| under 10% | +1 |
| under 50% | +1.5 |
| 50% or more | +2 |
| impact unknown | +1 |
Downgrade. If any incident clears the threshold — or its impact could not be computed — the level drops one step: green becomes yellow, yellow becomes red, red stays red. The score is then floored at the minimum for the downgraded level, so the level and the number can never disagree.
Unknown impact counts against the protocol. An incident we cannot size is treated as significant, not ignored. Historic hacks on protocols whose TVL history is no longer published are the common case, and they are exactly the protocols where an unexplained gap should not read as green.
Incidents are cumulative and are not time-decayed. A protocol that was drained in 2021 carries it; what changes the rating is a re-audit and a new baseline, not the passage of time.
Worked example
Edel, an Aave fork on Ethereum, was exploited on 2026-06-30 for $403,000 through a flaw in the wrapper between a tokenised equity and its collateral form, against $1.69M of TVL.
impact = 403,000 / 1,689,975 = 0.2385 (23.9% of TVL)
baseline= yellow / 3 (no third-party rating)
penalty = +1.5 (impact in the 10-50% band)
downgrade: yellow -> red, floor 4
score = round(max(3 + 1.5, 4)) = 5
Result: red, score 5, 1 incident.
3. Audits and maturity
Audit links are collected from the baseline provider's auditor list and the protocol's own published reports, falling back to DefiLlama's audit links. They are surfaced on the protocol entry so the evidence is one click away.
Protocol age is derived from the first date the protocol reported non-zero TVL. Both are context rather than direct score inputs: an audit is not a guarantee, and the incident and governance signals are the ones that move the number.
4. Pool governance
Who can change the pool is folded into the protocol score. The full classifier is documented in Governance; its effect here:
| Worst deployment tier | Effect on the protocol rating |
|---|---|
| high — an EOA can upgrade or re-point the pool | forced red, score floored at 4 |
| medium — a small multisig, no timelock | one level down, +1 score |
| low / unknown | unchanged |
The tier is the worst across all of that protocol's deployments. A lender that is DAO-governed on Ethereum and EOA-governed on a side chain is rated on the side chain: it is the same brand, the same integration, and the same key that can take the money.
5. Isolated-market protocols
Euler, Silo, Fluid, Morpho Blue and similar protocols have no single pool admin — risk lives per market. They are handled two ways at once:
- The protocol entry carries an aggregate of its markets' governance, and is downgraded when a material share of classified markets is high-risk (above 25%), rather than by weakest link. On a permissionless protocol nobody is exposed to a market they did not choose, and anyone can deploy a market nobody uses.
- Each market is additionally rated in its own right — oracle, governance, curation, bad debt — and surfaced as its own entry. See Oracles, Curation and Bad debt.
Markets that are unscreened count as unknown and are excluded from the
denominator of that share, so a protocol cannot improve its rating by being
harder to probe.
6. Manual overrides
A protocol that is winding down or has been abandoned is pinned to red with an
explicit status (winding_down, wound_down, deprecated) and a stated reason.
Nothing about the code changed; the reason it is unsafe is that nobody is
maintaining or defending it any more, which no automated signal captures.
Overrides are the only place a rating is set by hand, they always carry a reason, and they can inject a protocol that the automated pipeline does not otherwise cover.
Output shape
{
"EDEL": {
"level": "red",
"score": 5,
"data": { "auditLinks": [], "numberOfIncidents": 1 }
},
"AAVE_V2": {
"level": "green",
"score": 1,
"governance": { "worstTier": "low", "deploymentCount": 3, "ownerKindMix": { "GOVERNANCE": 3 } },
"data": { "auditLinks": [ { "name": "Audits", "url": "https://aave.com/security" } ], "numberOfIncidents": 0 }
}
}
Per-market entries (Morpho markets, Silo configs, Fluid vaults) use the same
level / score envelope with a market-specific data payload, so a consumer
reads one shape for every granularity.