Auction Parameter Derivations

Hey all,

Here are some thoughts on how we came up with the launch parameters for auctions. Keep in mind, all of these parameters can and/or will be heavily optimized after more data is available. For now, these are based on logical and sensible starting defaults.

To start, please read the following material that describes how the auctions work. https://github.com/makerdao/developerguides/blob/master/keepers/auctions/auctions-101.md

This post will be more about how the parameters are arrived at rather than how the auctions work, although I’m happy to answer questions in this thread, it can be quite confusing (We can also discuss on the governance call or in the rocket chat). Also, I’ll do a writeup of system parameters in a separate post.

Collateral Auction

After a Vault is bitten, its collateral is sent to an auction. Keepers bid Dai for the collateral.

Auction lot size

One Vault can be broken down into multiple auctions for ease of absorption by the keepers. If, for example, a million dollar Vault was liquidated, and there was no division of the lot size, then the set of keepers who could purchase the collateral would be extremely small. They would then be able to capture a significantly higher discount.

We propose 50 ETH (and 10,000 BAT) per auction, or roughly $10,000 at current prices. Liquidations larger than the lot size size would be subdivided into 50 ETH chunks. The main consideration when determining lot size is UX, liquidity and accessibility.

Due to the particularities of the auction structure, when a Vault’s collateral is subdivided, only one of those auctions can begin per block. (A special script could trigger more, but it would then be limited by the block size). Therefore, a Vault with 1,000 ETH being liquidated would require 20 blocks to merely initialize all of the auctions. An 80,000 ETH Vault, such as the one we saw in December 2018, would take nearly two weeks to complete with a lump of 50. If the lot is too high, however, keepers might potentially be priced out of participation, which then increases the risk of system-wide undercollateralization in the Maker Protocol. Our tentative heuristic is to target a $10,000 lot size.

Minimum bid increment

The minimum bid increment is the minimum a keeper must outbid the current best bid, denominated in percentage terms. For example, on centralized exchanges we typically see penny increments for cryptoassets such as ether. The bid increment can be considered as a tradeoff between time and price priority.

If the bid increment is extremely small, keepers are incentivized to wait until the very last second before posting their orders since they can be outbid by the smallest increment possible. This could lead to unnecessarily long auctions given the bid duration mechanics described in the next section.

An extremely large bid increment would prioritize early bidding by effectively making it unprofitable for another keeper to participate. If the beg was 10%, for example, then an opportunistic keeper could bid 8% under the spot price and guarantee a win. The next bidder would be required to bid more than what the asset is worth.

On the upside, a large bid increment ensures that the auctions can end promptly. In some respects, it can almost be seen as a subsidy to the keeper. SCD serves as a good precedent, as a minimum bid increment of 3% would most closely mimic the fixed discount in SCD. For this reason we have selected 3% for ETH and BAT.

Minimum bid duration

The minimum bid duration (alternatively known as the time to live) for a bid is the length of time that elapses after which the auction will immediately end, provided that no subsequent bids have been placed. Consequently, auctions will likely end soon after they have begun, assuming that the initial bids aren’t placed too low.

Combined with the minimum bid increment, a competitive first bid strongly implies that the auction will end promptly. For example, if an asset worth $100 is being auctioned, and the first bid comes in at 90, then there can rationally only be 3 more bids (assuming a bid increment of 3%) before the auction will end. This caps the length of the auction at 3-4x the minimum bid duration.

Incentivizing auctions to end early is desirable for keepers. A high time to live increases the market risk for the keeper, as they would be required to keep a live bid while the secondary markets may move against them. A low time to live, however, runs the risk of infrastructure issues. Backed up nodes, network lag, block stuffing attacks, or slow block times may all hinder the auction process. Ultimately, some data analysis needs to be conducted here to find a good middleground. For now, we propose a 10 minute bid duration, which we believe safely insulates the auctions from network issues, yet doesn’t impose too much of a burden on keepers.

Ten minutes may seem low for the average human keeper, but in the early days, the expectation is that auctions will be entirely bot-driven, if for no reason other than the fact that there is no UI.

Max auction duration

Because most auctions are likely to end through the time to live mechanism, it is unlikely that the max auction duration is ever reached. However, in the unlikely event of any network errors, we suggest the parameter be set to 2-3 days to be conservative from a safety perspective.

Liquidation penalty

The liquidation penalty applied to Vaults after they have been bitten. In the SCD implementation this parameter was set to 13%. Due to an auction grinding attack, this parameter should be set be set to at least ~9%; although some further study here is still required. With a conservative buffer added in, at this time we believe keeping the status quo at 13% is appropriate We leave this parameter open to further optimization and research.

Debt Auction

The minimum bid increment, bid duration, and max auction duration all have the same parameters as the collateral auctions for similar intuition. The lot size would normally also have been kept the same, except for a subtle nuance due to launch.

Auction lot size

