How Ozone Scores Work
The Ozone Score is a composite risk score (0–10) assigned to each monitored vault. Lower scores indicate higher risk. The score aggregates three risk dimensions — market, oracle, and protocol — into a single number suitable for monitoring, alerting, and cross-vault comparison.
Ozone Scores are updated on each data snapshot cycle. They reflect the state of the vault at the time of the most recent snapshot, not a prediction of future performance.
Score dimensions
1. Market Risk
Market risk captures the financial exposure of the vault — how it would perform under stress, how close borrowers are to liquidation, and how concentrated liquidity and borrowing are.
Market risk is composed of seven weighted components grouped into three subcategories:
Stress Test (50% of market risk weight)
| Component | Weight | What it measures |
|---|---|---|
| Extreme Event Resilience | 80 (40%) | Expected shortfall under a 10x volatility shock at the 99.99th percentile. Simulated via GBM Monte Carlo with 10,000 iterations over a 365-day horizon. Score = 1 − (LenderES₀.₉₉₉₉ / 100). |
Liquidation Resilience (12.5% of market risk weight)
| Component | Weight | What it measures |
|---|---|---|
| Liquidation Buffer | 20 (10%) | Position-weighted average gap between each borrower's current LTV and their liquidation LTV. Score = pool_buffer / 0.2, clamped to [0, 1]. A buffer ≥ 20% scores 1.0; a buffer of 0% scores 0.0. |
Available Liquidity (37.5% of market risk weight)
| Component | Weight | What it measures |
|---|---|---|
| Utilization | 30 (15%) | Penalizes high vault utilization using the formula 1 − U^6.579, where U is the utilization rate. At 90% utilization the score drops to 0.5; above 90% it drops steeply. |
| Borrower Nakamoto Coefficient | 5 (2.5%) | Minimum number of borrowers controlling ≥50% of borrowed principal. Score = ln(k) / ln(10), clamped to [0, 1]. A single borrower scores 0; 10+ borrowers score 1. |
| Borrower Max Power Ratio | 5 (2.5%) | Largest borrower's share of total principal. Score = 1 − max_share. |
| LP Nakamoto Coefficient | 10 (5%) | Minimum number of LPs controlling ≥50% of supplied liquidity. Same log-scale scoring as Borrower Nakamoto. |
| LP Max Power Ratio | 10 (5%) | Largest LP's share of total supplied liquidity. Score = 1 − max_share. |
The market risk score is the weighted sum of all seven components:
pool_market_score = Σ (component_weight / 160) × component_score
2. Oracle Risk
Oracle risk captures the reliability of the price feeds used to value vault collateral. Each oracle contract is scored (0.0–1.0) based on its architecture, governance surface, and dependency risk. Scores are computed at three levels:
- Oracle contract score — per individual feed address, based on source type and contract properties
- Market oracle score — geometric mean of all feeds in a market's price path (penalizes weak links)
- Vault oracle score — allocation-weighted average of market oracle scores
| Oracle source | Typical score | Why |
|---|---|---|
| Chainlink V2 Aggregator (major pairs) | 0.7–1.0 | Decentralized node network, wide coverage, proven track record |
| Lido Wrapper + Chainlink | 0.5–0.6 | Two-hop derivation, wrapper dependency |
| ERC-4626 Vault Rate | 0.3–0.4 | Accounting-derived price (totalAssets/totalSupply), not market-discovered |
| Upgradeable Proxy | 0.1–0.2 | Logic can change without address change, admin surface |
| Permissioned ERC-4626 | 0.1–0.2 | Manager-gated, redemption queues, transfer restrictions |
For Chainlink feeds, evaluation considers node coverage, operational history, deviation threshold, and heartbeat interval. For smart contract oracles, evaluation covers upgradeability, admin surface, price derivation method, external dependencies, and redemption mechanics.
3. Protocol Risk
Protocol risk captures the structural and governance properties of the protocol itself, scored across six subcategories:
| Subcategory | What it covers |
|---|---|
| Smart Contract & Teams | Contract discoverability, team identity disclosure, responsiveness to security reports. |
| Documentation | Technical whitepaper, architecture documentation, code documentation coverage, traceability, informativeness. |
| Testing | Test-to-code ratio, test coverage, test reports, formal verification. |
| Security | Protocol auditability, audit applicability matrix, bug bounty program, protocol monitoring, front-end monitoring. |
| Admin Controls & Governance | Code mutability, upgradeability documentation, role clarity, distinct human signers, transaction signing policy. |
| Oracles | Oracle documentation, flash loan robustness. |
Each metric within these subcategories is scored 0–1 and weighted according to its impact on protocol safety.
Probability of Liquidation
Ozone computes a Monte Carlo-simulated probability of liquidation for each vault position. This uses the same underlying engine as the Bitpulse Risk API.
Simulation parameters for the stress test:
| Parameter | Value | Rationale |
|---|---|---|
| Model | GBM (Geometric Brownian Motion) | Standard diffusion model for asset price paths |
| Volatility shock | 9.0 (10x current volatility) | Models a black-swan crisis where portfolio volatility spikes 10-fold |
| Quantile | 0.9999 | Worst 0.01% tail outcomes |
| MC iterations | 10,000 | Sufficient for stable 0.9999 quantile estimation |
| Loan duration | 365 days | Conservative full-year horizon |
| Model lookback | 365 days | Historical window for volatility calibration |
The simulation uses the vault's actual collateral weights, loan weights, and collateral ratios (N, M, L, R parameters) derived from on-chain state.
Score composition
The three dimension scores (market, oracle, protocol) are normalized and combined into a weighted average. Weights are calibrated against historical DeFi stress events to maximize predictive accuracy for adverse outcomes.
Scores are bounded [0, 10]. A score of 7+ is considered low risk. A score below 3 triggers critical-tier alerting.
Alert thresholds
| Score range | Risk level | Default alert behavior |
|---|---|---|
| 7.0 – 10.0 | Low | No alert |
| 5.0 – 6.9 | Moderate | Monitoring — no alert by default |
| 3.0 – 4.9 | Elevated | Alert on entry |
| 0.0 – 2.9 | Critical | Immediate alert |
Thresholds are configurable per vault and per metric in the Ozone dashboard.
Limitations
- Scores reflect the most recent snapshot. They do not predict future events.
- Oracle risk metrics depend on on-chain data availability. Protocols without on-chain price feeds may have reduced oracle risk coverage.
- Monte Carlo simulations use historical volatility as a calibration input. In novel market regimes (no historical precedent), estimates carry higher uncertainty.
- Some collateral types are excluded from the stress test if unsupported by the Risk Engine (e.g., Pendle PT tokens, USTB). Excluded collateral weight is reported but does not contribute to the resilience score.
- Concentration metrics (Nakamoto, Max Power) are based on on-chain addresses. A single entity operating through multiple addresses may appear less concentrated than reality.
- The Ozone Score is not a recommendation to buy, sell, or hold any asset. See Terms of Service.
The Ozone Score and all associated risk metrics are provided for informational and institutional monitoring purposes only. They do not constitute financial advice, investment recommendations, or an offer or solicitation to buy or sell any asset or financial instrument. Scores are generated by quantitative models calibrated on historical on-chain data; they are not guarantees of future performance and should not be relied upon as the sole basis for any investment or risk management decision. This platform is intended for use by qualified institutional counterparties in eligible jurisdictions only. See Terms of Service for full terms of use.