Problem
Venus’s stablecoins and other highly borrowed assets are significantly underutilized. This leads to large spreads between borrow and supply rates, making it challenging for Venus to remain competitive. For instance, the USDT market in the BSC Core Pool has a current utilization rate of 56%, resulting in a supply APY of 4.37% against a borrow rate of 8.8%. The goal of any market should be to maintain high utilization to drive up supply rates to attract new depositors and grow the market.
The following are the average utilization rates of the top highly borrowed assets in the BSC Core Pool over the past 90 days:
- BNB: 38%
- USDT: 54%
- ETH: 57%
- USDC: 44%
- FDUSD: 62%
- DAI: 53%
- USD1: 40%
- lisUSD: 48%
These low utilization rates produce the following borrow and supply rate discrepancies (current):
- BNB: 2.30% (borrow) vs. 1.04% (supply) (utilization of 51%)
- USDT: 8.79% vs. 4.37% (util. 56%)
- ETH: 1.71% vs. 0.77% (util. 57%)
- USDC: 6.32% vs. 2.28% (util. 41%)
- FDUSD: 4.21% vs. 2.07% (util. 55%)
- DAI: 9.83% vs. 4.64% (util. 54%)
- USD1: 4.01% vs. 1.17% (39%)
- lisUSD: 4.60% vs. 1.84% (46%)
With such discrepancies, borrowing becomes costly, and lenders also suffer from low returns. If Venus can drive up utilization, the protocol will become more attractive to depositors. So why are utilization rates so poor? Let’s look at the interest rate models.
Here is the interest rate model for USDT in the BSC Core Pool:
At 56% utilization, the model is programmed to return a borrow rate of 8.79%. Yet the rate for the broader stablecoin market across competitors is around 5%. For Venus’s borrow rate to match the overall market, the IRM demands a utilization rate of 33%. But then, in being competitive for borrowers, the supply rate would be less than 1.65%, and would not be competitive for lenders.
Ideally, the borrow rate at an optimal utilization rate should be similar to the overall market rate for Venus to be attractive to both borrowers and suppliers. An 85% optimal utilization rate is healthy, and in the case of USDT, it leaves over $54M available for borrowing or withdrawals at any time.
However, the model computes a borrow APY of 17.94% at 85% utilization.
Improperly configured interest rate models render Venus unable to remain competitive. Borrow APYs at optimal utilization rates (say, 85%) should be near market averages, but they’re far from it. How has this problem persisted for so long? It’s time to fix it.
Solution
The simplest solution to this problem is to continually reparameterize the current interest rate models such that the broad market’s reaction leads to optimal utilization of Venus’s markets. This should already be in practice today, but Venus doesn’t see it happening. Perhaps we need an alternative.
I present the Adrastia Prudentia PID-Hybrid Interest Rate Controller: an intelligent system that automatically makes continuous adjustments to the interest rates to sustain optimal utilization. Unlike the current IRMs, this system requires minimal adjustments, or perhaps none, once optimally tuned to achieve the desired outcome. By sustaining optimal utilization rates, the PID controller maintains a tight spread between borrow and supply APYs, helping Venus to be highly competitive.
What exactly is a PID controller? A PID interest rate controller is a control system that adjusts interest rates to maintain a target utilization rate. It consists of three parts: P (proportional) examines how far off the target it is (described as the error), I (integral) accumulates past errors, and D (derivative) predicts future errors based on how fast things are changing. By combining these, it enabled smooth, accurate adjustments to stay close to the goal.
In practice, the proportional component is nearly identical to how the current IRMs function. The addition of the integral element enables automated interest rate adjustments over time, allowing the rates at the optimal utilization (and other levels) to fluctuate. The addition of the derivative provides shock absorption of rapid changes.
Adrastia’s PID-Hybrid interest rate controller has already demonstrated success, having been used by Ionic on Mode from August 07, 2024, until we withdrew from them following their February 4th exploit. Securing approximately $10M in loans against a high of $200M in collateral assets, our systems performed remarkably well. Examining their primary stablecoin market, USDC, we reduced the error rate (the difference between optimal utilization and actual utilization) from about 28.09% to 0.08%. We entered while Ionic’s stablecoin markets were in freefall due to improperly configured IRMS and large rate fluctuations. The introduction of our systems halted the freefall, stabilized the rates, and allowed the markets to grow. For a more detailed analysis, please refer to our Performance Report.
I’m confident that the integration of Adrastia’s PID-Hybrid Interest Rate Controller will bring Venus markets’ utilization rates to optimal levels, resulting in competitive rates that facilitate the growth of the protocol and community.
Technical overview
The Adrastia Prudentia PID-Hybrid Interest Rate Controller comprises several high-level components: a generic Prudentia rate controller, the Prudentia PID controller, and a Prudentia sloped interest rate computer. Under the hood, a time-weighted average oracle, accumulation oracles, and a transformer are used to compute the necessary data, originating from the total supply and borrow for a market.
The following diagram illustrates the system setup.
Each contract has the following responsibilities:
- Total Supply and Borrow Accumulator: Tracks and accumulates total supply & borrow for a market.
- Utilization and Error Accumulator: Tracks and accumulates utilization and error (the difference between the current utilization and the target). Used to compute time-weighted averages and feed current utilization.
- Utilization and Error Oracle: Computes and stores time-weighted average utilization and error using the sliding window technique.
- Input and Error Transformer: The Negative Error Transformer adjusts the PID input such that output interest rates respond quicker to over-utilization vs. under-utilization. This is a critical component for achieving balance.
- PID Controller: The PID controller.
- Sloped Interest Rate Computer: Implements a real-time high-utilization kick rate; when market utilization is very high (say, 95%), interest rates are immediately and aggressively increased on a linear scale to quickly bring utilization down. This is a critical component to discourage market illiquidity.
- Interest Rate Controller: Combines the PID rate and the real-time high-utilization rate, and applies overarching rate controls.
Permissions and controls
Every contract is supported by granular, role-based access control. Governance retains ultimate control, yet still can delegate responsibility to individual (or groups of) actors to reduce governance overload.
The controllers have additional controls that allow the protocol to set up guardrails, enabling experts like ourselves to tune various parameters, with the guardrails protecting the protocol from dramatic changes. Each controller can define maximum, minimum, and maximum periodic change thresholds, unique for every market.
I propose that an Adrastia multisig will have the ability to manage the PID configuration, the sloped interest rate computer configuration, update frequencies, and the target utilization levels. This will allow us to make quick and effective changes to ensure optimal performance. While the system is designed to require fewer changes than the current interest rate models, occasional tuning helps to ensure optimal performance. The majority of tuning work will take place following the initial deployment.
Finally, the Total Supply and Borrow Accumulator is susceptible to manipulation if left open, so the ability to update this oracle will be locked down to Adrastia and optionally the Venus team as well. If desired, we will support an effort to update this oracle from the vToken itself automatically. Other than that, the system is open to and safe for anyone to poke at any of the components for an update.
Gas costs
As one might expect, running oracles and controllers costs gas. As gas fees can be limiting, we adjust update frequencies to achieve a harmonious balance between performance and cost.
Here is a breakdown of the gas costs and update frequencies, along with the estimated costs for each market.
Contract | Gas | Frequency (L2s and alt-L1s) | Estimated cost (L2s and alt-L1s) | Frequency (Ethereum) | Estimated cost (Ethereum with 3 gwei gas & $2500 ETH) |
---|---|---|---|---|---|
Interest rate controller | 271k | Around every 6 hours | $10/month | Around every 24 hours | $60/month |
PID controller | 241k | Once every 6 hours | $10/month | Once every 24 hours | $55/month |
Utilization and Error Oracle | 101k | Once every 2 hours | $10/month | Once every 24 hours | $20/month |
Utilization and Error Accumulator | 58k | Around every 2 hours | $5/month | Around every 24 hours | $15/month |
Total Supply and Borrow Accumulator | 160k | Around every 2 hours | $10/month | Around every 24 hours | $35/month |
Total | N/A | N/A | $45/month | N/A | $185/month |
Services rendered
Adrastia will provide the following products and services:
- Smart contracts
- Automation
- Real-time automation performance dashboards and analytics
- Incidence response
- Continual performance monitoring
- Parameter tuning and recommendations
- Quarterly performance reporting
- Integration support
- Market data dashboards
- System dashboards
Performance evaluation
Evaluation of the effectiveness of our PID-Hybrid interest rate system will be done using the following metric:
- The absolute average error: measures how close the markets are to optimal utilization on average.
With:
err_i: The time-weighted average error for an observation window for [sub] period at index i, sourced from the Utilization and Error Oracle. The error is calculated as optimal_i - utilization_i.
n: The total number of observation windows for the time frame.
a. Current overall average error without Adrastia: Around 34%
b. Goal with Adrastia: < 10%
Evaluation of the performance of our automation systems will be done using the following measures:
- Time to mine: measures the effectiveness of our gas pricing algorithms.
- Total wait time: measures the total delay to update a component, from the time of observation to the time the transaction was mined.
Compensation
Maintaining optimal market utilization levels is critical for Venus to be competitive. Competitive rates allow Venus to grow its AUM and revenue. With that being said, I believe that the following compensation is fair.
Base: $125,000/6 months for up to 30 markets
Additional markets: $3,000/6 months for every additional market
Performance bonus: An additional $1,000/quarter for every market with over $100k total borrow, and the performance metric measuring less than 2% – a challenging goal to achieve.
Initial term: 6 months
Payment structure:
- Base and additional markets: 25% upfront with the remaining as a stream, USDT
- Performance bonus: payable quarterly, XVS – priced at a 90-day SMA
Gas costs are additional and payable quarterly in the chain’s native currency. Gas pre-payment required for Ethereum only.
Venus currently has 42 markets for which the Adrastia Prudentia PID-Hybrid Interest Rate Controller is suitable. Of those, 27 markets have total borrows exceeding $ 100k, and 30 of them have a total supply exceeding $ 100k. Over the 42 markets, total supply is about $1.2B, total borrow is about $613M, and revenue is approximately $3.2M/year.
If the introduction of this system can raise the current average utilization of 51% to 85%, total borrow will equal about $1.02B. With current interest rates, revenue at such borrow levels would equal approximately $5.3M/year – a difference of $2.1M. Granted, interest rates will have to fall for borrowing activity and market utilizations to increase, decreasing revenue. However, at the same time, higher utilization enables higher deposit rates, which in turn help grow the markets and increase revenue.
Markets
Stablecoin and stakeable assets are prime candidates for PID-controlled interest rates. Those markets are:
- BSC Core Pool: USD1, DAI, USDT, USDC, FDUSD, lisUSD, ETH, BNB, SOL, USDe, MATIC, DOT, TRX, FIL, LINK, ADA, TUSD
- Ethereum Core Pool: USDT, USDC, WETH, TUSD, DAI, TUSD, crvUSD
- Arbitrum Core Pool: USDC, USDT, WETH
- ZKSync Core Pool: USDC.e, WETH, USDT, USDC
- Unichain Core Pool: USDC, WETH
- OpBNB: USDT, ETH, FDUSD, WBNB
- Base Core Pool: WETH, USDC
- Optimism Core Pool: USDT, USDC, WETH
Integration
Integration is reasonably straightforward. The AdrastiaInterestRateModel contract should be deployed and used for every vToken using the Adrastia Prudentia PID-Hybrid Interest Rate Controller. The front-end will need some adjustments to display anticipated rate changes and more information about the interest rate model. We suggest providing a link to our system dashboards that display more information.
Rollout and expectations
A gradual rollout, starting with smaller deployments, is wise to carefully observe how markets react, to ensure configurations are optimal, and to identify any kinks. With current utilization levels being significantly different from optimal (85%), it may take several weeks to achieve stable optimal utilization. In that time, fluctuations are expected to occur. Initially, borrow (and supply) rates will decrease until either borrowing activity increases or supply is withdrawn. Once stability is achieved, Venus will be primed for growth.
The Venus team and community can help achieve (and expedite) stability and growth by spreading awareness of the changing rates.
I propose rolling out the system on Arbitrum first and waiting 2 to 4 weeks before deployment on other chains. Should all go well, we can rollout subsequent deployments with a quicker cadence.
A series of slow increases of the target utilization level of every market is also recommended to minimize the shock to the markets. Adjustments of up to 5% will be made to achieve the final optimal target utilization levels.
Final remarks
Ensuring continuously high market utilization is critical for the success of Venus. High utilization closes the interest rate spread and generates more income for lenders. More income for lenders attracts more deposits, allowing for more to be borrowed and growing the markets and the protocol’s revenue.
Venus has suffered from ill-configured interest rate models for far too long. Looking at USDT on BSC, it has been over 150 days since utilization was consistently within 10% of the optimal level that I suggested. It’s time for a change.
The Venus community has demonstrated exceptional loyalty by continuing to pay exceptionally high rates to borrow stablecoins. I ask for the community’s support to help Adrastia help and serve you. Please reply with any questions, concerns, or comments you may have. Thank you for your time and consideration.
Links
Audit reports: GitHub - adrastia-oracle/adrastia-audit-reports: Audit reports for Adrastia.
Performance reports: GitHub - adrastia-oracle/adrastia-performance-reports: Performance reports for Adrastia.
Documentation: https://docs.adrastia.io/
PID Controller documentation: PID Controller | Prudentia | Adrastia Docs
Website: https://adrastia.io
Twitter: https://x.com/AdrastiaOracle