Sturdy crvUSD Aggregator: Interest Rate Model Upgrade
Introducing a time-based mechanism with Frax's Variable Rate V2 IRM
Links
Sturdy App: crvUSD Aggregator | USDC Silo | USDT Silo | FRAX Silo | mkUSD Silo
Contract: crvUSD-USDT Market IRM
Sturdy Governance: Llama Risk Proposal for crvUSD Aggregator
LlamaRisk Analytics: crvUSD Aggregator Dune Dashboard | Sturdy Silos Streamlit Analytics
Resources: Understanding the Sturdy Silos Oracle | crvUSD Agg Analytics
Introduction
In February, we announced the launch of the crvUSD Aggregator on Sturdy Finance v2, managed by Llama Risk. We have continued our mission to improve transparency and understanding of the aggregator with explainers and analytics dashboards. We are pleased to share an imminent upgrade to the markets’ interest rate models that will improve its adaptability to market trends and optimize rates for lenders and borrowers.
Current IRM
Users can see the interest rate curve for the constituent crvUSD aggregator markets in the Sturdy app. The current model is conservatively assigned as a static linear rate, common among many lending platforms. There is a vertex at 80% utilization, after which the rate increases more rapidly until 100% utilization. The borrow rates have a minimum rate, vertex rate, and max rate that are constant.
Take, as an example, the crvUSD-USDT market. It has a minimum borrow rate of 2% when there in no borrow demand. Its target rate is 13% at the vertex (80% utilization) and its max rate is 18% at full utilization. By comparison, the current utilization is 27.39%, which translates to 5.77% borrow APR.
This model has been suitable while bootstrapping the market, but it is suboptimal because it cannot adequately adapt to changes in market behaviors. We target 80% utilization of the market because it optimizes yields for lenders without being too restrictive on liquidity that might infringe on lenders’ ability to withdraw. The current utilization of 27% suggests borrowers are unwilling to pay the 13% rate at the market vertex, and that rate should be reduced to incentivize additional borrows. Therefore we introduce an upgrade to optimize a market equilibrium.
Frax Variable Rate V2 IRM
The IRM described above and used in Sturdy markets implements the Frax Variable Rate V2 contract with simplified parameter settings. This model has the potential to greatly improve the IRM already established, with just a few parameter adjustments.
In addition to the mechanisms described above, the Variable Rate V2 mechanism introduces a time-based component to shift the curve based on utilization rates. It specifies a min and max target utilization, within which the time-based mechanism is inactive. Whenever the market utilization is greater than the max target or lower than the min target, the time-based mechanism shifts the curve.
MIN_FULL_UTIL_RATE and MAX_FULL_UTIL_RATE parameters specify the min and max rate at full utilization. The time-based mechanism can only make adjustments to the curve within those bounds. The minimum rate (0% utilization) is a constant, regardless of the time-based mechanism; only the vertex rate and full utilization rate are modified. Effectively this means that as the time-based mechanism increases rates, the slope below the vertex steepens.
See the curve parameters involved in the IRM below:
The critical component of this mechanism is the RATE_HALF_LIFE. This defines how quickly the curve will adjust when utilization is outside the target range. The model uses a formula whereby the further current utilization is from the target utilization range, the faster the time-based mechanism will react. More specifically, the parameter value dictates the length of time needed to reduce the rate in half when utilization is 0%. Likewise, it is the time needed to double the interest rate when utilization is 100%.
Assuming:
rate half life = 4 hours
target utilization = 75%-85%
The full utilization interest rate will exhibit the following changes every 4 hours:
The following constants inform the full behavior of the IRM. Also described are the presets used by Frax in their own FraxLend markets:
MIN_TARGET_UTIL: The minimum utilization wherein no adjustment to full utilization and vertex rates occurs
Frax sets this value at 75%.
MAX_TARGET_UTIL: The maximum utilization wherein no adjustment to full utilization and vertex rates occurs
Frax sets this value at 85%.
VERTEX_UTILIZATION: The utilization at which the slope increases
Frax sets this value at 87.5%.
MIN_FULL_UTIL_RATE: The minimum interest rate (per second, 365.24 days per year) when utilization is 100%
Frax sets this value at 4.99%.
MAX_FULL_UTIL_RATE: The maximum interest rate (per second, 365.24 days per year) when utilization is 100%
Frax sets this value at 9,987.79%.
ZERO_UTIL_RATE: The interest rate (per second, 365.24 days per year) when utilization is 0%
Frax sets this value at 0.5%.
RATE_HALF_LIFE: The interest rate half life in seconds, 365.24 days per year. Determines the rate of adjustments to rate curve
Frax sets this value at 2 days.
VERTEX_RATE_PERCENT: The percent of the delta between the current max rate and zero utilization rate. This defines how much the slope of the curve changes around the vertex.
Frax uses different values for different markets, between 10% and 50%. The lower value has an aggressive change in slope above the vertex utilization, whereas the high value has a modest change in slope.
Proposed Sturdy Market IRM
Because the Sturdy crvUSD markets involve leveraged yield farming on stable pairs, market participants may be particularly sensitive to changes in reward rates of the underlying crvUSD LPs. There may be a significant benefit to users by introducing a time-based mechanism that automatically adjusts the vertex rate toward a market equilibrium, encouraging the market to maintain the target utilization.
We plan to activate the time-based mechanism by modifying constant values in the existing IRM contracts used in the Sturdy markets (see: USDT market IRM). The following parameters will be used:
MIN_TARGET_UTIL: 75000 (75%)
MAX_TARGET_UTIL: 85000 (85%)
VERTEX_UTILIZATION: 87500 (87.5%)
MIN_FULL_UTIL_RATE: 1582470460 (4.99%)
MAX_FULL_UTIL_RATE: 3164940920000 (9987.79%)
ZERO_UTIL_RATE: 158247046 (0.5%)
RATE_HALF_LIFE: 345600 (4 days)
VERTEX_RATE_PERCENT: 500000000000000000 (50%)
These are consistent with presets used in FraxLend markets with one notable deviation and another noteworthy point to make.
RATE_HALF_LIFE is 4 days rather than Frax’s standard of 2 days. We do this because we believe this is a better compromise between accommodating leisurely action by users in case of shifting market dynamics, without being so accommodating that lenders risk prolonged illiquidity.
VERTEX_RATE_PERCENT is set to the higher value of 50% because it has a less severe impact on the rate curve around the vertex, allowing the time-based mechanism to gradually arrive at a rate equilibrium.
We have selected these parameters which we believe are
suitable for the stableswap yield farming use case. Demand for these markets is likely to be driven by changes in the reward rate in the underlying LP tokens. Users are likely to be particularly sensitive to the profitability of the farming strategy and will benefit from a mechanism that gradually arrives at equilibrium.
Assuming the current max rate at full utilization is 12% (given current demand in the Sturdy markets, this is a reasonable estimate), the market is persistently at full utilization, and the rate half life is 2 days (Frax’s setting), the rate increase will follow this trajectory over a 2 week period:
RATE_HALF_LIFE == 2 days
The same conditions with a rate half life of 4 days, as we propose for the Sturdy markets, would involve the following trajectory:
RATE_HALF_LIFE == 4 days
As relatively small adjustments to the rate may erode the profitability of the strategy, necessitating action by the borrower, this gentler approach may strike a more optimal balance to accommodate the needs of both lenders and borrowers.
Short Term Outlook
Given that the current utilization rates are below the target, the time-based mechanism will begin reducing rates down to its minimum full utilization rate of 5% (with realized rates much lower than this). Existing borrowers will experience more favorable conditions in the short term that should incentivize additional borrowers to open positions.
This may impact yields for lenders who will see rates decline. We don’t expect to see significant changes in lender behavior, as the majority of yield currently comes from STRDY rewards. We ultimately target the vertex utilization rate, which will optimize yields for lenders and create a more sustainable market for these Sturdy pairs.
Users can expect this upgrade in the coming days. The Sturdy team is handling the upgrade by assigning a new rateContract within each SturdyPair market. These contracts will be identical to the current IRM contracts with the parameter modifications described above.