5/5
## Understanding the Aave V3 Interest Rate Model The Aave V3 protocol employs a sophisticated interest rate model to dynamically determine the cost of borrowing assets. This model is crucial for balancing the supply and demand of assets within the protocol, ensuring liquidity, and providing appropriate incentives for both lenders and borrowers. At its heart, the model links the borrow interest rate directly to how much of an asset's available pool is currently being utilized. ## Core Concepts: Utilization Rate and Borrow Interest Rate To grasp the Aave V3 interest rate mechanism, we first need to understand these fundamental concepts: * **Utilization Rate (U):** This is a key metric, expressed as a number between 0 (0%) and 1 (100%). It quantifies the proportion of a specific token's total supplied pool that is currently being borrowed by users. For instance, if 1000 DAI are supplied to Aave and 600 DAI are borrowed, the utilization rate is 0.6 or 60%. In graphical representations of the model, the Utilization Rate (U) typically occupies the horizontal x-axis. * **Borrow Interest Rate (R):** This is the annualized rate that borrowers pay for taking out a loan of a particular asset. It is not static; instead, it's a dynamic function of the Utilization Rate (U). As utilization changes, so does the borrow interest rate. This rate is usually depicted on the vertical y-axis of an interest rate curve graph. * **Optimal Utilization Rate (U_optimal):** For each asset, the Aave V3 protocol defines a target utilization rate, known as `U_optimal`. This specific point, also between 0 and 1, acts as a critical threshold or "kink point" in the interest rate curve. * When the current Utilization Rate (U) is *below or at* `U_optimal`, the borrow interest rate increases relatively gradually as utilization rises. * When U *exceeds* `U_optimal`, the borrow interest rate begins to increase much more sharply. This mechanism is designed to manage liquidity risk. In the examples we'll explore, `U_optimal` is set to 0.8 (or 80%). ## Visualizing the Model: Key Parameters The Aave V3 interest rate model can be represented as a piecewise linear function. While we're not looking at a graph here, understanding the parameters that define its shape is essential. These parameters are configurable per asset and are crucial for the model's behavior: * **`u` (Current Utilization Rate):** This represents the real-time utilization rate of an asset, ranging from 0 to 1. It's the input variable that determines the current borrow interest rate. * **`u_optimal` (Optimal Utilization Rate):** As defined above, this is the protocol-set target. In our reference example, `u_optimal = 0.8`. * **`r0` (Base variable borrow rate):** This is the foundational interest rate when utilization (U) is zero. It represents the y-intercept of the interest rate curve. In our example, `r0 = 0.05` (or 5%). * **`s1` (Variable rate slope 1):** This parameter dictates the steepness of the interest rate curve in the first segment, i.e., when `U <= U_optimal`. More precisely, `s1` represents the *additional* interest accrued on top of `r0` when the utilization rate reaches `U_optimal`. In the example, `s1 = 0.1` (or 10%). * **`s2` (Variable rate slope 2):** This parameter governs the steepness of the interest rate curve in the second segment, when `U > U_optimal`. `s2` signifies the *additional* interest (on top of the rate at `U_optimal`) that accrues as utilization moves from `U_optimal` to 1 (100% utilization). Based on example data points where a utilization of 0.89 results in a 0.33 interest rate, `s2` can be inferred to be `0.4` (or 40%). These parameters collectively define a two-part interest rate curve that responds to market conditions. ## The Mathematical Foundation: Calculating Borrow Interest Rates The borrow interest rate, `R(U)`, is calculated using a piecewise linear function, meaning the formula changes depending on whether the current utilization `U` is below or above `U_optimal`. ### When Utilization is At or Below Optimal (`U <= U_optimal`) In this range, the interest rate increases at a more moderate pace. * **Formula:** ``` R(U) = r0 + (U / U_optimal) * s1 ``` * **Explanation:** * The rate starts at `r0` when `U = 0`. * As `U` increases, the term `(U / U_optimal)` scales the `s1` component. This term represents the proportion of `U_optimal` that has been reached. * When `U` exactly equals `U_optimal`, the term `(U / U_optimal)` becomes 1. At this point, the interest rate is `R(U_optimal) = r0 + s1`. * **Actual Slope of this segment:** The true slope of this linear segment is `s1 / U_optimal`. * Using our example parameters (`s1 = 0.1`, `U_optimal = 0.8`): Slope 1 = `0.1 / 0.8 = 0.125`. ### When Utilization Exceeds Optimal (`U > U_optimal`) Once utilization surpasses `U_optimal`, the protocol aims to quickly restore liquidity by making borrowing significantly more expensive. * **Rate at `U_optimal` (the starting point for this segment):** `R_at_optimal = r0 + s1` * **Formula:** ``` R(U) = R_at_optimal + ((U - U_optimal) / (1 - U_optimal)) * s2 ``` Expanding `R_at_optimal`, the full formula is: ``` R(U) = (r0 + s1) + ((U - U_optimal) / (1 - U_optimal)) * s2 ``` * **Explanation:** * The rate calculation begins from `R_at_optimal`, which is the rate achieved at the kink point `U_optimal`. * The term `(U - U_optimal)` represents how much the current utilization exceeds the optimal level. * The term `(1 - U_optimal)` represents the remaining capacity for utilization to increase from `U_optimal` up to 100%. * The fraction `((U - U_optimal) / (1 - U_optimal))` therefore scales the `s2` component, applying it proportionally to how far utilization has ventured into the "high-cost" zone. * **Actual Slope of this segment:** The true slope of this steeper linear segment is `s2 / (1 - U_optimal)`. * Using our example parameters (`s2 = 0.4` (inferred), `U_optimal = 0.8`): Slope 2 = `0.4 / (1 - 0.8) = 0.4 / 0.2 = 2`. This is significantly steeper than Slope 1 (0.125), illustrating the rapid rate increase. ## Practical Examples: Interest Rates in Action Let's apply the formulas with the example parameters: `r0 = 0.05`, `s1 = 0.1`, `U_optimal = 0.8`, and inferred `s2 = 0.4`. * **When `U = 0` (No utilization):** * Since `U <= U_optimal`, we use the first formula: `R(U) = r0 + (U / U_optimal) * s1`. * `R(0) = 0.05 + (0 / 0.8) * 0.1 = 0.05 + 0 = 0.05`. * The borrow interest rate is 5%. * **When `U = 0.59` (Utilization below optimal):** * `0.59 <= 0.8`, so we use the first formula. * `R(0.59) = 0.05 + (0.59 / 0.8) * 0.1` * `R(0.59) = 0.05 + 0.7375 * 0.1` * `R(0.59) = 0.05 + 0.07375 = 0.12375`. * The borrow interest rate is 12.375%. * **When `U = U_optimal = 0.8` (Utilization at the optimal point):** * `0.8 <= 0.8`, so we use the first formula (or simply `r0 + s1`). * `R(0.8) = 0.05 + (0.8 / 0.8) * 0.1 = 0.05 + 1 * 0.1 = 0.05 + 0.1 = 0.15`. * The borrow interest rate is 15%. This is the "kink point" where the rate calculation methodology changes. * **When `U = 0.89` (Utilization above optimal):** * `0.89 > 0.8`, so we use the second formula. * First, `R_at_optimal = r0 + s1 = 0.05 + 0.1 = 0.15`. * `R(0.89) = 0.15 + ((0.89 - 0.8) / (1 - 0.8)) * 0.4` * `R(0.89) = 0.15 + (0.09 / 0.2) * 0.4` * `R(0.89) = 0.15 + 0.45 * 0.4` * `R(0.89) = 0.15 + 0.18 = 0.33`. * The borrow interest rate is 33%. This demonstrates the significantly faster increase in rates once `U_optimal` is surpassed. ## Key Takeaways: Why This Model Matters The Aave V3 interest rate model is more than just a set of formulas; it's a critical mechanism for maintaining protocol health and efficiency. * **Supply and Demand Dynamics:** The model directly reflects the fundamental economic principle that as demand for a limited resource (lendable assets) increases relative to its supply (higher utilization), the price of using that resource (borrow interest rate) also increases. * **Incentivizing Liquidity:** The sharp rise in interest rates above `U_optimal` serves multiple purposes: * **Discourages further borrowing:** High rates make new loans less attractive when liquidity is becoming scarce. * **Incentivizes lenders (suppliers):** Higher borrow rates translate to higher supply APYs, encouraging more users to deposit assets and replenish liquidity. * **Encourages repayments:** Existing borrowers are motivated to repay their loans to avoid escalating interest costs. * **Protocol Target and Risk Management:** The `U_optimal` parameter allows the Aave protocol (and its governance) to set a target liquidity level for each asset. By aiming to keep utilization around this point, the protocol strives to ensure there's generally enough liquidity for withdrawals and new borrows, while still providing competitive returns for lenders. The steep second slope acts as a powerful deterrent against draining a pool completely, which is a significant risk in DeFi lending. Understanding these parameters (`r0`, `s1`, `s2`, `U_optimal`) and how they interact is vital for any user engaging with Aave V3, whether as a lender assessing potential returns or a borrower anticipating costs. It also highlights the importance of governance in setting these risk parameters appropriately for the diverse range of assets supported by the protocol.
The Aave V3 protocol employs a sophisticated interest rate model to dynamically determine the cost of borrowing assets. This model is crucial for balancing the supply and demand of assets within the protocol, ensuring liquidity, and providing appropriate incentives for both lenders and borrowers. At its heart, the model links the borrow interest rate directly to how much of an asset's available pool is currently being utilized.
To grasp the Aave V3 interest rate mechanism, we first need to understand these fundamental concepts:
Utilization Rate (U): This is a key metric, expressed as a number between 0 (0%) and 1 (100%). It quantifies the proportion of a specific token's total supplied pool that is currently being borrowed by users. For instance, if 1000 DAI are supplied to Aave and 600 DAI are borrowed, the utilization rate is 0.6 or 60%. In graphical representations of the model, the Utilization Rate (U) typically occupies the horizontal x-axis.
Borrow Interest Rate (R): This is the annualized rate that borrowers pay for taking out a loan of a particular asset. It is not static; instead, it's a dynamic function of the Utilization Rate (U). As utilization changes, so does the borrow interest rate. This rate is usually depicted on the vertical y-axis of an interest rate curve graph.
Optimal Utilization Rate (U_optimal): For each asset, the Aave V3 protocol defines a target utilization rate, known as U_optimal
. This specific point, also between 0 and 1, acts as a critical threshold or "kink point" in the interest rate curve.
When the current Utilization Rate (U) is below or at U_optimal
, the borrow interest rate increases relatively gradually as utilization rises.
When U exceeds U_optimal
, the borrow interest rate begins to increase much more sharply. This mechanism is designed to manage liquidity risk.
In the examples we'll explore, U_optimal
is set to 0.8 (or 80%).
The Aave V3 interest rate model can be represented as a piecewise linear function. While we're not looking at a graph here, understanding the parameters that define its shape is essential. These parameters are configurable per asset and are crucial for the model's behavior:
u
(Current Utilization Rate): This represents the real-time utilization rate of an asset, ranging from 0 to 1. It's the input variable that determines the current borrow interest rate.
u_optimal
(Optimal Utilization Rate): As defined above, this is the protocol-set target. In our reference example, u_optimal = 0.8
.
r0
(Base variable borrow rate): This is the foundational interest rate when utilization (U) is zero. It represents the y-intercept of the interest rate curve. In our example, r0 = 0.05
(or 5%).
s1
(Variable rate slope 1): This parameter dictates the steepness of the interest rate curve in the first segment, i.e., when U <= U_optimal
. More precisely, s1
represents the additional interest accrued on top of r0
when the utilization rate reaches U_optimal
. In the example, s1 = 0.1
(or 10%).
s2
(Variable rate slope 2): This parameter governs the steepness of the interest rate curve in the second segment, when U > U_optimal
. s2
signifies the additional interest (on top of the rate at U_optimal
) that accrues as utilization moves from U_optimal
to 1 (100% utilization). Based on example data points where a utilization of 0.89 results in a 0.33 interest rate, s2
can be inferred to be 0.4
(or 40%).
These parameters collectively define a two-part interest rate curve that responds to market conditions.
The borrow interest rate, R(U)
, is calculated using a piecewise linear function, meaning the formula changes depending on whether the current utilization U
is below or above U_optimal
.
U <= U_optimal
)In this range, the interest rate increases at a more moderate pace.
Formula:
Explanation:
The rate starts at r0
when U = 0
.
As U
increases, the term (U / U_optimal)
scales the s1
component. This term represents the proportion of U_optimal
that has been reached.
When U
exactly equals U_optimal
, the term (U / U_optimal)
becomes 1. At this point, the interest rate is R(U_optimal) = r0 + s1
.
Actual Slope of this segment: The true slope of this linear segment is s1 / U_optimal
.
Using our example parameters (s1 = 0.1
, U_optimal = 0.8
):
Slope 1 = 0.1 / 0.8 = 0.125
.
U > U_optimal
)Once utilization surpasses U_optimal
, the protocol aims to quickly restore liquidity by making borrowing significantly more expensive.
Rate at U_optimal
(the starting point for this segment):
R_at_optimal = r0 + s1
Formula:
Expanding R_at_optimal
, the full formula is:
Explanation:
The rate calculation begins from R_at_optimal
, which is the rate achieved at the kink point U_optimal
.
The term (U - U_optimal)
represents how much the current utilization exceeds the optimal level.
The term (1 - U_optimal)
represents the remaining capacity for utilization to increase from U_optimal
up to 100%.
The fraction ((U - U_optimal) / (1 - U_optimal))
therefore scales the s2
component, applying it proportionally to how far utilization has ventured into the "high-cost" zone.
Actual Slope of this segment: The true slope of this steeper linear segment is s2 / (1 - U_optimal)
.
Using our example parameters (s2 = 0.4
(inferred), U_optimal = 0.8
):
Slope 2 = 0.4 / (1 - 0.8) = 0.4 / 0.2 = 2
. This is significantly steeper than Slope 1 (0.125), illustrating the rapid rate increase.
Let's apply the formulas with the example parameters: r0 = 0.05
, s1 = 0.1
, U_optimal = 0.8
, and inferred s2 = 0.4
.
When U = 0
(No utilization):
Since U <= U_optimal
, we use the first formula: R(U) = r0 + (U / U_optimal) * s1
.
R(0) = 0.05 + (0 / 0.8) * 0.1 = 0.05 + 0 = 0.05
.
The borrow interest rate is 5%.
When U = 0.59
(Utilization below optimal):
0.59 <= 0.8
, so we use the first formula.
R(0.59) = 0.05 + (0.59 / 0.8) * 0.1
R(0.59) = 0.05 + 0.7375 * 0.1
R(0.59) = 0.05 + 0.07375 = 0.12375
.
The borrow interest rate is 12.375%.
When U = U_optimal = 0.8
(Utilization at the optimal point):
0.8 <= 0.8
, so we use the first formula (or simply r0 + s1
).
R(0.8) = 0.05 + (0.8 / 0.8) * 0.1 = 0.05 + 1 * 0.1 = 0.05 + 0.1 = 0.15
.
The borrow interest rate is 15%. This is the "kink point" where the rate calculation methodology changes.
When U = 0.89
(Utilization above optimal):
0.89 > 0.8
, so we use the second formula.
First, R_at_optimal = r0 + s1 = 0.05 + 0.1 = 0.15
.
R(0.89) = 0.15 + ((0.89 - 0.8) / (1 - 0.8)) * 0.4
R(0.89) = 0.15 + (0.09 / 0.2) * 0.4
R(0.89) = 0.15 + 0.45 * 0.4
R(0.89) = 0.15 + 0.18 = 0.33
.
The borrow interest rate is 33%. This demonstrates the significantly faster increase in rates once U_optimal
is surpassed.
The Aave V3 interest rate model is more than just a set of formulas; it's a critical mechanism for maintaining protocol health and efficiency.
Supply and Demand Dynamics: The model directly reflects the fundamental economic principle that as demand for a limited resource (lendable assets) increases relative to its supply (higher utilization), the price of using that resource (borrow interest rate) also increases.
Incentivizing Liquidity: The sharp rise in interest rates above U_optimal
serves multiple purposes:
Discourages further borrowing: High rates make new loans less attractive when liquidity is becoming scarce.
Incentivizes lenders (suppliers): Higher borrow rates translate to higher supply APYs, encouraging more users to deposit assets and replenish liquidity.
Encourages repayments: Existing borrowers are motivated to repay their loans to avoid escalating interest costs.
Protocol Target and Risk Management: The U_optimal
parameter allows the Aave protocol (and its governance) to set a target liquidity level for each asset. By aiming to keep utilization around this point, the protocol strives to ensure there's generally enough liquidity for withdrawals and new borrows, while still providing competitive returns for lenders. The steep second slope acts as a powerful deterrent against draining a pool completely, which is a significant risk in DeFi lending.
Understanding these parameters (r0
, s1
, s2
, U_optimal
) and how they interact is vital for any user engaging with Aave V3, whether as a lender assessing potential returns or a borrower anticipating costs. It also highlights the importance of governance in setting these risk parameters appropriately for the diverse range of assets supported by the protocol.
A detailed breakdown to Understanding the Aave V3 Interest Rate Model - Discover how Aave V3 dynamically links borrow interest rates to asset utilization (U), anchored by an optimal threshold (U_optimal). Understand the key parameters (r0, s1, s2) and the piecewise linear formulas that govern these rates for protocol health.
Previous lesson
Previous
Next lesson
Next
Give us feedback
Course Overview
About the course
Aave V3 core functionalities and key features
APY & APR, market forces, utilization rates, interest rate models
Reserves, ATokens, debt tokens, liquidity and borrow index
Aave smart contracts architecture
Supply, borrow, repay, withdrawal, liquidation
Compound interest
Reserve factors, liquidation pricing, credit delegation, LTV
Aave V3 flash loans
How to buy long and sell short using Aave V3
How to build a functional app to buy long, sell short, and close a position.
Last updated on July 25, 2025
Duration: 8min
Duration: 49min
Duration: 43min
Duration: 12min
Course Overview
About the course
Aave V3 core functionalities and key features
APY & APR, market forces, utilization rates, interest rate models
Reserves, ATokens, debt tokens, liquidity and borrow index
Aave smart contracts architecture
Supply, borrow, repay, withdrawal, liquidation
Compound interest
Reserve factors, liquidation pricing, credit delegation, LTV
Aave V3 flash loans
How to buy long and sell short using Aave V3
How to build a functional app to buy long, sell short, and close a position.
Last updated on July 25, 2025