# Vault risk

> Rating ERC-4626 style vaults on curator, holdings, withdrawability, NAV integrity and governance.

Source: https://docs.1delta.io/risk/vaults/

---

A vault rating composes the ratings this system already produces for everything
the vault touches. A vault is not evaluated on its own terms — it is evaluated on
who runs it, what it holds, whether you can get out, and whether the assets it
claims are really there.

Rated per `provider:chainId:vaultAddress`, covering MetaMorpho and Morpho Vault
V2, Euler Earn, Silo, Fluid, Gearbox, LST wrappers, savings tokens and similar.

---

## Dimensions

### 1. Curator (weight 0.3)

The reputation of whoever allocates the vault. Resolved by address where the
provider exposes it, otherwise by name, using the scores from
[Curation](https://docs.1delta.io/risk/curators/) and the reputation allowlist.

An unknown curator scores 3 (`yellow`) — uncertainty, not confirmed risk. It can
never on its own drive a vault red.

### 2. Markets (weight 0.4)

What the vault holds, **inherited** from the per-market ratings. Each allocation
position takes the worst of every market-level signal:

| Signal | Source |
| --- | --- |
| Oracle band | [Oracle risk](https://docs.1delta.io/risk/oracles/) |
| Market governance | [Governance](https://docs.1delta.io/risk/governance/) |
| Untrusted or depegged collateral | [Asset risk](https://docs.1delta.io/risk/assets/) |
| Provider market warnings | oracle-unusable, price-derivation, sustained low liquidity, bad debt |
| Bad debt and structural flags | [Bad debt](https://docs.1delta.io/risk/bad-debt/) |

A position with no signal against it scores 2 — the absence of an oracle problem
or a compromised asset means the market is fine *regardless of how volatile its
collateral is*. Volatility is priced by LLTV, not by this rating.

The vault takes the allocation-weighted mean, with one override: a position that
is both **risky (score 4 or more) and material (at least 5% weight)** drags the
vault to that position's score. Without it a weighted mean dilutes a real problem
away — 10% in a red market against 90% neutral averages to 2.3, which rounds to
green.

The vault's own denomination asset is folded in as a floor. A vault denominated in
a broken stablecoin is not made safe by holding sound markets.

Vaults with no allocation data fall back to the snapshot's exposure list, then to
the underlying asset.

### 3. Liquidity (weight 0.3)

Withdrawability, scored **only for synchronous (standard ERC-4626) vaults**:

| Condition | Score | Flag |
| --- | --- | --- |
| Under $1,000 withdrawable against more than $100,000 TVL | 5 | `stuck-no-liquidity`, forces red |
| Liquidity below 2% of TVL | 4 | `very-thin-liquidity` |
| Liquidity below 10% of TVL | 3 | `thin-liquidity` |
| Otherwise | 1 | — |

Async vaults — LST unbonding, cooldown savings, epoch-based redemption — are
illiquid *by design* and are not scored on this dimension at all. Unreported
liquidity is treated as unknown, never as zero.

### 4. NAV integrity (escalation only)

Is the reported net asset value real? Two ways it is not:

- **Lost assets.** MetaMorpho V1.1 and Euler Earn absorb a loss into a
  `lostAssets` accumulator so that `totalAssets()` and the share price stay
  *flat*. A vault that lost everything keeps advertising its old TVL at a healthy
  share price, and no other dimension notices. Measured as assets the vault claims
  but cannot account for in any market.

  | Share of TVL unaccounted for | Score |
  | --- | --- |
  | at least 10% | 3 |
  | at least 20% | 4 |
  | at least 50% | 5 |

  Applied only above $10,000 of TVL.

- **Bad debt**, from the per-vault rating and from the live allocation, worse of
  the two.

Integrity is an **escalation, never part of the weighted mean**. A clean
integrity reading is the norm and must not dilute the other dimensions — a vault
whose NAV is not backed cannot average its way back to green.

### 5. Governance (reported, escalates level)

The vault's own timelock and the governance of the markets it holds — see
[Governance](https://docs.1delta.io/risk/governance/). It can raise the level but stays out of the
weighted mean: it is a separate way to lose the money, not a component of how
risky the holdings are.

---

## Composition

```
score = weighted mean of (curator 0.3, markets 0.4, liquidity 0.3), applicable dimensions only
level = worst of (curator, markets, liquidity, governance)
```

then the escalations, in order:

- A **stuck** synchronous vault is red, score at least 4.
- An inherited **material risky market** is red, score at least 4.
- **Integrity** raises both level and score, never lowers them.
- A **stale snapshot** — older than the freshness window — lifts green to yellow
  and floors the score at 3. Staleness only ever raises the floor, so it can
  never mask a red that a still-valid signal produced.
- A vault at level red never reports a score below 4, so a consumer reading the
  number alone cannot see a red vault as low risk.

Dimensions that do not apply (async liquidity, unknown governance) are dropped
from the mean rather than counted as zero or as five.

---

## Why staleness is its own rule

A vault row is scored on numbers that were true when the snapshot was taken. One
vault sat at a three-month-old TVL, APR and liquidity reading for a hundred days
while it lost everything — every dimension read healthy because every input was
frozen. Age is therefore treated as a first-class signal, not a data-quality
footnote.