The debt auction lot size is the bad debt threshold at which MKR inflation begins. For example, if the lot size is set to 10,000, then that amount of bad debt will trigger a debt auction. Some amount of MKR will be minted in order to raise 10,000 Dai, which are then burned. Normally, we would prefer to initialize this parameter at 10,000, just like the collateral auction. However, the introduction of the DSR and the migration contract poses a minor issue.

At launch Sai holders can migrate, obtain Dai, and start using the DSR. The DSR is an accounting cost absorbed by MKR holders that is typically offset by stability fees. However, if Vaults have not yet migrated, then the Maker Protocol is not earning stability fees anywhere (the migration contract has a stability fee set to 0). As a result, a deficit might start to build up, eventually triggering a MKR inflation event. This scenario may result in a loss of confidence by users and should be avoided. Even though this is primarily a perception issue, the situation can be easily mitigated through the system parameters.

In order to prevent DSR costs from triggering an immediate MKR inflation event, the threshold parameter should be set reasonably higher than warranted in normal conditions. Under typical conditions, 10,000 is our recommendation. For the migration we recommend 50,000. At this threshold, 30 million Dai earning a 2% DSR for one month with no offsetting stability fees would still not trigger a debt auction. This parameter can be lowered post-migration.

Maximum Initial Bid and Reinitialization Discount

If a debt auction was structured similarly to the collateral auctions, a certain tail risk or edge case would have presented itself. Namely, if an auction is overlooked by the general market, then an opportunistic keeper could request an infinite amount of MKR to be printed for any arbitrarily small amount of bad debt. To mitigate the risk, the debt auction requires governance to set an initial maximum bid, or the maximum amount of MKR that can be minted for any particular auction.

While this mitigates the risk of a large amount of MKR being needlessly printed, it also requires the bid amount to be set accordingly. The dollar value of the MKR should be set well above the lot size to account for MKR price volatility. We suggest 250 MKR for roughly a 50,000 lot size.

There is also the possibility that even at this bid size there are no bids (perhaps due to an extreme MKR selloff). In this case, the auction is reinitialized but the maximum bid is increased by an amount equal to the discount. In this case, we have chosen 20%.

Surplus Auction

Collected stability fees get sent to a surplus auction where they are auctioned off for MKR, which is subsequently burned. The lot size, bid increment and max auction duration share the same logic as the other two auctions. The only change we make is for the bid duration.

Minimum Bid Duration

There is reduced market risk for keepers during surplus auctions with respect to locked up bids. While debt auctions and collateral auctions necessarily happen during crashes in collateral prices, making it less desirable for keepers to obtain market risk, surplus auctions can happen quite uniformly over time. Additionally, the market risk for keepers is an increase in the MKR price, not a decrease. Therefore, we have lengthened the time for the bid duration to 30 minutes.

7 Likes

When you get a chance, I’d love to poke around more regarding the Max auction duration

If there were a bunch of auctions that are sitting there untouchable due to some network issues, that means at the end of the auction the amount needed to be raised becomes bad debt in the system right?

So does the decision to have it at 3 days have something to do with the cost of a network-congesting/block-stuffing attack?

Looking forward to this. I think it would be good to start tying the actual SC variable names to what they do in practice. Getting a description of what each parameter means for the risk of the system sounds very beneficial.

The USD value of the lot size will vary depending on the price of assets. Is this something we need to keep up to date going forward? What sort of variable range are we prepared to tolerate before updating the value? Can this be denominated in a USD price using the oracles?

Obviously it depends on circumstances. But what sort of timescale do we think we are looking at here. A week after migration? A month? It feels like once we have even a few CDPs mgirating that the issue will pretty much disappear.

Is this 20% a global parameter or bid specific? If there is an extreme MKR sell-off then this could delay auctions for some time until the maximum initial bid matched collateral value. Feels fairly edge case, but is that something that’s been considered?

The USD value of the lot size will vary depending on the price of assets. Is this something we need to keep up to date going forward? What sort of variable range are we prepared to tolerate before updating the value? Can this be denominated in a USD price using the oracles?

Unfortunately yes, unless we start moving to a different heuristic, which is definitely possible. I think we can support a very wide band though. You really just want to be within an order of magnitude or such. (no difference between $10-$25k IMO, but you dont want it $100k)

Obviously it depends on circumstances. But what sort of timescale do we think we are looking at here. A week after migration? A month? It feels like once we have even a few CDPs mgirating that the issue will pretty much disappear.

Yeah. Very unlikely debt auctions happen anytime soon anyways, so this is just a matter of housekeeping. Lets do it when there’s a lull in governance IMO.

Is this 20% a global parameter or bid specific? If there is an extreme MKR sell-off then this could delay auctions for some time until the maximum initial bid matched collateral value. Feels fairly edge case, but is that something that’s been considered?

It’s a parameter strictly for debt auctions, not surplus or collateral. If there is an extreme MKR sell-off, then this could/would delay auctions. But the number (250 MKR) is already starting at a fairly sizable discount from current spot price. I don’t think its edge case, and why such a huge discount was built in.

1 Like