So, what is liquidations 1.2? It’s a feature where we are going to limit the amount of Dai that is out for liquidation. Why is that? In recent months, we’ve seen a huge growth in MCD, maybe brought on by yield farming or just organic growth. But because of that growth, which is probably around 1.5 billion of collateral assets and around 420 million Dai, we believe that the keepers’ capital reserves are insignificant to handle large pullbacks in the price of some of those collateral assets.
This was a feature we’ve been working on in LIQ-2.0, and we thought it was complete enough, in that we could back pull it into this and limit some of what we believe is a mounting and growing risk in the entire DeFi space today.
And we also get a bonus for this, because it gives us a little bit more resilience against oracle attacks that set the prices for oracle assets down to one way or something. In that case, you can imagine an attack would come in maybe through the fees or some mechanism, the price for all of these collateral assets would get set down to near zero, which would mean that in the next oracle price update effectively we would liquidate that entire 1.5 billion of collateral assets to reclaim all that 420 million Dai. That’s really scary, and it’s a situation Governance has about one hour to act to try and mitigate that and with this feature, even if we weren’t able to act within that hour, the limit of our exposure would be to this new system variable that would prevent the amount of Dai for liquidation. So, rather than trying to reclaim 420 million Dai, we would reclaim whatever Governance sets this new parameter to.
A new governance parameter box has been added to the
cat, which has caused us to colloquially call this the litter box. This new variable has to be set by risk teams and governance. A few of the numbers I’ve heard toss around are maybe 10 to 20 million of outstanding Dai. So that’s what the box might be set at. I defer to Cyrus’s team and other people to come up with a good value. That team has to balance the risk of this new variable against it being too large. If it’s too large, we are in a similar situation to what we’re in today, and if it’s too small, liquidations don’t operate as efficiently as they could.
We also have a new
cat variable, the
litter. So the
litter fills the
box, and this exists to represent the amount of Dai that’s currently out for liquidation.
We also remove
lump, which is a
ray that’s denominated in collateral units. So this is the size of an auction lot that can go up right now, and because it’s denominated in collateral units, while we were developing this, we found that we had a 500 ETH
lump and with the rise of the ETH price recently, that meant that the calculation to build the
tab for what would go out for liquidation could have actually overflowed and caused a revert. Not overflowed in a bad way that would change system accounting, but overflowed in such a way that it would prevent us from liquidating really large vaults that were up for liquidation.
So, the problem is there’s a lot of cognitive overhead to try and track this
lump value because we have to always track the collateral price. So we’ve changed that by adding a new value per
ilk or per collateral type called
dunk, which is now a
rad and denominated in Dai units because that’s where we store Dai units as in the core accounting system. So, for anyone of our collateral types, we can now say, when a liquidation happens, the
dunk size is going to be around 40 or 50 thousand for that. This is nice because it gives us a very predictable amount that we might be asking for at any given moment. Governance can set it once and forget it unless some major macro situation changes. And we also get to add a
file is the mechanism we use to set these values. That will prevent
dunk from causing an overflow. So we still get to get the precision, but the overflow risk still exists. However, now we’ll prevent Governance from ever being able to really set it close to that overflow.
You’ll recognize this graph from Vishesh’s weekly presentation.
This is basically the amount of Dai that would be liquidated at any given ETH price, and I’m going to use this as an example to illustrate how this “litter box” is going to work.
Up here we have “time zero”, I chose six hours here because our liquidation
ttl(duration) is six hours and the ETH price right now we’ll assume is about 420 Dai per ETH.
- As time goes on, we’ll see an oracle price fall to let’s say 325. So, this area of Dai that needs to be liquidated is going to get accumulated in the litter box. It’s represented by this brown line.
- As time goes forward, we are now one hour in, the price continues to fall, and we’re at about 275, so now all of this Dai needs to be liquidated, and we’ve added that to the litter box.
- Times continues to go on, we hit the two-hour mark of this awful price crash, and all of us are freaking out. We hit the 250 mark, and this entire chunk gets liquidated and accumulates in the litter box. And you can see how the litter box is now over half full of the Dai that we have out for liquidation.
- So the next price tick happens, and now we are down to 200 ETH price now, so there’s a huge chunk of Dai that are going to try and reclaim in this area. And, we had a little bit of space left in the litter box, and so we liquidated out of that chunk, keepers liquidated the amount that they could, before the litter box was full. The rest of this Dai in this particular time slice cannot be liquidated because there’s no longer room in the litter box. So, this entire red area represents Dai that can’t be liquidated. In fact, it actually gives these vault holders a little bit of a respite so that they can attempt to protect their positions.
- But in this fictitious scenario, the price is continuing to fall, so we are now down to 175, and there’s a whole new chunk of Dai that is now out for liquidation. We’re four hours into the auctions, but none of this has been liquidated, that means none of this is throwing pressure on the Dai price to go up, rather than maybe these vault holders attempting to close their positions. And we believe it’s this scenario right here that on Black Thursday, for instance, would have had very sub-optimal pricing. We would find that it would be hard to collect at a fair market price in this level of liquidation. I mean, just the volume of Dai that we would need to collect far exceeds the amount of liquidity available to the keepers.
- So also in our fictitious scenario, we get down to 150. We’re now at the fifth hour of liquidations, and our
ttl for the first batch of auctions is six hours. And what’s nice is that this is a very common behavior that we see whenever we get these rapid price crashes.
In the next time quantum, the price springs back a little bit and not only does it spring back a little bit but we are at the six-hour mark, and we’ve now dealt a bunch of this first round of auctions which has freed us up a little bit of space in the litter box. What can happen now is keepers can buy the next chunk of vaults, that need to be liquidated and they continue to add it to the litter box.
I hope this gives a general idea of how the litter box fills, of what it looks like, and maybe some of you are already thinking what are the risks here, what are we looking at.
Vaults may be withheld from liquidation while prices continue to drop:
- I think it is the contention of most of the people in this space that this scenario is still far better than one-way bids like we saw on Black Thursday. That the price that we collect from this collateral liquidations would be far better than the price that we would have seen without this feature.
Some vaults could avoid liquidation (…):
- That’s maybe arguable that it’s also possibly a feature because the box should be set at what we believe what governance believes how much liquidity is available in that keeper ecosystem.
If the box is set too low (…):
- This would be extra bad if there was that available liquidity on the market, and we couldn’t just take advantage of it because we’d set the box far too low.
If the box is too high (…):
- It’s probably still strictly better than what we have today if it sets too high because you get that oracle defense mechanism as well. But it’s basically the same problem which is that we could put so much Dai into liquidation that it would radically affect the peg and far exceed the amount of liquidity that keepers currently have.
Litter may accumulate in the box (…):
- This is just an artifact of how the code works, but you’d think that there was a strong enough incentive to deal auctions that you’ve won, but we’ve actually seen keepers in the past not deal their auctions. What’s nice is that the deal function is not authorized so anyone can call the deal function so this actually creates an additional incentive for keepers to call the deal function on other people’s auctions if they want to free up that litter accumulated to make more space in the box.
cat may leave behind some dusty Vaults:
- Today, that’s because of that
lump size, and we may also leave behind possibly dusty Vaults because, if you imagine a Vault to get partially liquidated and you still have a little bit leftover, something under our dust amount, that’s still subject to liquidation, but it might be below that dust amount. But that’s no different than the current risks we have today.
Dynamic Litter Box
Aaron: Is it possible to make the litter box dynamic/automatic, so governance could just set it to being 10% of total DAI supply or something? I don’t want to have to keep changing it as supply grows and contracts, no?
- Christopher Mooney: Yes. So I think right now the way to think about the litter box is that it’s for us to hope that our ecosystem can get a reasonable idea of the amount of liquidity that keepers have available to them, and this is never going to be perfect. The short answer is “yes.” If we wanted to, we could create an instant access module that you could hit, and anyone could call this function on it, and it would adjust the size of the litter box based on the size of the outstanding Dai supply. So that’s certainly a thing that we could add in the future if we thought that would be a useful metric or a useful way to set this. Right now, if keepers have enough liquidity, if they could handle one billion of liquidations, there’s no reason we shouldn’t set the litter box at one billion, right?
Supply versus Liquidity
LongForWisdom: Yes, I think what you are saying is not directly related to Dai supply, it’s more related to liquidity, right?
- Christopher Mooney: More related to what we think the market can handle. In liquidations 2.0, that will be basically Dai liquidity in all of DeFi, right? Because it’ll be a Dutch auction system, so we’ll be able to use single block composability and go out to any source of Dai in the entire ecosystem and handle liquidations. So, we can be more liberal probably with the litter box, or we can get better numbers by looking at how much liquidity is up there. But for now, the keepers actually have to have that Dai liquidity or be able to at least cycle it from somewhere else within that six hours to make these bids. So, I think we need a variable to limit this, so we don’t get sub-optimal liquidations.
Lot Size Defined in Dai
Oracle Price and How Calculations of Collateral are made
Interaction with Auctions
MCD System Stats
MCD System Stats Alt
DAI 24hr VWAP Graphs
Maker Vault Stats
The State of the Peg
Just, at a glance, we have ~430 million Dai outstanding.
330 million from ETH
2.7 million from BAT
11.1 million from USDC
77 million from WBTC
Slight change in USDC-B
Small amounts from KNC, ZRX, MANA.
- WBTC supply has grown significantly after the DC moved. The excess space in the DC for WBTC over last week has shrunk. There is a moderately high utilization and is at a high percentage of current debt ceilings utilization.
- USDC dropped 38 million this week and is sitting at 10-11 million.
- ETH has grown from 284 to 334 million. That is a significant 50 million increase. This bucket continues to grow.
- If we look at where this Dai lives, there is a small amount on Balancer.
- Compound market has about 212 million or so that’s living in DSR, a good chunk coming from the excess supply in Compound chasing yield.
- About 212 million in DSR.
- More or less, the peg has been closer to 1, in terms of ETH<>DAI trades. Hovering at 1.08~9. There has been a fair amount of slippage on Uniswap from traders in both directions. That bidirectional slippage moves the price needle a bit.
- USDC trades on Curve, dominating a lot of the USDC<>DAI volume. Those trades dropped about a cent. Sitting at an even smaller margin from peg 1.004~5.
DAI<>USD pairs have a similar pattern. In the last two or three days, the gap is tightening $1.005~7 despite a surprising amount of slippage, even on sources like Coinbase.
Interesting to note the differences in the Dai pairs profile trading. But the general consensus is that the peg has come down. A slight pricing gap exists where peg stands in which venue with an overall blended price at 1.005.
This bodes well for the peg in terms of the collateral portfolio.
Watching ETH price rise and fall recently, generally, in the past, we see decreased bullishness on ETH. Where users would buy Dai, and the price goes up. But given our current state, that it’s not a simple cycle of minting Dai and selling for ETH to resupply for leverage.
Now we have diff structures dominating how Dai is used. It’s more a cycle of minting directly and supplying directly for yield—a bit of a detachment for what’s happening with ETH and Dai price. In the last month, we’ve seen less of the old narrative where ETH bullies Dai. Normally, that’s a positive indicator for the Dai ecosystem, where there are now multiple external drivers on the Dai price. Primarily it’s still those yield farming opportunities, and there are forks popping up, but in large part the past week, the crazy yields have calmed down.
It’s all relative since there is a couple hundred million Dai in protocols like Compound. It will be interesting to watch how the gap tightens on the peg or whether another yield farming cycle pushes it back up. It’s really about people chasing the opportunities and putting their capital in Dai or in other assets. If the yield farming gets more diverse in its assets, then that potentially stresses the Dai peg less when it comes to yield farming.
Short-Term Real World Asset Liquidations
Lucas Vogelsang: I missed the prompt by Charles to talk about the liquidations proposal for short term assets. Like ours, that we’re proposing. We’ve come up with a neat solution for real-world assets with keepers that are short term assets. A quick introduction, and I’d love for Lev or anyone else to comment. For real-world assets that are short term in nature, portfolio of invoices, for example, has a 65-day life cycle. Generally, they would be paid back by day 65. That means if you’re trying to liquidate a portfolio of invoices like this, an auction or distressed loan buyer is not the best. Just waiting and sitting on loans as they mature is a better strategy. For short-lived assets, it’s harder to discover price and go through liquidations. We’re suggesting that we don’t use the Flipper but build a mechanism where the vaults can force liquidation, continually mature, and get paid Dai back as invoices are paid back. Any questions about that?
Lev: First, I wanted to say that I agree with the direction this is taking. With real-world assets, we were running up with reconciling the current paradigm with collateral liquidations with whatever works, especially for this type of asset. There are two extremes: one is the margin trading paradigm. Like trading on Bitmex, where huge leverage positions hit a liquidation engine that sells your position as a market order to the book. But then in the real world, there are long-term loans, like real estate, that are highly non-fungible. The underlying collateral is not as liquid and doesn’t have continuous price discovery. The underlying loans, on the other hand, are higher quality, and you don’t expect them to blow up. In those extremes, you have collateral managed in a different way. Coming from the world of liquid crypto assets that you want off the books when unsafe. This doesn’t work in the opposite paradigm, less liquid but high-quality assets. Where you can’t find a buyer, and there isn’t the same price discovery. In general, the lending that MakerDAO is doing is more ad-hoc. The asset might have been created to specifically take advantage of a Maker Vault. I like your proposal of handling liquidations internally to the vehicle, forcing the manager of the pool to not issue loans and wait for short term loans to hit fruition is wise. My question: Are there similar ideas for longer maturity assets? For example, winding down funds for trade assets that are two months in maturity. And, similar structures with longer maturity assets. Can we handle this concept on the granular asset internally rather than liquidate pool shares on-chain?
Lucas: We spent some thinking on short-term, and I can expand if needed. But invoices, like bridge loans or trade finance, these have a fixed maturity where the final borrower is required to repay. It’s not a line of credit that I can keep open for an unlimited amount of time. If I, as a small business, borrow money from this asset originator that then takes that loan and places it in a pool and uses it as collateral in Maker. I have a contract that says I’m borrowing $100 from this Asset Originator and have payback in 60 days. Normally the mechanism is: you’re delinquent if you don’t payback. The SPV funding this pool of loans has a regular legal recourse. Like suing for payment. With longer-term assets, say a 10-year mortgage. You can’t ask them to pay it back since the loan is due much later. You would need to find another buyer, but that wouldn’t be required to happen on-chain. If you can require the asset originator to liquidate the vault in a reasonable amount of time, we won’t have the option to wait for maturity. In that instance, we can have this process defined, like a distressed real estate fund, that has a mechanism in place. Where, if Maker needs money to be repaid and they can’t find another investor to take on the share of the pool of Drop tokens. Then the Asset Originator would have to liquidate, which means selling loans to some hedge fund or broker. You could still give these drop tokens the ability to liquidate quickly potentially at a loss with a distressed loan company trying to provide liquidity for a premium. Now it’s not waiting for maturity but that the Asset Originator would have to have an off-chain process in place to liquidate its portfolio outside of it. As this liquidation occurs, the fiat that is being raised is converted to Dai and repaid to investors of the pool, including the maker vault.
Longer-Term Underlying Assets
Lev: Am I saying this correctly? For longer maturity underlying assets, we could use this as a first line of defense and then have on-chain liquidation as a back-stop? Potentially if these are multi-year mortgages, you could force the Asset Originator to liquidate the underlying portfolio.
Lucas: I think that’s what we want to get to, there we start running into what is an auction of securities on-chain. Which is legally possible; we have done some research, and Centrifuge is not the only member looking into that, but there is still some determination about the safest way to do that legally. Now you’re auctioning this security on-chain, which needs compliance with security regulations. You may need a broker-dealer ensuring keepers can purchase it.
Akiva Dubrofsky: If the vote for advocacy goes through, we’re trying to set up a call for sell-side advocacy for real-world assets and bring securities lawyers into the call to add questions.
Stability Fee on Real-World Assets
- I think that is a good place to stop. Thanks, everyone, and Lucas for describing this and see you all next week. Everyone enjoy your week!
Common Abbreviated Terms
MCD: The Multi-Collateral Dai system
CR: Collateralization Ratio
DC: Debt Ceiling
ES: Emergency Shutdown
EV: Executive Vote
GF: Governance Facilitator
GP: Governance Poll
SF: Stability Fee
DSR: Dai Savings Rate
MIP: Maker Improvement Proposal
OSM: Oracle Security Module
David Utrobin produced this summary.
Artem Gordon produced this summary.
Gala Guillen produced this summary.
Juan Guillen produced this summary.
Everyone who spoke and presented on the call, listed in the headers.