Methodology
How vaults.xyz derives risk, complexity, and exposure metrics from on-chain Morpho data. Every formula is open and auditable — if you disagree with a weight, you can replicate the calculation.
All metrics are computed from the public Morpho Blue GraphQL API at blue-api.morpho.org/graphql. We index whitelisted MetaMorpho vaults on Ethereum mainnet and Base, ordered by total assets in USD. The dataset refreshes every 5 minutes.
Vault history (APY, TVL) is taken directly from the API. Risk and complexity scores are derived locally from the per-allocation data the API exposes (collateral asset, LLTV, utilization, share).
Risk is the expected magnitude of principal loss under stress. It decomposes into five independent components — each producing a sub-score in [0, 1] — combined with fixed weights:
loanDemand = clamp(medianApy(asset) / 5%, 0.3, 1.0)
structural = (0.45 · assetQuality + 0.25 · bufferPenalty) · utilDemand
+ 0.10 · redemptionRisk + 0.10 · concentration + 0.05
riskScore = (structural − 0.05) · loanDemand + 0.05
A second risk signal derived purely from what borrowers actually pay. In an efficient market, supply APY reflects the demand for leverage on that collateral — higher APY means borrowers are willing to pay more, which is a market-implied risk premium.
Fixed scale (12.5% APY caps at 100) so the number is comparable across time, not just relative to the current universe.
Divergence is the diagnostic. When our structural risk score is higher than the market signal, our model thinks the vault is riskier than borrowers do — either we're over-counting risk on under-utilized collateral, or the market is mispricing. When the market signal is higher than the structural score, the vault is yielding more than its collateral composition would suggest — usually a sign of strong borrower demand for that loan asset (not exotic strategy risk).
Complexity measures strategy intricacy independent of risk. A vault can be simple and risky (one collateral at 95% LLTV), or complex and safe (well-managed split across many low-risk markets). The score reflects how many independent moving parts the strategy depends on.
+ 0.20 · maxNovelty
+ 0.15 · parameterSurface
+ 0.15 · noveltyDiversity
- Curator track record. We display vault counts and aggregate TVL per curator, but the risk score doesn't penalize new / unknown curators yet.
- Timelocks and guardian quality. These are governance signals the API exposes (we surface guardian on the vault page) but don't factor into the score.
- Vault cap utilization. Vaults V2 expose on-chain caps; V1 vaults we currently index do not, so capacity is currently shown as 1.5× current TVL.
- Per-position LTV distribution. We use LLTV (protocol parameter) as a proxy for liquidation proximity. The actual buffer is determined by borrower behavior, which the API doesn't aggregate.
- Morpho Vaults V2. The app currently only queries V1 (MetaMorpho) vaults. V2 vaults appear on app.morpho.org but aren't yet indexed here.