Proposal: Increase USDT maximum interest rate

Summary

The USDT Pool is in danger of running out of liquidity in the near future due to an interest rate curve that does not reflect the unique high borrow demand, high supply risk, and low pool liquidity currently associated with the USDT pool. We should raise the maximum interest rate on the pool’s interest curve to avoid this.

USDT is a unique pool

Let’s compare the amount of supply in the USDT pool vs other pools:

USDT has a much smaller total supply.

But that’s not even the full picture of the size differences. Let’s look at the proportions of actual liquidity available in these pools yesterday:

Only 8-9 million of available liquity in USDT yesterday, vs 171 million for USDC.

USDT utilization was over 95% for parts of yesterday.

Why the difference?

USDT is the only pool that does not provide collateral when funds are placed into it. This disadvantages lending USDT vs lending some other stablecoin, and has historically meant that USDT supply has been much lower than USDT and USDC. Along with a lower supply has come higher rates, as the limited supply is allocated by market pricing to those willing to pay the most for it.

It’s a reasonable decision to not have USDT provide collateral. This isolates the damage from USDT loosing its peg down from all pools to only those lending USDT being at risk. This does mean though that this risk is concentrated on the lenders, and the Compound USDT pool becomes a betting market against the future of USDT. Suppose a whale believes that USDT might loose value on Feb 1st. The Whale can deposit 10 million into the USDC pool, take out a 7.5 million dollar loan from the USDT pool, and swap it into USDC (and maybe loop this a few times if desired). If USDT goes to $0.90, the whale can use USDC to repurchase this cheap USDT and pay off the loans, making a profit. If the peg falls to near zero, then the whale could almost 2.0x their initial money, all of this profit at the expense of lenders in the USDT pool.

The risk of this happening drives up the price at which lenders are willing to lend into the pool.

Additionally, there is a lot of demand for USDT for farming purposes right now. USDT only makes up 23.60% of Curve’s 3Pool, and is the most “expensive” coin there. It’s in high demand for borrowing.

The low liquidly in the USDT pool increases the risk getting stuck in the pool when lending, raising rates more.

Finally, the low liquidly increases the size of “shocks” to the APR from liquidity moving in or out. Two million dollars moving out would not be noticeable on the DAI pool, but would make a big swing on the USDT pool.

All together, it is not surprising that USDT pool rates are the highest rates on Compound. It’s fundamentally different pool than the others.

So what?

Even though the USDT pool is very different from other pools, and consistently runs higher interest rates, the interest rate curve for USDT is the same as the other stablecoins.

Most importantly, the maximum interest rate for USDT is the same as other stablecoins. Why does this matter?

What happens when a pool reaches 100% utilization?

The key to Compound’s design is the dynamic interest rates that constantly adjust prices to match supply and demand. If this interest rate were not dynamic, but fixed to a particular rate that did not match real world supply and demand, then a pool would no longer function. If the fixed rate was too high, then no one would borrow and there would not be money to pay the lenders. If the fixed rate was lower than reality, then things are even worse.

Without dynamic pricing a pool is dead. If a pool’s utilization reaches 100%, then the interest rate would be fixed at the highest rate set for that asset - which would be lower than the real world interest rate for that asset.

As long as the the real world interest rate for the asset was higher than the Compound interest rate, the liquidity would be gone and the pool would be stuck in a situation where:

  • No new borrowers can borrow
  • No old lenders can withdraw their funds
  • No sane new lenders would want to lend at below market rates as well as be unable to withdraw their funds afterwards.

These are all very bad things.

There is a self-reinforcing cycle here in that the more that running out of liquidity looks likely to happen in the near future, the higher interest rates lenders will require, reducing the size of liquidity on the pool and increasing the likelihood of it happening.

Proposal

To ensure that prices stay dynamic, the 100% utilization interest rate for USDT needs to be higher it is currently set at.

I propose that we raise the 100% utilization USDT borrow rates to 39.9% APY. In dynamic sitatuions, this allows the price to go up further, continuing the range where supply and demand can interact with each other.

This should have the effect of reducing the risk of lending into the USDT pool, and with reduced risk, potentially increase the totally supply of the pool.

Next Steps.

I’ll leave this up over the weekend for comments, and will calculate the parameters needed and test on a fork next week.

6 Likes

It is quite clear that having a max interest rate below market would be very bad for the reasons you described.

Let’s take a step back and acknowledge what the IRMs are trying to do. We want to be generating as much interest as possible while maintaining sufficient market liquidity for normal usage. The new IRMs are kink based models, meaning the rate of change of interest rate increases after a kink. We set this kink to a utilization which allows for the ideal liquidity (currently 20% on cUSDT). The interest rate at the kink point is estimated to be a higher end normal market value for optimal efficiency. Beyond the kink, rates go up dramatically.

With the current environment in DeFi, we are seeing abnormal market activities and consistently high utilization across all the stable coin markets. I would be in favor of raising the rate at kink (across all stablecoins) due to this possibly new norm to encourage greater market liquidity.

