Skip to main content

The Core Idea

Vanna does not have a fixed interest rate. Borrowing costs adjust continuously based on a single input: how much of the pool is currently being borrowed. When a pool is mostly idle, borrowing is cheap - the protocol wants to attract borrowers. When a pool is nearly fully lent out, borrowing becomes very expensive - the protocol needs to incentivize repayment and keep liquidity available for withdrawals. This happens automatically. No governance votes, no manual updates. The rate responds to pool state in real time.

Utilization - The Only Input

Every rate calculation starts with the pool’s utilization ratio: utilization=total borrowstotal borrows+available liquidity\text{utilization} = \frac{\text{total borrows}}{\text{total borrows} + \text{available liquidity}} Utilization is a number between 0 and 1. Everything else is a function of this single value.
UtilizationState
0%Pool is idle - no active borrowing
50%Half the pool is deployed
80%Pool is tightening - rate begins climbing
95%+Near-fully lent - rate becomes expensive
100%Every asset is borrowed - withdrawals blocked

The Rate Curve

Vanna uses a smooth polynomial curve - not a two-segment “kinked” model with a hard breakpoint. The borrow rate accelerates organically as utilization increases, with the steepest acceleration above 90%.
Borrow APR
120%
80%
40%
0%
80%
gradual
steep
rise
0%25%50%75%100%
Utilization →

Rate stays near-flat below 80% utilization, then accelerates sharply near 90–100%.

The borrow APR is computed as: Borrow APR=C3×(uC1+u32C1+u64C2)\text{Borrow APR} = C_3 \times \left( u \cdot C_1 + u^{32} \cdot C_1 + u^{64} \cdot C_2 \right) Where u is the utilization ratio (0 to 1) and the constants are:
CoefficientValueRole
C₁0.1Weight on the linear and 32nd-power terms
C₂0.3Weight on the 64th-power term
C₃3.5Overall scaling multiplier

How the three terms work

The three terms - u, u^32, and u^64 - behave very differently depending on utilization:
TermAt 50% utilAt 90% utilAt 99% util
u × C₁ (linear)0.0500.0900.099
u^32 × C₁≈ 00.0030.073
u^64 × C₂≈ 00.0010.158
Total × C₃ = APR~18%~33%~115%
There is no kink point - no arbitrary breakpoint where the rate suddenly jumps. Acceleration is organic: the high-exponent terms are near zero at low utilization, then rapidly dominate as utilization approaches 100%.

Approximate rate levels

UtilizationApprox Borrow APR
25%~9%
50%~18%
75%~26%
80%~28%
90%~33%
95%~44%
99%~115%

The Self-Correcting Loop

This design means the pool naturally stabilizes without external intervention:
1

Utilization rises

More borrowers draw from the pool. The borrow rate increases.
2

Borrowing becomes expensive

At high utilization, borrowing costs exceed returns for marginal strategies. Borrowers repay or hold off.
3

Utilization falls

Repayments reduce outstanding borrows. The rate decreases and liquidity becomes available again.
4

Equilibrium

The pool settles at the utilization where borrow demand and repayment pressure balance - typically in the 70–85% range.