Interest Rate Model

Nomial provides configurable interest rate models out of the box, with the ability to add your own.

Configurable Rate Models

Nomial lets you define a rate model for each inventory pool. You can choose from existing model implemenations or make your own.

A Nomial pool defines it's interest rate model by referencing an instance of an inventory pool params contract (an interface defined in IInventoryPoolParams01.solarrow-up-right).

Nomial includes two implementations of interest rate models already. They are:

Borrow Rate vs Liquidity Provider Yield

A borrower must pay any accrued interest when paying back a pool.

A Liquidity Provider (LP) supplies assets to a pool and earns their share of the accrued interest. When a pool is not fully utilized, a borrower pays a higher interest rate than the yield rate earned by LP's.

For example, if an LP supplies 100 USDC but a borrower borrows 50 USDC at 10% APR, the LP earns 5% APY since only half of the supply is utilized.

The following sections provide more precise definitions of utilization, borrow rates, LP yield, and how they interact.

Utilization

Let:

  • B = total borrowed amount

  • L = total liquidity available (i.e. supplied – borrowed)

Then the pool’s utilization is:

U=BB+L,0U1U = \frac{B}{B + L}, \quad 0 \le U \le 1
  • If nobody’s borrowing, B=0 ⇒ U=0.

  • If the pool is “dry” (all funds borrowed), L=0 ⇒ U=1.

Borrow Rate

As an example, Nomial's UtilizationBasedRateParams01arrow-up-right contract defines a variable borrow rate that increases with utilization. Defined as rborrow(U), the formula is:

rborrow(U)=rbase+k×Ur_\mathrm{borrow}(U) = r_\mathrm{base} + k \times U
  • rbase = the "floor" rate (e.g., 2% APY). At U = 0, this is the borrow rate.

  • k = the variable rate which is multiplied by utilization (U) to get the additional rate on top of the base rate. For example, if rbase is 0.02, k = 0.18, and utilization is 1, then the borrow rate is 0.2 (i.e., 20%).

LP Yield Rate

The resulting yield for the LP is described by the following formula:

rsupply(U)=rborrow(U)×Ur_{\mathrm{supply}}(U) = r_{\mathrm{borrow}}(U) \times U

Why? Because borrowers pay rborrow on what they borrow, which may only be a portion of the pool.

Takeaways

  • If utilization is less than 100%, LP's earn less percent yield than borrowers pay in interest rate percent.

  • Use existing interest rate models or create your own by implementing the IInventoryPoolParams01 interface.

Last updated