[Discussion] Proposal to change the borrowing interest rate calculation

Summary: Proposal to change the function used in calculating interest rates for borrowing.

Abstract: This proposal suggests changing the current function used to calculate borrowing interest rates from Borrowing Interest = m * utilization + b to a new function that provides more control over higher ranges and allows for better targeting of optimal rates.

Overview: The proposed new function for calculating borrowing interest is as follows: Borrowing Interest = y = A/C*log2(1 + (utilization*(2^C))/B) from 0 to B and Borrowing Interest = A-1 + 2 ^ ((utilization - B)*D) from B to 100. This new function would be computationally efficient since it uses base 2 and would provide more control over higher ranges with a maximum value controlled by changing the D variable. Additionally, it would allow for better targeting of optimal rates with the B variable and provide choices for steepening with the C variable.

Docs with Calculations

Given that, I would recommend B (target utilization rate) = 85 or 90 for all coins,
A (target interest) =

  • 5 for BTCB
  • 8 for Stable Coins
  • 10-15 for ETH
  • 20 for other coins
    I would also like to recommend C (steepening of the log function) =
  • 4 for Big vaults
  • 6 to less stable vaults
    Lastly, I would like to recommend D (reduction factor for the exponential function) =
  • 0.5 for bigger vaults
  • 0.7 to 0.8 to smaller/volatile vaults

Motivation: The motivation behind this proposal is to improve the control and targeting of interest rates for borrowing within Alpaca Finance. By implementing this new function, we can better manage higher ranges and target optimal rates more effectively.

Based on this proposal to change the function used in calculating interest rates for borrowing within Alpaca Finance and your recommendations for the values of A, B, C and D for different coins and vaults, using this new function would enable you to track and analyze historical data on borrowing interest rates. This data could provide valuable insights into the most commonly used interest rates and help you optimize the value of A over time.

By monitoring trends and patterns in borrowing interest rates, you can make informed decisions about adjusting the value of A to better meet the needs of borrowers and lenders within Alpaca Finance. This could help improve the control and targeting of interest rates for borrowing and ensure that they remain competitive and effective over time.

In addition to optimizing the value of A to improve the control and targeting of interest rates for borrowing within Alpaca Finance, it is also important to avoid underutilizing lending buckets. Underutilization can occur when there is an excess of funds available for lending but not enough demand from borrowers. (Like BTCB)

One way to address this issue is to monitor utilization rates and adjust interest rates accordingly. If utilization rates are consistently low, it may be necessary to lower interest rates in order to attract more borrowers and increase utilization.

References: Two examples using this new function are provided below:

1 Like

Thank you for the suggestion.

We had a discussion about this internally in the team and we believe the current triple-slope set up where the 2nd interest rate regime is flat is already optimal.

While your suggested model might make a slight improvement on the current model, it adds a lot of complexity to it as well.

While I appreciate your team’s consideration of my proposal, I respectfully disagree with your decision to stick with the current triple-slope setup. While the proposed new function may be more complex, it offers significant benefits in terms of greater control and targeting of interest rates, as well as the ability to optimize the value of A over time based on historical data.

As I mentioned earlier, there are currently pools within Alpaca Finance that are being under or over-utilized. I believe that implementing a flexible percentage of interest return, as proposed in my recommendation, would provide an effective way to balance interest returns for those pools and ensure that all funds are being utilized effectively. This would help optimize the lending platform’s efficiency and profitability, while also providing more competitive and effective interest rates for borrowers.

I would encourage your team to reconsider implementing the new function, as the added complexity is worth the potential benefits it offers. Of course, I understand that ultimately the decision is up to your team and what works best for your lending platform. However, I am happy to discuss further and provide any additional insights or support as needed.

To ensure a smooth transition and minimize any potential risks, it would be wise to implement the proposed changes gradually and in a controlled manner. One way to do this could be to initially test the new flexible percentage of interest return in a specific pool and monitor the results closely.

If the results are positive and the new approach proves to be effective in optimizing interest returns and balancing utilization rates, it can then be gradually expanded to other pools within the platform.

By taking a careful and measured approach, we can ensure that the changes are implemented successfully and provide the intended benefits, while also minimizing any potential negative impacts or disruptions to the platform.

Starting with the BTCB pool, which is currently underutilized, would be a good way to test the effectiveness of the proposed changes in a controlled manner. BTCB is a popular coin with stable liquidity, making it an ideal starting point. Based on the results of our tests and analysis, we can then gradually expand the new function to other pools.

While the current triple slope setup may be optimal in terms of simplicity, it does have limitations. The fixed and arbitrary values for the interest rates do not allow for historical returns analysis. Moreover, the flat interest rate in the second regime does not encourage borrowers to borrow more in the lower bands, leading to underutilization of the lending buckets. On the other hand, the proposed new function provides more control over higher ranges, better targeting of optimal rates, and flexible percentage interest return, which could lead to more effective utilization of the lending buckets. By implementing this new function gradually, we can gather data and insights to continuously optimize the interest rate calculation process and ensure that it remains competitive and effective over time.

I propose that we can automate the adjustment of the value of A based on historical data and utilization rates. By analyzing historical data on borrowing interest rates, we can set up an automated system that adjusts the interest rate based on the utilization rate of the pool.

For example, we can set up the system to decrease the interest rate by 0.05% every 100 blocks (~5 minutes) if the utilization is lower than 60%, and increase it by 0.25% in case it is over 75/80/85%. This way, we can ensure that the interest rates are optimized to meet the needs of borrowers and lenders within Alpaca Finance.

Additionally, while it is possible to automate the value of A with the current triple-slope system, it would be harder to make it more granular. This is because there is no difference in borrowing interest rates between 75% and 80% utilization, and it would always incentivize borrowers to stay close to the 60% utilization rate. With the proposed new function, however, we can create a more flexible and precise system that allows for more targeted adjustments to interest rates based on utilization rates.

0 slope is not arbitrary; it is mathematically correct; if you don’t have 0 slope you have every new user that borrows impact other users, which is something you want to avoid. This leads to cannibalization effects such as many LYF/AV users wanting to get profit slowly get to a point where they earn 0 profit.

The other two slopes are a bit arbitrary but are there for a reason. The high slopes at the start and end of the curve are more arbitrary but are there to make sure protocol works smoothly and changing from them is also non ideal as we want those boundaries there sharp as they kind of indicate different regimes: low demand, main region, critical demand.

Thank you for explaining the rationale behind the current triple slope setup. I understand now that the 0 slope is mathematically correct and prevents cannibalization effects between users.

However, I still believe that implementing an automation for the interest rate could help balance interest returns for underutilized pools and ensure that all funds are being utilized effectively. While the current setup is designed to work smoothly, I believe that there is always room for improvement and innovation.

Perhaps we could start with a specific pool and gradually implement the automation, as we discussed earlier. This could allow us to monitor the results and make any necessary adjustments before expanding it to other pools.