> ## Documentation Index
> Fetch the complete documentation index at: https://ormaprotocol.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Orma Credit Scoring: Six Risk Dimensions Explained

> Orma's six-dimension ordinal scoring system: how each factor is measured, why no weights are applied, and how the composite grade is derived.

A vault score is an ordinal credit grade — one of twenty steps from **AAA** down to **D** — derived entirely from public ledger state. Orma reads the live fields of the `Vault`, `LoanBroker`, and `Loan` objects on every poll, measures five independent risk dimensions, and assembles them into a composite by anchoring on the redemption cliff and applying a sequence of named notches. No weights are applied anywhere. A strong factor cannot pay for a broken one: if liquidity is fine but cover is exhausted, the score reflects a vault with exhausted cover, not the average of those two facts.

## The six dimensions

Orma computes five measured factors and one composite. The API returns all six as rows in `score.dimensions` so a table can render them together, but `HEADLINE` is the result of scoring, not a sixth input.

| Key         | Label               | What it measures                                                                                                                                                                                                             |
| ----------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `LIQUIDITY` | Liquidity cover     | `AssetsAvailable` as a share of `AssetsTotal` — how much of the vault's capital is liquid right now                                                                                                                          |
| `COVER`     | First-loss adequacy | Liquidatable cover divided by the exposure it must absorb — the double-product `CoverRateMinimum × CoverRateLiquidation` applied to total broker debt, against recognised loss or distressed principal (whichever is larger) |
| `CONCENT`   | Concentration       | Largest single loan as a share of `LoanBroker.DebtTotal` — because cover is keyed to total debt, one outsized loan consumes disproportionately little cover when it defaults                                                 |
| `RECOG`     | Recognition lag     | How many seconds an exposure has been overdue without the broker declaring impairment — the maximum across all loans in `overdue` or `defaultable` status                                                                    |
| `DEADLINE`  | Redemption cliff    | Projected shortfall of claims over available liquidity at the redemption date, expressed as a percentage of net claims                                                                                                       |
| `HEADLINE`  | Composite           | Ordinal notching of the five dimensions — the vault's overall grade                                                                                                                                                          |

<Tip>
  No weights are applied anywhere in this system. A weighted average would let a strong factor compensate for a broken one. Orma's notching approach means each factor can only make a grade worse, never better.
</Tip>

## Band tables

Each factor is independently graded on the 20-step ordinal ladder. Thresholds are evaluated top to bottom; the first threshold the value reaches wins, and `D` if none does.

<Tabs>
  <Tab title="Liquidity (LIQ)">
    Graded on `AssetsAvailable / AssetsTotal`. Defined as `1` when `AssetsTotal` is zero.

    | Threshold | Grade |
    | --------- | ----- |
    | ≥ 0.95    | AAA   |
    | ≥ 0.85    | A     |
    | ≥ 0.70    | BBB   |
    | ≥ 0.50    | BB    |
    | ≥ 0.25    | B     |
    | ≥ 0.05    | CCC   |
    | \< 0.05   | D     |
  </Tab>

  <Tab title="First-Loss Adequacy (COV)">
    Graded on `min(⌈D·cₘᵢₙ·c_liq⌉, C) / max(L, P_distressed)`. Defined as `1` when the denominator is zero (no exposure to absorb).

    | Threshold | Grade |
    | --------- | ----- |
    | ≥ 1.00    | AA    |
    | ≥ 0.50    | A-    |
    | ≥ 0.20    | BBB-  |
    | ≥ 0.05    | BB-   |
    | ≥ 0.01    | B-    |
    | \< 0.01   | D     |
  </Tab>

  <Tab title="Concentration (CNC)">
    Graded on `1 − (largest loan / DebtTotal)`. Higher concentration is worse; the grade is on the complement so higher is better.

    | Threshold | Grade |
    | --------- | ----- |
    | ≥ 0.80    | AA    |
    | ≥ 0.60    | A-    |
    | ≥ 0.40    | BBB-  |
    | ≥ 0.20    | BB-   |
    | \< 0.20   | D     |
  </Tab>

  <Tab title="Recognition Lag (RECOG)">
    A direct cut on seconds, not a ratio. The value is the maximum lag across all overdue or defaultable loans, floored at zero.

    | Threshold | Grade |
    | --------- | ----- |
    | ≤ 0 s     | AAA   |
    | \< 60 s   | A     |
    | \< 300 s  | BBB   |
    | \< 900 s  | BB    |
    | ≥ 900 s   | CCC   |
  </Tab>

  <Tab title="Redemption Cliff (DDL)">
    Graded on `1 − (shortfallPct / 100)`. Shortfall is `max(0, claims − liquidityAtRedemption)` expressed as a percentage of net claims.

    | Threshold               | Grade |
    | ----------------------- | ----- |
    | = 1.00 (0% shortfall)   | AAA   |
    | ≥ 0.98 (≤ 2% shortfall) | AA    |
    | ≥ 0.90                  | A     |
    | ≥ 0.75                  | BBB   |
    | ≥ 0.50                  | BB    |
    | ≥ 0.25                  | B     |
    | ≥ 0.10                  | CCC   |
    | \< 0.10                 | D     |
  </Tab>
