I am generally in favor of this approach.
I have been working on a method to achieve the same outcome as is proposed, but with an execution method that is a lot more hands-off.
Everything starts the same way; the process needs to be kicked-off by choosing a price point, doubling it, and letting the exp decay do its work to touch down on the market approx. 10 days later:
There are some new variables here that warrant further explanation. The max ETH offer
and min ETH offer
define boundaries of the POL auction. The difference between them is more or less akin to @alphavalion’s proposed 16 and/or 32 ETH increments, but gives the system some elasticity as auction ETH reserve
becomes depleted.
The setup is simple:
- If the
auction ETH reserve
<min ETH offer
, then: - top-up the
auction ETH reserve
from theprimary ETH reserve
, such that: auction ETH reserve
=max ETH offer
Thereafter, everything is 100% automated. The POL contract continues as normal - starting with an asking price way above the market, and slowly coming to meet it. If the price of ETH and BNT stay relatively consistent, then it is safe to assume the auction will start getting some attention around day 10:
This is just an example scenario for illustrative purposes. The thing to note is that eth amount
and bnt amount
columns are recording swaps made, and the bnt per eth rate
is recording a literal market price. As the remaining eth offer
is diminished below the min ETH offer
, we actually have a true market price. the significance of this will become apparent shortly.
Whereas the process to start required a manual price input, now we can simply begin the auction anew, using the last known auction price as a reference.
After that the process is self-sustaining. The setup is simple auction ETH reserve
topped-up from the primary ETH reserve
, until it is back to max ETH offer
.
The initial asking price is then thrust back up to 2x the last known market price achieved on the contract. Meaning, we expect another 10 day delay as the half life of the exp decay function approaches the last known market price point.
This predictably sporadic break in the auction cycle is largely in-line with what @alphavalion was proposing in his original proposal. However, rather than have a fixed time interval, the interval here is largely dependent on the market conditions. If BNT continues to gain on ETH, then the intervals will be slightly shorter, if ETH gains on BNT they will be slightly longer; however, they are also self-correcting. Over even a moderate number of cycles, the average time interval ought to near 10 days, unless there is a sustained rally or capitulation in one of these assets versus the other, for the entirety of the auction.
As before, when the remaining ETH offer
is less than the min ETH offer
, the last price is multiplied and used as the next reference point.
Then, the auction ETH reserve1 is replenished back to the
max ETH offerfrom the
primary ETH reserve`.
And by now you get the idea. This process can continue uninterrupted, and without manual intervention, until the primary ETH reserve
is depleted. After that, there are essentially no more updates, and the remaining ETH offer
will have to run itself to zero.
This achieves a relatively robust TWAP, without having to face down the challenges of, for example, oracle price feeds - and especially the risks of trying to get a decentralized entity to execute a swap as a taker on Ethereum, Twitch plays DeFi style.
More importantly, the approximate time this thing will run for is not too difficult to anticipate. If you read over the process above, you should be able to convince yourself that the procedure will shed whatever the difference is between the max ETH offer
and the min ETH offer
, about once every 10 days (on average). So, dialing in a reasonable time frame is straight forward:
For what it is worth, I would think 3 or 6 months to be acceptable. A year is a little on the long side, but also fine. Any longer than that I think is a waste of time.
I have seen a few comments about the “impact” being dependent on the time - just know that absolutely no one is able to make such a claim with any level of confidence. As with any purchase - the objective should be to get the best price possible. “All at once” is a dumb idea, but so is “over the time it would take to get a degree in finance”. There is a sweet spot somewhere between these two extremes, but it is unknowable where it is. But, I also think the returns diminish very quickly as we approach that efficiency asymptote.
I like the idea of 3 or 6 months - with no strong preference for one or the other.