Risk methodology

How we grade risk.
And how we know it's right.

Every market gets a letter grade from five measured axes. This is exactly how it's built — and the live, on-chain proof that a low grade actually predicts real losses, not just a hunch.

Grade vs real losses · AUC
Markets graded
Liquidations tracked
Protocols covered
The model

Five axes.
One letter.

Each market is scored 0–100 on five axes, weighted into a composite, then mapped to a letter. An axis we couldn't measure is excluded, never guessed — the grade only reflects real, on-chain signal.

The five axes & their weights

The letter

The weighted score maps to a grade — and three rules can only ever CAP it lower, never raise it.

A
score ≥ 90
B
≥ 80
C
≥ 68
D
≥ 55
F
below 55
CAP · realised bad debt → C / FCAP · a liquidation that left bad debt → C / FCAP · too little measured → grade withheld
Validation

Does it actually
predict losses?

The honest test of any risk grade: do the markets we graded low turn out to be the ones that took real losses? We measure it directly.

Grade vs realised bad debtMann–Whitney AUC
0.5 · coin flip1.0 · perfect

Across markets that took realised bad-debt losses and that didn't, the grade ranks the loser lower of the time. A coin flip would be 0.50.

Which axes carry the signal?

Each axis's own discrimination against real liquidations (AUC) — the label the weights are tuned to. The axes that predict get the weight; the ones near 0.50 (a coin flip) don't.

Grade distribution ( markets)
The evidence

Every liquidation,
on-chain.

The grades are checked against a live dataset of real liquidation events — decoded from each protocol's own logs and reconstructed per market. Nothing is simulated.

Events
Markets hit
Protocols

Any liquidation is an independent check the grade never sees as an input — the grade separates markets that were liquidated at AUC.

Coverage by protocol (markets liquidated / tracked)

Calibration

Tuned against reality,
not guessed.

The axis weights aren't a product hunch. They were fit against real liquidation outcomes with nested cross-validation — regularised toward the prior judgement, so the data nudges the weights rather than overfitting five numbers to a sparse label.

What changed

Prior judgement → the weights the data actually supports.

Oracle
0.26 → 0.34
Leverage
0.18 → 0.26
Utilization
0.18 → 0.26
Liquidity
barely predicted losses
0.24 → 0.09
Size
barely predicted losses
0.14 → 0.05
Cross-validated separation (out-of-fold AUC)
0.5660.637
Checked on an INDEPENDENT label it was never fit on

Fit on liquidations, then measured against realised bad debt — a different adverse outcome. Grade-vs-bad-debt AUC rose 0.74 → 0.91. Generalising to a label it never saw is the sign it's a real improvement, not curve-fitting.

Honesty

The limits
we won't hide.

Good risk work shows its own edges. Here's what these numbers do not prove — because a grade you can't interrogate isn't worth trusting.

Small samples
the loss labels are sparse — read the AUCs as evidence, not precision
directional
No confidence intervals
we don't bootstrap error bars on these figures — the point estimates stand alone for now
not yet
Partly mechanical labels
high-utilization markets liquidate almost by construction, so some of the 'signal' is structural, not predictive
caveat
Liquidity under-weighted
it barely predicts liquidations, but it guards your ability to UNWIND — a risk no current label tests. Revisited if an exit-liquidity label emerges
by design

Everything on this page is computed live, in your browser, from the same public data and the same code our risk engine runs. If the numbers look thin, that's the honest state of the evidence — and it gets stronger every day the dataset grows.