LINK-A Liquidations 2.0 Parameters

As mentioned on Governance and Risk calls we believe LINK-A vault type is a good candidate for a test implementation of Liquidations 2.0. The vault has a safer liquidation ratio and debt exposure is high enough to observe some potential liquidations in real time and in near future.

We don’t expect the set of Liq 2.0 parameters will hugely differ among vault types. Most likely, higher collateralized vaults will have a bit flatter curve or a higher starting price. Parameter that will most likely differ by a larger degree between different vault types is ilk.hole which is the aggregate amount of pending debt liquidated per vault type plus the liquidation penalties.

Next section explains parameters that need to be set by Maker governance. We then try to explain the thought process behind choosing value for each parameter based on some of our own simulations and those made by Gauntlet. Note that two different methodologies were used for simulating different combinations of parameters: Gauntlet used GBM model whereas we focused more on stress testing different price curves on Black Thursday (BT) and on 22nd February 2021 price drops.

Set of Parameters

Contract Parameter Description
abacus.LinearDecrease tau Linear Curve Auction Duration
abacus.StairstepExponentialDecrease cut Price Change Multiplier
abacus.StairstepExponentialDecrease step Price Change Interval
clipper buf Starting Price Multiplier
clipper chip Proportional Kick Incentive
clipper cusp Max Auction Drawdown
clipper tail Max Auction Duration
clipper tip Flat Kick Incentive
dog hole Aggregate Pending Auctions
dog ilk.hole Vault Type Pending Auctions
dog ilk.chop Penalty fee

Price Curve

Price curve shape is defined by two modules abacus.LinearDecrease and abacus.StairstepExponentialDecrease. There is currently a possibility for either linear or exponential price decrease function, although other implementations are also possible going forward.

We believe exponential price decrease function is preferred for various reasons. First, since the starting price is aimed to be above last OSM price, we may want that auction price decrease is more aggressive at the beginning of auction duration. On the other hand we also don’t want price to be falling too aggressively later in auction duration, since the auction price may be already much lower and could present risk for undercollateralization of vaults. At that point it is better to wait for markets to calm and not track market price lower with the same intensity as initially.

Exponential price curve is defined by cut and step. The combination of these values defines the slope of the curve but also time needed before the next price drop occurs and the magnitude of the price drop.

Steps length

There are pros and cons of choosing to either implement longer steps or having them very short which creates a continuous curve seen above. Long steps could have negative effects on protocol and vault users since large discrete drops increase price discount available once the correct or market price is reached. On the other hand continuous price curve can have negative effects on UX if users are potentially bidding in these auctions through UIs such as 1inch.

We therefore believe steps of about 90 seconds are preferred: it wouldn’t hugely affect the price leaking from protocol or vault users but still enable bidding through UIs. It is questionable though if retail users are going to be able to bid in these auctions at all since bots might be handling it.

Curvature

The slope of the exponential curves defines the time needed for auction to settle or when auction price reaches the market price. Based on a) the proposed step of 90 seconds and b) target duration of auction of around 40 minutes and c) hypothetical starting price of 1.30 above OSM defined as buf which we’ll address later, we need to choose the cut parameter to determine the curvature. Note that higher the cut, lower the drops in 90 seconds (per step) since the percentage price drop from the top is measured as 1-cut.

Slower falling auction price will take longer to clear and faster falling auction price will clear auctions sooner. There is again an upside and downside to choosing more or less aggressive price drop.

Price falling too fast

Fast falling auction price could lead to similar consequences as on BT where ttl of 10 minutes was too low. For this reason and in our opinion, auctions should on average last between 30 and 40 minutes (potentially faster for lower LR vaults such as ETH-B which we would want to settle sooner before market price collapses additionally which could lead to undercollateralization event for Maker). This however doesn’t mean some auctions couldn’t settle earlier or later. Another negative impact of a fast falling price could have is high auction throughput that is limited by ilk.hole and hole.