While we have seen times with high rates on cUSDT, I don’t believe that raising the max value on the IRM will independently fix this. The high rates are usually temporarily above market, resulting for a large withdrawal or borrow. The withdrawer does not care about the manipulation of rates, and it it takes some time for the market to fix the inefficiencies. What could fix this the liquidity issue, although I would argue against it, is lowering the kink utilization dramatically so that when large moves occur, there is still plenty of liquidity. The issue with this is that it would lower the generated interest a significant amount. If you believe that it is likely for the market USDT supply rate to be over 40% then we definitely should raise the IRM max, but I find this unlikely.

2 Likes

Greetings!

I agree with you that there are more options than just raising the max rate.

However, I do strongly see from the data that cUSDT is a very different beast than the other stablecoin pools, and as a result it does need a separate interest rate curve.

cDAI and cUSDC are behaving how we hope to seem them act. In past months they’ve hung out around the kink interest rate. In the last month, with high demand, they have matched expectations well. Demand is indeed up on them, but liquidity is fine. At the moment cDAI has seen a couple days of sustained higher demand, but is steady at 85% utilization and 200 million in liquidity. Even in the last month of higher demand both cDai and cUSDC have spent at least a day down at their targeted kink utilization. Most spikes in cDAI/cUSD rates last only minutes long, as the active pool of borrowers and lenders move money to take advantage of, or to avoid the higher yield.

In contrast cUSDT reached near max utilization on January 19th stayed there for three hours before money moved to correct this. Then cUSDT ran around 90% - 95% utilization for two days at the end of last week, prompting this proposal. This morning rates on cUSDT went up 3x and stayed there for five hours with almost no changes, before correcting back down. These are just a couple examples from the last two weeks of both the high rates that cUSDT is reaching, and the delays in returning to normal. CUSDT has spent 40x more time in the last two weeks at over 90% utilization than the other two coins have averaged.

Taleb says, “never cross a river that averages 4 ft deep”. The problem isn’t so much the average case (even though that’s a 40% higher relative APY’s than the other stablecoins last month), nor is the problem the average true market rate, it’s that cUSDT is spending hours or days in regions of the utilization curve that are unsafe to hang out in. It’s routinely getting near the limits of its emergency maneuvering room in normal usage. In case of a real crunch it has hardly anything extra it can do to return to a balance.

cUSDT fundamentally is different than the other pools, and should have its own curves.

To answer your final question, the last few weeks have already shown that borrowers will spend hours at 25-29% interest as a “market rate”. Regardless of if this is the long term average market rate, it has been shown to be a defacto rate that market players will support for some length of time. It’s hard to know what the max one hour true market rate is because cUSDT can’t go high enough to test it.

It would be poor planning on my part to build a house a foot above the high tide line, because one day we might have a high tide plus a storm. Similarly although this is a high tide time, we haven’t had a storm, and yet the water is already lapping at the front steps some days.

Now it’s true that if we hit 100% utilization and the market eventually corrected itself, that the pool would return to life. But it’s likely that those lenders ,who wanted to withdraw but could not do so during that time, would be burnt and might permanently leave the pool. Others would pull their liquidity faster in the face of future crunches, increasing the likelihood of future crunches.

I think the most important parameter to adjust is the cUSDT max rate. By raising the maximum rate, we increase the incentives on both borrowers and lenders to return things to a more normal rates more quickly. This gives us more headroom for how much out of normal we can handle, and it also should make us spend less time in the danger zone.

As important as it is to be resilient to these unusual times and not break during them, it is indeed likely that in the next year we’ll be back down to normal operation and hanging out near the kink utilization and interest rates. The current kink position and rate have seemed good for “normal times”, so I’d hate to mess with them. If we wanted to adjust them, we should plan on changing them back during quieter times. While raising the kink APY could indeed make for less of an effect on rates as liquidity moves in and out, that seems like it might be actually be counter-productive if we want to incentivize the pool to act faster. The gains in spare liquity would be small if we moved the kink rate to six percent, and yet doing more would incentivize a lot of borrowers to leave the pool when the rates go below that.

I was not aware of the actual durations of high utilization. Thank you for clarifying it in your most recent post. In this case, increasing the max rate would definitely be a valid place to start. Currently cUSDC, cUSDT, and cDAI point to the same IRM so we will need to deploy a new one and point cUSDT to the new IRM. If you’d like for me to help along the way or create an autonomous proposal, message me on discord.

3 Likes

Thanks for your offer! I’ll reach out to you tomorrow!

3 Likes

I believe the correct new jumpMultiplierPerYear to use will be 1480000000000000000, changing up from 1090000000000000000. Testing on a forked mainnet, this gives a max borrow rate of 39.93% and the following chart comparing old and new values:

Source for tests here:

3 Likes

Thanks to @arr00 who will be handling the contract deploy and creating a governance proposal for this.

A few points

  • Compound has reserves for this exact reason, and USDT has a lot, meaning that at 100% UTIL, funds can still be withdrawn
  • At the moment, there are 305,381 USDT in reserves, not crazy, but not nothing
  • Check out idle finance and the old days of yUSD, they are yield aggregators for stablecoins, they optimize for highest yield

idle

Another Approach could be to “trick” these aggregators to providing much needed liquidity and manage their rates, these whales are bots.