</Tabs>

## Ordinal notching

The composite grade anchors on the **redemption cliff** (`DEADLINE`). For a fixed-term facility the headline question is whether claims can be met at the redemption date; the other factors modify confidence in that answer. Starting from the `DEADLINE` grade, Orma applies each of the following notch rules in order.

### Realised capital destruction (ρ)

Every other factor measures current *exposure*. A realised loss leaves none behind: the write-off removes the asset from `AssetsTotal`, the provision releases, and the book reads clean. Without a memory term, a facility that defaulted on 80% of its loans would score AAA the moment the write-off settled — indistinguishable from one that never lost a penny.

Realised destruction is:

```
ρ = max(0, (SharesOutstanding − AssetsTotal) / SharesOutstanding)
```

Measured against `AssetsTotal`, **not** against `AssetsTotal − LossUnrealized`. An unrealised loss is a provision against an asset the vault still holds and may recover. Counting it would penalise a manager for disclosing early — the opposite of the behaviour Orma exists to reward.

| Condition | Notch (Δ) |
| --------- | --------- |
| ρ ≥ 75%   | −14       |
| ρ ≥ 50%   | −12       |
| ρ ≥ 25%   | −8        |
| ρ ≥ 10%   | −5        |
| ρ ≥ 2%    | −3        |
| ρ > 0%    | −1        |

### Remaining notch rules

After the destruction term, Orma applies these rules in sequence. The two recognition-lag rules are mutually exclusive (the larger one wins).

| Condition                                                  | Notch (Δ) |
| ---------------------------------------------------------- | --------- |
| Recognition lag > 300 s                                    | −2        |
| Recognition lag > 0 s                                      | −1        |
| Largest loan ≥ 75% of broker debt                          | −1        |
| Liquidatable cover \< 5% of recognised loss                | −1        |
| `LIQUIDITY` grade ≤ B **and** vault is in Redemption phase | −2        |

The last rule fires when withdrawals are failing now rather than might fail at redemption. It applies only during the Redemption phase.

## The notch ladder

The full ladder, ordered best to worst, has 20 steps:

```
AAA  AA+  AA  AA-  A+  A  A-  BBB+  BBB  BBB-
BB+  BB  BB-  B+  B  B-  CCC  CC  C  D
```

A notch of −1 moves one step toward D. The grade is clamped: it can never go below D or above AAA.

Orma also computes a numeric representation of each grade for oracle publication:

```
gradeNumeric = round(100 × (1 − ladderIndex / 19))
```

AAA = 100, D = 0. This is published as the `HDL` dimension in the XLS-47 Oracle object.