Price falling too slow

Price falling too slow could have negative consequences on market price slippage. In other words, realized auction price could be much lower because market price is falling faster than the price curve we set. This is why lower collateralized vaults would preferably have price auction with steeper slope or lower buf.

Report from Gauntlet shows nicely how a flatter curve (longer Auction half life at fixed step) leads to lower amount of bids in auctions.

Their proposed combination of parameters that defines the auction price curve is step of 30 seconds and cut of 0.997 which represents about a 5.6% drop every 10 minutes. Since our proposed step is 90 seconds and a similar slope is preferred from our side, a cut of 0.99 is suggested.

Starting price

Starting auction price is defined by a) last OSM price when auction is kicked and b) buf parameter. OSM lags on average one hour, but could lag more if we had no update due to OSM reporting price sensitivity. This is why the buf parameter is used which represents a buffer applied to the last OSM price in case the market price rebounds between the time OSM took the last market price and until the auction is kicked.

Higher buf makes it more probable that the auction starting price doesn’t start below the market price. On the other hand higher buf makes auction duration longer which could lead to lower settlement prices. Based on the most volatile day in recent history, Black Thursday, market price rebounds during the day were up to 10% for ETH and 40% for LINK (measured as largest 1h and 2h rolling price increases on 12&13th of March 2021).

This is one of the reasons buf of at least 120% is preferred, especially for volatile crypto assets. Note again that whatever buf is considered this has an effect on cut and step since we still primarily aim to target specific auction duration.

Gauntlet’s Report suggests 110% buf and uses a similar slope of the curve than the one suggested by us. Expected auction duration in their case is therefore 16 minutes whereas ours aimed is closer to 40 minutes for reasons mentioned above (network congestion). Since our proposed expected auction duration is longer, higher buf is preferred, which also assures that settlement price is closer to market price in case of price rebounds between last OSM price and auction start.

Gauntlet’s chart below shows that higher buf values does have an effect on the number of auctions settled and 120% would be maximum suggest buf from their side based on the slope they chose.


Since their report is made on ETH and this proposal is made for LINK, we believe that higher LR vaults and more volatile assets could have higher starting price and longer settlement time and therefore suggest to use a buf of 1.30 for LINK-A. This makes auction duration longer (on average auctions would settle in 40 minutes - time until OSM + buf reaches OSM price according to price curve) which is one of our recommendations that holds especially for volatile assets where we might want to settle them later than vaults with low LR such as ETH-B which represent a larger risk to Maker. Longer auction duration also enables us to increase the amount of pending auctions per vault type by setting ilk.hole higher.

Another reason why a higher starting price is preferred is because of auction starting price dependency on OSM and potential issues that are being mitigated through implementation of permissionless circuit breaker.

Price Curve Proposed Parameters

buf = 1.30

cut = 0.99

step = 90 seconds

Plotted price function:

Features of proposed price curve:

  • Starting price is 30% above last OSM price
  • 1% drop from starting auction price every 90 seconds
  • Auction is settled on average in about 40 minutes if market price doesn’t change from last OSM price when auction was kicked
  • Auction price would achieve 50% of last OSM price in 2h23min after being kicked

Simulations

We simulated the above price curve on the actual LINKUSD price drop using 1 minute OHLC data from Coinbase on Black Thursday and on 22nd February 2021. We are mostly interested in 3 metrics when simulating random 10 minute interval liquidations during the day of price crash:

  • How much time does it take for auctions to settle
  • What is the market price slippage from the time auction was kicked (measures price curve efficiency)
  • What is the market price slippage from the last OSM (measures price curve efficiency and its impact on actual losses or vault collateralization at auction settlement time)

Also note that we made two types of simulations on each of the historical crash events: one that uses our proposed buf of 1.30 (blue bars) and one with buf of 1.10 (red bars). The idea was to test for two types of price curve, one that is more aggressive and makes auction settle sooner (buf of 1.10) and one that takes longer (buf of 1.30) and see how that affects settlement times and market price slippage.

Simulations on Black Thursday using buf of 1.30 :

  • On average auctions would settle in 42 minutes
  • 10% percentile (fastest) settlement time is 22 minutes
  • 90% percentile (slowest) settlement time is 60 minutes
  • Average market price slippage from the time auction was kicked measures +0.34%
  • 10% percentile market price slippage from the time auction was kicked measures -7.94%
  • Average market price slippage from the last OSM is -0.73%
  • 10% percentile market price slippage from last OSM is -13.03%

Simulations on 22nd February 2021 buf of 1.30:

  • On average auctions would settle in 41 minutes
  • 10% percentile settlement time is 31 minutes
  • 90% percentile settlement time is 49 minutes
  • Average market price slippage from the time auction was kicked measures +0.19%
  • 10% percentile market price slippage from the time auction was kicked measures -3.33%
  • Average market price slippage from the last OSM is -0.61%
  • 10% percentile market price slippage from last OSM is -5.75%

How to interpret these results:

First, note that calculations above do not consider slippage from the keeper’s perspective but only the effect of auction duration time on realized market price. So for instance in 10% worst events during BT, an auction would start above the market price and would need 60 minutes to settle because the market price is falling faster relative to the price curve. Because of the long duration, the price curve would “catch” the market price 7.94% lower than what the market price was when the auction started. Because of the OSM delay, the realized market price would be 13.03% below the market price when the vault collateralization ratio dropped below liquidation ratio. This means a 175% vault would end up being liquidated at 152% CR in 10% worst case events before the potential slippage from keepers is applied.

Additional slippage from keepers might be derived a) due to keepers profit taking and b) actual slippage when keepers sell collateral for DAI on the market.

High versus low buf

As seen on charts above, higher buf does settle auctions on average about 25 minutes later (February 22nd 2021). Market price slippage is therefore 1.25% worse in 10% worst events compared to buf of 1.10. However the settlement time when using buf of 1.10 is in some instances too fast. In 10% of worst events on BT settlement time is in the first minute of auction duration, which means that due to volatility auction price could in some cases start below market price and would settle instantly. Similarly on 22nd February, settlement time in 10% worst events is only 7 minutes. This is one of the main reasons we recommend using a higher buf of 1.30, since we don’t want auctions to have too fast settlement time (due to network congestion issues, but also implications this has on too high auctions throughput that could not be controlled).

Resetting an Auction

Auction can be reset after the price curve defined by parameters above reaches one of the limits defined by cusp and tail parameters. The idea behind this is to have “another run” of auctions in case something unexpected happens during the auction (i.e. network congestion, keepers infrastructure issues, etc.) and we wouldn’t want to risk settling auctions at very low values below market price.

There are two parameters that assure auction can be reset by keepers, but only one will in practice lead to a reset. This is because the auction can be reset if either the price decrease is larger than x% (defined by cusp) or when the auction duration is longer than y seconds (defined by tail). Unless both are set equally related to the price curve, one that is triggered first will decide whether the auction can be reset.

Ideally we want to reset an auction when a specified percentage price drop occurs. If cusp is chosen as 0.4 and buf is 1.30, auction is reset when price reaches 0.52 of OSM price (drop tolerance of 48%). This would be also the value that we suggest implementing for LINK-A.

If we use all the parameters defined so far that determine the slope and apply ‘cusp` value of 0.4 to it, we also get an estimation of when the auction will be able to reset, which is in 2h18min.

As said, the tail parameter does in this case not matter if it’s higher than 2h18min. For that reason we set it to 2h20min to somehow equal 0.4 cusp, but we also believe that such auction duration before being reset is reasonable.

Limiting Auction Throughput

Auction throughput is limited by parameters hole and ilk.hole. hole limits the value of aggregate pending debt liquidated and is similar to box parameter in Liq 1.2 implementation, whereas ilk.hole limits this same value of pending debt liquidated per vault type. The idea behind limiting the amount of pending debt liquidated is to set auctions throughput to levels that does not lead to large market slippage when keepers are recycling bought collateral back to DAI.

Collateral Auction Throughput

Since most auction participants might use flash loans to bid on auctions and sell the collateral back to DAI, on-chain liquidity is what interests us. By using 1inch API we plotted the on-chain slippage curve for collaterals in Maker’s portfolio. These values represent percent slippage when selling a dollar amount of particular collateral to DAI on-chain (gas costs excluded).

For instance, selling $6m of LINK for DAI leads to 5.2% slippage and selling $50m LINK leads to 31% slippage. Rule of thumb would be to limit maximum slippage between 20-30% on a daily basis. Although the number might seem high, note that the majority of LINK liquidity is still on centralized exchanges and that is why a higher on-chain slippage threshold could be used. This means we would tolerate between $30m - $50m LINK auctioned on a daily basis.

As previously shown the auction duration based on chosen price curve would on average take around 40 minutes. This means that about $1.4m LINK ($50m divided by 24h times ⅔) could be sold per one auction cycle if auctions were to take a whole day. Since we might want to liquidate more initially, a more reasonable auction throughput for LINK would be $6m, which also represents a smaller 5.2% on-chain slippage as mentioned earlier.

Live data: https://maker.blockanalitica.com/slippage/

Aggregate Auction Throughput

We believe the hole parameter should be related to the DAI liquidity metric. Namely, aggregate value of individual ilk.hole values could lead to DAI liquidity crunch events that we want to avoid.

The most liquid DAI pair that carries least slippage is DAIUSDC, obviously because of PSM. Yet we may not want to use this metric when choosing threshold here as the limit would simply be too high. We have therefore chosen to measure slippage when buying DAI via 1inch by excluding the routing of the trade via PSM. Tolerated slippage in our opinion needs to be small or around 0.2%, since as mentioned, hole can be emptied every auction cycle which can on average take 40 minutes. Slippage of 0.2% would equal around 100m DAI, which is also the value we propose for hole.

Incentivizing Auction Initialization and Reset

Auction kick incentivization is something that was discussed numerous times under Liq 1.2 implementation. Under Liq 2.0, parameters such as chip and tip ensure that auction initialization or reset is being compensated to cover keepers gas costs.

Not properly setting these two parameters could though lead to unintended consequences that were addressed in MIP45. After discussing the situation with the Smart Contracts team, it is recommended that tip parameter is set to a positive value at a later stage. chip parameter is on the other hand less controversial and we believe we could set it to some low value such as 0.1%. This means that the keeper kicking a 100.000 DAI debt vault should be compensated by receiving 100 DAI. In the meanwhile we are also in talks with one of the keepers to have them compensated from the DAO for kicking and resetting auctions.

Penalty Fee

MakerDAO’s penalty fee is on the higher end of liquidation fees in DeFi and because of the safer and more robust liquidation system, the community could perhaps think about reducing it. However a large reduction is not recommended due to auction grinding attacks. We don’t suggest changes to penalty fee at this stage and therefore ilk.chop proposed parameter is set to 13%.

Conclusion

The main challenge of properly setting Liquidations 2.0 parameters in our opinion is to determine the perfect auction price curve that minimizes the settled price slippage and has a duration that shouldn’t be too short which could potentially lead to below market price bids due to network congestion or other reasons.

This is why most of our focus in this report and going forward is to set the expected auction duration of each vault type. We believe that higher LR vaults such as LINK-A can and should have longer auction duration (we suggested 40 minutes), whereas vaults with lower LR would have auction duration shorter since the market price slippage for lower LR vaults can lead to loss events for Maker faster. We are thinking about 30 minutes expected auction duration for low collateralized vaults.

Proposed Liq 2.0 Parameters for LINK-A

LINK-A Auction Parameters:

cut = 0.99

step = 90 seconds

buf = 1.30

cusp = 0.4

tail = 140 minutes

chip = 0.1%

tip = 0

ilk.hole = 6m DAI

ilk.chop = 13%

Global Auction Parameter:

hole = 100m DAI

14 Likes

I can see why you’ve been so busy now. Nice work.

I haven’t taken the time to educate myself about the new liquidation system or all its parameters but was wondering if you could inform me on the following:

Are these parameters set based on the liquidation ratio or is the liquidation ratio subject to a new value with the introduction of the new auction system? Meaning, have you done the research on whether, from a risk perspective, it is safe to lower the liquidation ratio?

1 Like

Good question. I think we still need to see what the efficiency of new liquidation system will be in practice and then make conclusions whether it is safe to lower LR for any particular vault type. Also, you have at least three parameters that can benefit from Liq 2.0 and these are SF, DC and LR.

The analysis doesn’t exactly address potentially lowering LR, but it does reveal that 10% largest market price slippages on BT using this curve would settle 175% LR vaults at around 150% CR and not much lower. Which means lower LR could be justified, but only if we observe minimum additional slippage or profit spread coming from keepers.

4 Likes

We are proposing another Liquidations 2.0 related value for parameter called tolerance or threshold that is a governance parameter of newly added “permissionless circuit breaker” which mitigates potential Oracle attacks.

Proposed value for tolerance is 0.5 which means that circuit breaker can be triggered permissionless if next OSM price is less than current OSM * 0.5. Historically we haven’t seen more than 27% 1 hour drops for LINK and we believe 0.5 value is still low enough so that liquidations aren’t disabled too fast and high enough so that Maker protocol is safeguarded. For instance, at a 49% price drop (or attack) a 175% LR vault would have minimum starting auction price at 116% of collateralization ratio (175% * 0.51 * 1.3 (buf).

2 Likes

So how does one override this circuit breaker? If I am a Link Vault holder that should be liquidated because the price has dropped >50% in an hour, I will of course trigger the circuit breaker if I’m able to. This would just further extend the losses of the DAO if the price continued to drop. Can it only be called for a certain period of time? I guess I’m just not familiar with the mechanics of the circuit breaker.

3 Likes

Only governance can disable it once triggered, which means some amount of time would likely be needed to unfreeze oracles.

1 Like

Can it be retriggered by someone else immediately after governance disables it or does it stay disabled for some period of time?

So is it wrong to say that we’re basically setting a price level where we’re just turning liquidations off? I think the number needs to be greater than 49% in that case.

2 Likes

Well I almost think a 50% 1h price drop reported by oracles means there is a higher probability that oracle attack or malfunction happened rather than witnessing such market drop in real time in one hour. This is more or less based on observing hourly past returns for asset such as LINK but of course even darker swans than BT crash are possible.

I am open to decreasing this parameter (increasing tolerance) if many have similar concerns, but probably not heavily from here as otherwise this tool looses its primary objective - to defend against oracle attacks or malfunction. For reference, S&P 500 needs to fall 20% from previous daily close to halt trading for the whole day.

2 Likes

I would prefer if this function had a time limit, e.g. 1hr. I’d draw a comparison to what happened with XRP after the SEC announcement. Imagine if borrowers could freeze their own liquidations during that event. I agree it’s a balance, but it’s the indefinite nature (unless I’m misunderstanding) that concerns me.

Hm I’m split on this idea. On the one hand it limits governance actions and to your point could prevent a day long melt down from being a total disaster. But to @Primoz ’s point drawdowns of this magnitude should be taken with some scrutiny and having an auto-restart risks the timing being too low and governance not being able to rally a vote in the situation that there is something wrong with the price feed or the underlying asset.

I think it’s worth pointing out here that the tolerance parameter is set for each vault type, so for riskier collaterals the underlying vault types can have a higher tolerance (meaning larger acceptable drop before the breaker is hit) than those for a collateral where severe price drops are more suspicious.

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.