[Proposal] Adjusting liquidation parameter

Terraform labs

TLDR

  1. Increase liquidation_threshold from 500 UST to 2000UST
  2. Adjust max_premium_rate to 15%

From May 19th to 26th, the cryptocurrency market faced a sharp fall in prices. As Anchor Protocol uses bLuna for collateral, Anchor consequently faced a significant number of liquidations during this period. With multiple liquidators capturing liquidations, the Terra network faced tons of liquidate_collateral transactions from those liquidators, which rendered it difficult for other transactions to be processed. Many borrowers attempting to repay during the price fall failed, as liquidate_collateral transactions took up most of the network bandwidth.

To mitigate this problem, we suggest increasing liquidation_threshold from 500 UST to 2000 UST. The liquidation_threshold parameter is the parameter that determines partial/ total liquidation in cases in which the collateral’s value is greater than the liquidation_threshold .

To determine the exact number for the liquidation_threshold , we ran a simulation. This simulation took place on May 18th at 1:54 AM (KST): we used the borrower_map snapshot, which used the collateral, the loan_amount of all borrowers at the time of input, and the LUNA/USDT pair price data on Binance (May 19th -26th), to trigger a liquidation.

The variable of this simulation is the liquidation_threshold , and we assume that there were no instances of borrow/repay/lock_collateral/unlock_collateral. The output is the number of liquidation transactions processing bad loans during this period.

The simulation result is as follows:

  • Threshold 500 UST - 18237 Liquidation Tx
  • Threshold 750 UST - 17057 Liquidation Tx
  • Threshold 1000 UST - 16176 Liquidation Tx
  • Threshold 1250 UST - 15498 Liquidation Tx
  • Threshold 1500 UST - 14956 Liquidation Tx
  • Threshold 1750 UST - 14517 Liquidation Tx
  • Threshold 2000 UST - 14140 Liquidation Tx
  • Threshold 2250 UST - 13758 Liquidation Tx
  • Threshold 2500 UST - 13457 Liquidation Tx
  • Threshold 2750 UST - 13217 Liquidation Tx
  • Threshold 3000 UST - 12981 Liquidation Tx

As you can see, increasing the liquidation_threshold processes much fewer liquidation transactions. By increasing the threshold from 500 UST to 2000 UST, the amount of liquidation transactions are roughly decreased by a factor of 22% — improving network congestion and allowing repayment transactions to be accepted more easily.

1. bLuna on-chain oracle data

  • Data length : from Anchor genesis to May 31st
  • 0.001% : -2.850058170203874%

2. Binance LUNA/USDT pair 1min candle

  • Data length : from pair listing to May 31st
  • 0.999% : 14.354331459067948%
  • Assuming that this price diff is negative price diff

Furthermore, by making liquidations less lucrative — so that even if liquidations do occur, there is a decreased incentive to spam out liquidation Txs, minimizing negative effect on the system — we suggest adjusting the max_premium_rate on liquidation contract from 30% to 15%. Take Luna price volatility into consideration, we think that a 15% max_premium_rate is reasonable under current circumstances.

The on-chain proposal will follow.

Next Steps
We are designing a new liquidation contract with a dynamic liquidation premium based on liquidation demand. Additionally, we are working on a solution that will consolidate multiple liquidation triggers into one liquidation transaction to decrease network congestion.

4 Likes

Wow. Please correct me if I’m wrong…
So collateral value under liquidation_threshold do NOT face risk of liquidation?
Seems unfair to bigger contributors of Anchor TVL who provide greater bLUNA, in fact the opposite.
Is there no other parameter we could consider?

Agree with lowering the max_premium_rate, but I think it should be reverted once “dynamic liquidation premium” is rolled out. Is this the liquidation bidding system that d0h0k1 recently mentioned?

It does face risk of liquidation. Difference is, we do partial liquidation on positions that collateral value is higher than liquidation_threshold, we liquidate all loan when collateral value is lower than liquidation_threshold.

