Skip to main content

Market Risk

Market risk captures the financial exposure of a vault — how it would perform under stress, how close borrowers are to liquidation, and how concentrated liquidity and borrowing are. Of the three risk dimensions, market risk has the highest internal granularity — seven weighted components — though all three dimensions contribute equally in the composite score.

Seven components

Market risk is scored across seven weighted components grouped into three subcategories. Each component produces a score from 0.0–1.0. The market risk score is their weighted sum.

pool_market_score = Σ (component_weight / 160) × component_score

Stress Test — 50% of market risk weight

Extreme Event Resilience (weight: 80 / 50%)

The single highest-weight component. Measures expected lender losses under a simulated black-swan scenario: volatility spiking 10x current levels, evaluated at the worst 0.01% tail outcome.

ParameterValue
ModelGBM (Geometric Brownian Motion)
Volatility shock9.0× (10x current volatility)
Quantile0.9999 (worst 0.01% outcomes)
Iterations10,000
Horizon365 days
Score formula1 − (LenderES₀.₉₉₉₉ / 100)

The simulation uses the vault's actual collateral weights, loan weights, and collateral ratios derived from on-chain state. A vault where lenders would lose nothing in the tail scenario scores 1.0; a vault with 100% expected shortfall scores 0.0.

Collateral exclusions

Some collateral types cannot be priced by the simulation engine and are excluded from the stress test. Excluded collateral weight is reported in the UI but does not contribute to the resilience score. Examples: Pendle PT tokens (expiry-linked pricing), USTB (unsupported by risk engine index).


Liquidation Resilience — 12.5% of market risk weight

Liquidation Buffer (weight: 20 / 12.5%)

Measures the average distance between borrowers' current positions and their liquidation thresholds. A vault where borrowers are far from liquidation can absorb price moves without forced selling.

InputFormula
Position-weighted average bufferpool_buffer / 0.2, clamped to [0, 1]

A pool-wide buffer of ≥20% scores 1.0. A buffer of 0% (borrowers at their liquidation threshold) scores 0.0. The score drops linearly in between.

Example: If the average borrower is 15% away from their liquidation LTV, the score is 0.15 / 0.2 = 0.75.


Available Liquidity — 37.5% of market risk weight

Utilization (weight: 30 / 18.75%)

High utilization means less liquidity available for withdrawals. The score uses a calibrated exponent that creates a steep penalty near saturation — small increases near 90%+ utilization matter far more than the same increase at low utilization.

Formula
1 − U^6.579 where U is the utilization rate
UtilizationScore
56%0.98
71%0.90
88%0.55
90%0.50
94%0.35

This nonlinearity is intentional: the difference between 88% and 94% utilization (a narrow band) is the difference between a score of 0.55 and 0.35 — because the liquidity risk at near-full utilization is qualitatively different.

LP Nakamoto Coefficient (weight: 10 / 6.25%)

Minimum number of liquidity providers collectively controlling ≥50% of supplied liquidity. Higher = more decentralized = safer. A vault where one LP can withdraw more than half the liquidity unilaterally is structurally fragile.

Formula
ln(k) / ln(10), clamped to [0, 1]
k (LPs to reach 51%)Score
10.00
20.30
50.70
101.00

The log scale rewards the early gains in decentralization most: going from 1 to 2 LPs is a bigger improvement than going from 10 to 20.

LP Max Power Ratio (weight: 10 / 6.25%)

Share of total supplied liquidity held by the single largest LP.

Formula
1 − max_share

A vault where no LP holds more than a few percent scores close to 1.0. A vault where one LP holds 80% of supply scores 0.20.

Borrower Nakamoto Coefficient (weight: 5 / 3.125%)

Same logic as LP Nakamoto, applied to the borrow side. Measures how many borrowers collectively control ≥50% of outstanding debt. High borrower concentration means a small number of forced liquidations could dominate the market.

Formula
ln(k) / ln(10), clamped to [0, 1]

A vault with a single dominant borrower (k=1) scores 0.0. A vault where 10+ borrowers each hold smaller shares (k≥10) scores 1.0.

Borrower Max Power Ratio (weight: 5 / 3.125%)

Share of total outstanding debt held by the single largest borrower.

Formula
1 − max_share

How components combine

Each component score is multiplied by its weight and summed:

pool_market_score = Σ (weight_i / 160) × score_i

Weights sum to 160. The result is a market risk score from 0.0–1.0 (displayed as 0–10 in the Ozone UI).

Production examples — AAVE V3 Ethereum Main Market reserves:

VaultUtilLP NakLP MaxBor NakBor MaxLiq BufStressScore
WBTC1.001.000.961.000.931.001.000.996
LINK1.001.000.940.600.771.001.000.977
USDe0.980.850.760.950.900.840.760.827
USDT0.901.000.911.000.971.000.690.819
wstETH1.000.900.760.000.381.000.780.818

The WBTC market scores near-perfect across all components. wstETH scores lower primarily because a single borrower controls over 51% of the borrow side (Borrower Nakamoto = 0.00) — a concentrated liquidation risk the stress test score alone wouldn't reveal.

What market risk doesn't capture

Market risk is powerful but has limits:

  • Address clustering: Concentration metrics are based on on-chain addresses. A single entity operating through multiple wallets may appear more decentralized than it actually is.
  • Collateral exclusions: Collateral types unsupported by the stress test engine are excluded from the resilience score. The excluded weight is shown in the UI.
  • Novel market regimes: The GBM model is calibrated on historical volatility. In genuinely unprecedented market conditions, estimates carry higher uncertainty.

See How Ozone Scores Work for how market risk combines with oracle and protocol risk into the composite Ozone Score.