## Conduct grade

The conduct grade is a separate assessment of the **manager's behaviour**, not the vault's current book. It starts at 100 and is clamped to `[0, 100]`, then mapped to a letter grade.

| Observation                                                 | Penalty  |
| ----------------------------------------------------------- | -------- |
| Sequence score φ \< 0.25 (ordering close to investor-worst) | −35      |
| Sequence score 0.25 ≤ φ \< 0.75                             | −15      |
| A loss written off with no prior impairment                 | −20 each |
| A withdrawal of first-loss capital                          | −10 each |

| Score | Grade |
| ----- | ----- |
| ≥ 90  | A     |
| ≥ 75  | B     |
| ≥ 55  | C     |
| ≥ 35  | D     |
| \< 35 | E     |

The sequence score φ measures where observed first-loss capital consumption falls between the investor-worst and investor-best orderings. See the [Mathematics reference](/mathematics) for the full derivation.

The conduct grade surfaces in `GET /api/vaults/:vaultId/broker-history` under the `reputation` block.

## The `notchTrace` field

Every notch applied is emitted in `notchTrace` on the vault detail response. Each entry records the grade before the rule fired, the rule text, the delta, and the grade after.

```json theme={null}
"notchTrace": [
  {
    "from": "AAA",
    "rule": "anchor on DEADLINE (can claims be met at redemption)",
    "delta": 0,
    "to": "AAA"
  },
  {
    "from": "AAA",
    "rule": "single loan >= 75% of broker debt (cover is keyed to total debt, not loan size)",
    "delta": -1,
    "to": "AA+"
  },
  {
    "from": "AA+",
    "rule": "liquidatable cover < 5% of the exposure it must absorb",
    "delta": -1,
    "to": "AA"
  }
]
```

The trace is the answer to "how did you choose your weights": there are no weights, there are notches, and each one is named. Walk the trace against the band tables above to reproduce any grade from the raw ledger fields.

<Note>
  The `score.dimensions` array always contains six rows — five measured factors plus `HEADLINE`. Do not average all six: `HEADLINE` is derived from the other five, so averaging it back in counts the composite twice.
</Note>

## Worked example

Calder Structured Credit III at ledger 5263343: `AssetsTotal = 51,000,000`, `AssetsAvailable = 41,000,000`, `LossUnrealized = 10,000,000`, `SharesOutstanding = 51,000,000`, `DebtTotal = 10,000,000`, `CoverAvailable = 5,000,000`, `cₘᵢₙ = c_liq = 10000`, one impaired loan of `10,000,000`, phase Investment.

<Steps>
  <Step title="Grade each dimension">
    | Dimension           | Calculation             | Raw value | Grade |
    | ------------------- | ----------------------- | --------- | ----- |
    | Liquidity           | 41 / 51                 | 0.8039    | BBB   |
    | Liquidatable cover  | ⌈10,000,000 × 0.01⌉     | 100,000   | —     |
    | First-loss adequacy | 100,000 / max(10M, 10M) | 0.0100    | B-    |
    | Concentration       | 10M / 10M               | 1.0000    | D     |
    | Recognition lag     | already declared        | 0 s       | AAA   |
    | Redemption cliff    | 0% shortfall            | 0.00%     | AAA   |
  </Step>

  <Step title="Anchor on DEADLINE">
    Composite starts at **AAA**.
  </Step>

  <Step title="Apply notches">
    ρ = 0 (AssetsTotal ≥ SharesOutstanding), no destruction notch.

    Concentration = 1.0 ≥ 0.75 → −1 → **AA+**

    Cover adequacy 0.01 \< 0.05 → −1 → **AA**
  </Step>

  <Step title="Final grade">
    Composite grade: **AA**, numeric **89**.
  </Step>
</Steps>

For the full mathematical derivations of each formula — including the double-product cover calculation, the redemption cliff projection, and the realised-destruction term — see the [Mathematics reference](/mathematics).