And yes. its liquidation based on bidding system.

2 Likes

If I am understanding correctly, won’t raising the threshold will make accounts 500-2000 more attractive to liquidators?

One would be able to take out all of the account’s collateral, vs a less-than-50% amount.

2 Likes

“we suggest adjusting the max_premium_rate on liquidation contract from 30% to 15%”

This is probably too drastic of a change and jeopardizes Anchor’s ability to remain solvent. During the crashening, there were loans that were left unliquidated even with a 30% max_premium_rate. If the max_premium_rate were cut in half, even more loans will go unliquidated during a future crash of equal or greater magnitude. That creates the potential for the scenario that must be avoided at all cost: the value loaned out is greater than the value of the collateral. If this were to happen, Anchor is toast. It’s game over.

“Take Luna price volatility into consideration, we think that a 15% max_premium_rate is reasonable under current circumstances.”

LUNA has been more volatile than the broader crypto market during a period of extreme volatility. This is a reason to consider INCREASING the max_premium_rate, not decrease it. If LUNA is crashing, liquidators will potentially avoid performing liquidations until prices start to even out a bit. That again puts Anchor Protocol at risk of experiencing the death scenario where the value of the borrow > value of the collateral.

Preventing network congestion and ensuring repayment transactions are allowed are very important. Minimizing the potential for cascading liquidations is also good. But most importantly, do not make changes that put the entire system at risk of totally breaking down. Reducing the max_premium_rate is not the way to solve this problem.

I doubt this would be the case because loans are over-collateralized by a minimum 2X. Price would have to drop another 50% even after hitting liquidation threshold.

Liquidation opportunities can disappear by the time prices stabilize (price rebound, loan repay, etc), which liquidators would not wait around for.

I agree about the liquidation premium being lowered to 15%, but as for the concept of having people being fully liquidated 2k under i strongly disagree, theres no need for it when Bids/Ques are in place? Due to the fact that 6k worth of collateral can easy turn to ~2k, dont see the point in it if its only about having a system overload? Punishing 22% of people shouldnt be the solution.

1 Like

I really don’t like the idea of fully liquidating 2k worth of collateral, instead of doing a partial liquidation.

How relevant is the transaction issue once the liquidation queue is implemented?

2 Likes

I doubt this would be the case because loans are over-collateralized by a minimum 2X. Price would have to drop another 50% even after hitting liquidation threshold.

There’s no limit to how silly crypto volatility can get. 50% moves are possible. 75% moves are possible. While we LUNA bulls have a hard time envisioning a scenario like this, it is the wrong move to rule out such moves. As crushing as May was for us, we need to understand that even crazier upswings and downswings are both possible in the future. I would bet on it.

Anchor Protocol has to be able to handle unprecedented price volatility. It needs to remain solvent even in the most bloody possible crash. Lowering the max_premium_rate to 15% will open up the possibility to dire consequences in the event of a super crash. This is not the correct way to handle this situation.

Liquidation opportunities can disappear by the time prices stabilize (price rebound, loan repay, etc), which liquidators would not wait around for.

During the crashening, liquidators did stay on the sideline for hours while the crash got uglier and uglier. This situation can be observed empirically from the events of 2 weeks ago. With a 15% max_premium_rate, liquidators will stop liquidating even earlier. Anchor Protocol puts itself at risk of complete collapse with this move.

There’s several ways to approach this problem. Lowering the max_premium_rate is not a good way to do this.

Assuming liquidators wait up to 24 hours en masse (unlikely), a crash in excess of -70% over a 24hr window never occurred in the history of BTC/ETH/LUNA/BNB/MKR. (statistically a 10-sigma event)

How would you like to wager? :grin:

hmm… who is right?

I agree the proposal is not ideal, only temporary measures. I’d love to see other solutions.

The reason why the loans were left unliquidated is not because of 30% max_premium_rate, its because there were so many tx try to liquidate big loans so that other liquidation tx cannot be in the block during that times.

Preventing network congestion and ensuring repayment itself is more important, if people were able to repay loans, the cascading liquidations are unlikely to happen.

1 Like

You should remember that the liquidation process handled every oracle feeding time - which is around 7~15 sec based on data. 50% moves are definitely possible in crypto, but what we should consider is not a price movement itself, but the possibility of price movement can be done in certain time range.

1 Like

Assuming liquidators wait up to 24 hours en masse (unlikely), a crash in excess of -70% over a 24hr window never occurred in the history of BTC/ETH/LUNA/BNB/MKR. (statistically a 10-sigma event)

We probably should not consider a 24 hour window. We can experience downturns that last much longer. LUNA is much more thinly traded than the other cryptos you mentioned above. Volatility of LUNA can and likely will be significantly higher than that of BTC/ETH/the bigger names. Most importantly, historical volatility is probably not a good indicator of future volatility. With governments taking a closer look at cryptos around the world, we should expect to see both good news and bad news at a government level coming significantly more often. We should expect to see unprecedented volatility.

Also, it’s not true that we haven’t seen crashes in excess of 70% within a 24 hour period in the crypto world. We saw ETH drop from over $300 to 10 cents on GDAX in 2017 before it became Coinbase Pro. We’ve had numerous blips like this over the course of crypto history, particularly in the altcoin world.

We easily could see unprecedented upside upon some concrete news around “wen busan”, but we could also see unprecedented downside if Do decided to quit Terra and start his own fried chicken store with hopes of launching a fried chicken coin. The TLDR: “Black swan” events seem to happen a lot in the crypto world. Not preparing for them could be a fatal mistake.

How would you like to wager? :grin:

Someone should built a sports book with props available on Terra.

ColonelSanders: During the crashening, liquidators did stay on the sideline for hours

EJ_Lee: the Terra network faced tons of liquidate_collateral transactions from those liquidators, which rendered it difficult for other transactions to be processed

Interestingly, we both are correct. The crashening lasted for more than just a couple hours. There was a time when people had trouble processing transactions on Terra during the event. There also was a period where tens of millions of dollars of loans were left unliquidated for hours during the crashening while the network was running just fine. If this change is implemented to lower the max_premium_rate from 30% to 15%, ANC goes from being regular crypto risky to beyond stupid insane risky. It will just be one black swan event (which seems to have more often than annually) from triggering the nightmare scenario of the value of borrows is greater than the value of bLUNA collateral.

To those that have been liquidated, liquidators seem to be the devil, but they serve a critical role in the Anchor ecosystem. The viability of Anchor depends upon the existence of liquidators. Taking this action now to cut the max_premium_rate by half would hinder the entrance of new liquidators. We need a healthy liquidator economy full of competition among liquidators to keep Anchor solvent. There is not enough competition in the liquidation market right now.

1 Like

The reason why the loans were left unliquidated is not because of 30% max_premium_rate, its because there were so many tx try to liquidate big loans so that other liquidation tx cannot be in the block during that times.

EJ, there was a period when network congestion was preventing liquidations from occurring. When normal network functionality resumed, there were several hours where a significant number of loans available to be liquidated sat idle. Take a look at your liquidation data. You will see what I am talking about.

This is the canary in the coal mine that shows there is something severely wrong with the Anchor liquidation system as is today. Even Harpoon Protocol users were able to liquidate some loans via clicking through its UI. There is no way that should ever occur with a healthy functioning liquidation process. There was a period where bLUNA->LUNA rates were so high that liquidators who liquidated bLUNA at a 30% discount would not be able to exit with a guaranteed profit. With a change to only a 15% max_premium_rate, that just slows down new liquidators entering the market to the point where we may never have a healthy liquidator market. We need more liquidators in the Anchor economy, not fewer, which is what will likely happen upon a slashing of the max_premium_rate.

Here is what I would suggest. We should increase the max_premium_rate to 40% or perhaps even a little more, but implement the ability to auction bLUNA off. Let the market set the discount! In a weak liquidation market, let the liquidators get a 40% discount. As the liquidation market matures, we will easily see this number drop off significantly and probably even below 15%. We don’t need governance to constantly update this max_premium_rate. We need a market that sets the discount rate dynamically via auctions.

4 Likes

so basically by setting the liquidation threshold to 2000 UST there will be less network congestion as these loans with a collateral value below the threshold will be fully liquidated once the trigger price is reached, instead of being partially liquidated again and again to an LTV of 40% as long as the price continues to fall, right?

Regardless of the threshold value I’d like to see this mentioned as a disclaimer on the borrow page as we all know now how emotional the topic of liquidations can be, so there’s no complaining afterwards. easy to implement, saves a lot of potential frustration.

Assuming that this change and ultimately the new liquidation contract will prevent us from reaching this level of liquidations again, even if user numbers increase, it is a vote for a lower chance of network congestion at a higher risk of being fully liquidated.

Not saying it’s not worth it and I haven’t made up my mind myself, but I think as mentioned before communication is critical, so everyone knows the risks and we have no fallout when there’s another “mayday”.

1 Like

I truely belive we should play the bids/Ques out first, this proposal will effect everyday people using Harpoon protocol, not being able to partial liquidated (a bigger group) also if my memory serves me correct… hasnt Do. Mentioned a fix for the network congestion so it doesnt happen again, liquidations are best to be done by small/medium holders imo, as they are the ones to most likely keep it on chain stake/borrow off it, but still 100% sure the 15% premium needs to he passed, just strongly disagree about this proposal.

Of course an auction (or what we call a bid-queue) method for liquidations would be a more permanent solution. However, this would obviously require some development time, during which the protocol could be left vulnerable to similar events.

Think of this parameter update as a precautionary measure for the protocol until the new liquidation logic kicks in.

2 Likes

My understanding is this proposal is fixated on lowering network congestion as the only goal, while Colonel is bringing up a major major constraint that needs to be honored.

Colonel is specifically aiming at keeping p(borrow_value > collateral_value) near zero, and I agree that breaking this condition is the Anchor doomsday.

I think what can alleviate some concerns is an estimated ETA on the bid-queue delivery, if possible.

I imagine community members (myself included) would be willing to pitch-in with development efforts, for what it’s worth.

1 Like

Right. For the bid-queue liquidations contract, we’re aiming for a launch in the next month or two.

In the meanwhile, we’re very interested on having community devs for Anchor development efforts. Please drop a Telegram dm to @ryanology045 if anyone’s interested in further advancing Anchor Protocol.

4 Likes

Think about what lowering the max_premium_rate does. As it approaches 0, we will see liquidation activity drop towards 0. When the bLUNA->LUNA rate gets ugly, we will see a large percentage of the liquidators drop out of the market. “Gets ugly” is relative to the max_premium_rate. Loan liquidations may fall off hard during a crash. There is no bigger threat to Anchor than loans that can be liquidated sitting idle for long periods.

There has been a lot of work in the community building on-ramps and off-ramps to deposit money into Anchor. The negative borrow interest rate should eventually drive borrow usage up. Both deposits and borrows should increase tremendously over time with the efforts of the community. The third piece of the Anchor puzzle is liquidations and that just consistently gets overlooked. Having a limited number of liquidators while the amount of borrow moons off the face of the earth (hopefully) is a recipe for a disaster. The liquidator market has to grow in lockstep with the borrowing market. The liquidation market is not ready for a 15% max_premium_rate.

I just can’t understand this statement.

Take Luna price volatility into consideration, we think that a 15% max_premium_rate is reasonable under current circumstances.

LUNA volatility has increased significantly over the last few weeks. The higher the volatility, the higher the max_premium_rate should be.

For ANC holders, please don’t vote this in. The value of ANC can go to the moon eventually. I would argue that the significant reduction in the max_premium_rate makes the value of ANC right around 0. We got to get the Quorum to be much higher than 10%. This has too big of a probability of passing right now.