Interest Rate Model
Nomial provides configurable interest rate models out of the box, with the ability to add your own.
Last updated
Nomial provides configurable interest rate models out of the box, with the ability to add your own.
Last updated
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 ).
Nomial includes two implementations of interest rate models already. They are:
: allows an owner to set interest rates. For V1 deployments, the owner is , which requires an admin address with majority validator sign-off to update interest rate. This allows interest rate updates to happen off-chain using a model dictated by validators.
: This models Aave V3’s two-slope utilization based rate behavior. See an example of a two-slope interest rate on the .
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% , the LP earns 5% 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.
Let:
B = total borrowed amount
L = total liquidity available (i.e. supplied – borrowed)
Then the pool’s utilization is:
If nobody’s borrowing, B=0 ⇒ U=0.
If the pool is “dry” (all funds borrowed), L=0 ⇒ U=1.
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%).
The resulting yield for the LP is described by the following formula:
Why? Because borrowers pay rborrow on what they borrow, which may only be a portion of the pool.
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.
As an example, Nomial's contract defines a variable borrow rate that increases with utilization. Defined as rborrow(U), the formula is: