๐Interest Rate Model
Details the Jump Rate Model that dynamically adjusts borrow and supply rates based on utilization to maintain optimal capital efficiency.
Cluster uses a Jump Rate Model to determine dynamic interest rates for borrowers and suppliers. This model is implemented through the BaseJumpRateModelV2
and extended by JumpRateModelV2
.
Why Jump Rate Model?
This model increases the borrow rate linearly with utilization until a critical point (kink
) is reached. After that, it applies a steeper jump multiplier, discouraging excessive borrowing and preserving liquidity.
Key Parameters
baseRatePerBlock
: Minimum interest rate when utilization is 0%multiplierPerBlock
: Increase in rate beforekink
jumpMultiplierPerBlock
: Steep increase afterkink
kink
: Utilization threshold triggering the jumpblocksPerYear
: Number of blocks assumed per year (2,102,400)
Utilization Formula
Calculates how much of the pool's liquidity is currently borrowed.
utilization = borrows / (cash + borrows - reserves)
Borrow Rate Calculation
Computes the borrow rate depending on the utilization relative to the kink.
if (util <= kink) {
return ((util * multiplierPerBlock) / BASE) + baseRatePerBlock;
} else {
uint normalRate = ((kink * multiplierPerBlock) / BASE) + baseRatePerBlock;
uint excessUtil = util - kink;
return ((excessUtil * jumpMultiplierPerBlock) / BASE) + normalRate;
}
Supply Rate Calculation
Determines the rate earned by suppliers, factoring in the reserve factor.
borrowRate = getBorrowRateInternal(...);
rateToPool = borrowRate * (1 - reserveFactor);
supplyRate = utilization * rateToPool;
Example Constructor Usage
Initializes the interest rate model with key parameters.
constructor(
uint baseRatePerYear,
uint multiplierPerYear,
uint jumpMultiplierPerYear,
uint kink,
address owner
) public BaseJumpRateModelV2(...) { }
This modularity allows the protocol to fine-tune interest dynamics over time through governance proposals.
Last updated