Why Dutch Auction - Solving a Key Problem
As a collateralized lending platform Parallel will need to create and enforce efficient liquidation methods in order to protect lenders and protocol solvency. Of course no one wants to liquidate a borrower's NFT's, and in doing so we need to ensure we achieve maximum value for the same in order to return any excess proceeds to the borrower.
With Non-Fungible Tokens (i.e. ERC-721's) this represents a challenge given their non-fungible nature which makes price discovery difficult. We have nonetheless devised a Dutch Auction with a blend of pricing models which we believe will maximize the likelihood we achieve a high selling price for the given NFT.
User Goals/Stories:
As a liquidity providing user to the protocol (and member of the protocol) I want to earn yield on my capital with low risk. As a key part of this risk I want to eliminate the risk of losses if the borrower goes into liquidation. And indeed I should be able to more than cover the value of the loan if forced to sell an NFT as collateral.
As a borrower I want to borrow high amounts of capital at low rates in order to improve my capital efficiency against my valuable but illiquid assets such as NFT’s. I want to avoid losing my assets, but if forced into liquidation I want to maximize the value returned to me.
NB: liquidity providers and borrowers are likely the same people at different points in time. Also it is critical to note that in times of sharp market declines we must keep in mind time is short; if we wait too long to conduct an auction prices may have moved lower thereafter.
Introduction to Dutch Auctions
A Dutch Auction is distinct from a traditional auction in which bidders place ascending bids and the highest bid wins. In a Dutch auction, the seller/auctioneer instead announces the highest ask price at the start and that ask price drops until a buyer accepts the ask price which in turn becomes the market clearing price.
Notable examples of Dutch Auctions in NFT’s include the Art Blocks collection which offers Dutch auctions in which the ask price decays linearly or exponentially.
Traditional Price Declines in Dutch Auctions
At time t0 the auctioneer lists the highest ask price for the good at price p0. At each time interval that price decreases by constant step s. The minimum could be 0 in the general sense, but we would clearly never run an auction without a floor. We’ll call this pmin
With s∈(0,∞): F(t)=p0−s⋅(t−t0) The upshot: this is a model easy to understand though potentially slow in price discovery if we go at regular increments.
Exponential Price Decay in Dutch Auctions
Dutch Auction of NFT with Blended Decay
Let’s remember our goal: maximize value derived from an auction to satisfy the user’s outstanding debt to the protocol/lenders such that the borrower may likewise receive the excess capital received by the auction. Or in short: we want to maximize price received.
Let’s start with these inputs as an illustration:
Clearly the shape of this graph would change according to different values for each of these inputs.
We could steepen or flatten the exponential decay function according to different inputs, but the upshot is straightforward: we can cover more potential clearing prices and allow for greater price maximization if we kick off our Dutch auction with exponential decay
We Use Real Data to Set Auction Parameters
We always want to ground ourselves in the data. To that end we want to see the distribution of token sale prices as a function of multipliers of the floor price. Using the same NFT sales price methodology as in this paper we derive the multipliers of floor prices for the supported collections. In this case we will limit our data to the most recent 90 days of trading in order to calibrate our model for current market conditions.
Below is a box plot with the top and bottom quartiles captured by the edges of the box, the median by the line in the center of the box. The top ‘whisker’ represents the 99th percentile and the bottom ‘whisker’ the 1st percentile of all transactions.
Distribution of NFT Sales in Terms of Collection Floor Price
A brief look at the chart above emphasizes the distribution of NFT sales varies widely even among top-tier collections. Bored Ape Yacht Club NFT’s tend to trade within a fairly narrow distribution, but Otherdeeds from the Otherside NFT’s see a much wider trading range relative to the collection floor price. And indeed we will have to set custom parameters to improve our chances of efficiently finding the market-clearing price.
We Set Minimum and Maximum Prices Based on Real NFT Collection Sales
We have a strong sense for maximum and minimum prices for our auctions, but we need to establish the length and rates of price decay of our auction to maximize likelihood we find the best market-clearing price.
How long should our Dutch Auction Run?
But how many 15-minute intervals should we support? We dive back into real transaction data to set our benchmarks. Let’s look at how many transactions these top collections have seen in recent history. Once again we look at the past 90 days such that we accurately adapt to recent market conditions.
Total Sales
Hours Per Sale
First Sale
Last Sale
Total Hours
In total we see these major NFT collections sell approximately once per 1-2 hours in the past 90 days. This gives us an approximate baseline for how quickly an NFT might sell in the context of an auction. A major caveat is of course that the above includes sales across OpenSea, LooksRare, x2y2, Larva Labs (for CryptoPunks), and other marketplaces.
We will make the conservative assumption that it will take a minimum of 10 to 15 times as long for the same tokens to sell within our auction, giving us a target auction time of 10-15x the NFT collection’s “Hours per Sale”. Notably this leaves the 100,000-NFT Otherdeed collection at a very low “Hours per Sale”. And as such we’ll set a duration minimum of 8 hours for our Dutch auctions.
We will target a roughly even split for our Dutch auction between Exponential decay and Linear decay. And since this will be an on-chain auction we will calculate our 15-minute increments in terms of Ethereum blocks by the approximate average block time of 12 seconds.
NFT Collection
Hours Per Sale
Auction Length (Hours)
15min Increments (i)
Ethereum Blocks
Blended Decay Dutch Auction with Liquidation Penalty
One final piece of the puzzle remains—setting a reserve such that we help protect lenders and the protocol in the case of failed auctions. Here we introduce a borrower’s penalty on the final sale price of the auction which in turn goes to the Para Space protocol’s reserve.
With all of the necessary parameters in place we can now establish models for each of our supported auctions. And indeed we can easily use the same methodology to expand coverage to new NFT collections as conditions warrant.
Canceling NFT Liquidation if User’s Health Factor Recovers
View the full flow of the auction below as well as the FAQ’s and Appendix thereafter.
Full Dutch Auction Parameters by Supported NFT Collection
NFT Collection
m_0
m_min
m_minexp
lambda
s
15min increments (i)
Auction Length (Hours)
Ethereum Blocks
Liquidation Penalty
Frequently Asked Questions - FAQ’s
What happens when there is no Successful Buy at Minimum Price?
Any funds recovered would replenish the amount spent out of the safety reserve and thus help protect the protocol in the face of any shortfalls. Though we of course hope this will not prove necessary, Parallel the company and/or its team may use their own funds to purchase the NFT and perform the same functions as above.
Can I buy an NFT at Auction if the User Returns their Account to the Recovery Health Factor?
Appendix - Charts
Azuki
Bored Ape Yacht Club
Mutant Ape Yacht Club
CryptoPunks
Otherdeed for Otherside
Otherdeeds for Otherside have a bimodal distribution — approximately 10% of tokens sell significantly above floor price. As such this will be a wider range than with other collections
Doodles
Clone X
Moonbirds