> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solana.vanna.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Interest Rate Model

> Kink utilization curve. Borrow APR funds lender APY.

Annualized borrow rate in basis points:

```text theme={null}
if u ≤ u_opt:
  rate = base + slope1 × (u / u_opt)
else:
  rate = base + slope1 + slope2 × (u − u_opt) / (1 − u_opt)
```

`u` is utilization. Empty pool → `u = 0` → `rate = base`.

Interest over `elapsed` seconds:

```text theme={null}
interest = ceil(total_borrow_assets × rate_bps × elapsed / (10_000 × 31_536_000))
```

A reserve-factor slice becomes `accrued_protocol_fees`. The rest increases `total_borrow_assets` and `borrow_index_wad`. Lender equity rises by the non-fee portion.

This is why Vanna stock pools can print a non-zero APY: **borrowers exist** (perps + Farm). Kamino's xStocks market has the mint and almost no borrowers, so its rate stays at zero.