Check out this paper on IRM’s, very important to what your saying,
VERY IMPORTANT PAPER ON IRM

If your concern is the last 5% of UTIL, check out dydx, their IRM is nonlinear at the end.


Also, if you want more liquidity, increase the COMP speeds, simple as that

@massnomis, that is indeed a very interesting paper - from back when Compound had 1/20 the funds it does now. One section says:

Investigating the largest PLF, Compound, we find that the no arbitrage condition of Uncovered Interest Parity typically does not hold, suggesting that markets associated with these protocols may be relatively inefficient and agents may not be optimally reacting to interest rate incentives.

This is very much what I’m seeing. There’s certainly seems to be an opportunity to quickly react to liquidity / interest rate changes and earn a much higher overall yield (or have an overall lower cost of borrowing)

While a non-linear function makes sense for the high side of utilization, I prefer to make gentle changes to system that are already working. :slight_smile:

@arr00 has deployed the new interest rate model contract here:

I’ve verified that the constructor parameters are correct, and that the new contract returns the expected new interest values.

@arr00 has made two changes to the existing jump rate model v2 contract, which are in this PR:

  • Added a _setOwner function
  • Renamed updateJumpRateModel to _updateJumpRateModel

I am very glad you read the paper, based on that…

Why do you think that there is a possibility and probability that those quickly react to instances of high utilization? If you are saying that this is the case, then who is doing it exactly?

If you prefer to make gentle changes, then how about changing just the borrow rate and not both?

You seem to be pointing out an issue, planning a solution, then fixing two things while only arguing for both.

How about tinkering borrow and not supply? then reserves grow at a faster pace and the issue is attacked more conservatively.

1 Like

I think that people will react quicker to changes because there will be more of an incentive to do. Those that react quickly will make more money, and that tends to eventually sort itself out.

Of course I could be wrong about the effects of this change, but in two months we’ll be able to look at the data and see. Importantly though, I don’t think this interest parameter change is likely to break anything.

I think you are asking about raising the borrowing rate while keeping the lending rate the same? I guess this could somewhat be done by raising the borrowing rate while also increasing the reserve ratio?

There are a few reasons I don’t like that that option.

  1. Reserves themselves, in the current quantity, only provide a tiny buffer to a situation where the market rate is higher than the max rate. Although it stops borrowers from borrowing, it doesn’t stop lenders from pulling their money. Right now the cash reserves on USDT are a sixth of a percent of the total amount lent into the pool.

  2. Reserves are an inefficiency. They make lenders get less money than they otherwise would, thus incetivizing some percentage of lenders to take their money elsewhere where they can get higher rates for their money. For DAI and USDC, lending is wrapped up in providing collateral for borrowing, but for USDT, it’s considerably more about reward and risk on Compound vs risk and reward elsewhere. It’s much nicer for lenders, borrowers, and COMP holders if Compound has more supply in the USDT pool, rather than having less. (Some reserves are necessary, but increasing the reserve ratio can be a good thing.)

  3. Adjusting both the borrow rates and the reserve amount is more complicated than just adjusting one parameter.

  4. Unless we write a new interest rate algorithm, adjusting the reserve ratio affects the entire curve, not part of it. Most of the curve seems to work okay. It’s just the 90-100% area that I think needs some tweaking.

I might have misunderstood your question. If I didn’t answer you, let me know.

USDT will lose value compared to what? If USDT is pegged to dollar.
You think that USDT will lose value on global level or inside our price feed?
Changing interest rates will fix issue in situation when dollar pegged stablecoin is no more pegged to dollar?
My opinion:
If USDT lose value, reason for that can only be underlying collateral problems (problem with depositing dollars for minting USDT).
I dont see that changing interest rates fix that problem

I’m not trying to fix what happens if a dollar pegged stable coin looses its peg.

However the added risk of a possible peg loss makes lending USDT less attractive (you could loose the value of what you have lent out) and the same risk makes borrowing USDT more attractive (you might get to pay back your debt with something cheaper). These two result in a decrease in supply and an increase in demand, which pushes the interest rate upwards to find a balance.

I want to be sure USDT interest rates have enough room up there.

(USDT price is hardcoded to $1 in the Compound price feed. It won’t change without a governance vote. I’m not trying to fix anything with the oracles.)

2 Likes

If the utilization is 100% I see no reason with the pressure on interest rates, simply pause option for borrowing Tether.
If pressure is put on users who already have borrowed Tether they will replace the borrowing position with another stablecoin. With this move, it will only create additional costs for users, and we know what the gas fee is.
A similar situation was with DAI, now it is with USDT and with this move it will be transferred to USDC.

Are there other options for this problem?

I am not all about the Tether FUD, treat the intrest rate the same as the others, i also think collateral should be allowed for tether

1 Like

This proposal doesn’t force the interest rate to a particular amount - in fact it does the opposite. The market sets the interest rates, and this proposal expand the range that the market can freely set the rate in.

1 Like

Well if you phrase it like that …
You have more support. Market deregulation per say.

cUSDT has been having a wild ride. Here’s a utilization chart of the last 24 hours.

image