The Reverse Liquidity Bootstrapping Pool
A novel buyback mechanism
What is an LBP?
LBP stands for Liquidity Bootstrapping Pool. It was developed by Balancer to help solve DEX token launch problems such as bots & frontrunning, centralisation of tokens and low seed liquidity to name a few.
To understand what an LBP really is, we need to get a better understanding of Balancer pools and how they differ from standard Uni V2 pools:
“Most automated market makers work with one party providing token pairs like ETH<>USDC into a pool and the other party accessing that pool to trade ETH for USDC. Balancer’s flexibility comes into play by offering a set of options to customise how these pools are set up.” Taken from this great article.
Essentially balancer allows for pools with up to 8 assets unlike the 2 that Uniswap pools offer.
Furthermore, Balancer allows for different weightings on these assets. If you’re not all too familiar with Balancer, the weight factor may sound strange to you. Simply put;
The weights represent the percentage of value that the pool should be holding in each token at any time. That percentage of value the pool holds in each token is expected to be always very close to the pool weight.
In Uni V2 pools, the weighting is set at a fixed, unalterable 50/50 split between the two assets. Meaning that the pool assumes that value is equally split between each asset.
This means that there are 3 factors to keep in mind:
Token type quantity: this refers to the number of unique tokens types in the pool, not the actual number of individual tokens in the pool
In a USDC/ETH pool there are two token types, one being USDC, the other being ETH
Amount: this refers to the amount of each token in the pool and is normally represented as a percentage
A USDC/ETH pool may be comprised of 40% USDC and 60% ETH
Weight: this refers to the value split assumption of the pool, confusingly it is also represented as a percentage
A USDC/ETH pool may have a 60/40 weighting, meaning 60% value is in ETH and 40% is in USDC. Note that this doesn’t mean that the pool is composed of 60% ETH and 40% USDC, remember, weight is simply referring to the value assumption split between the assets in the pool.
This all makes more sense if we take a quick look at the (simple) maths
We’ll use a running example
Let's take a classic Uniswap pool composed of 100 USDC and 100 ETH. Using Uniswap’s constant product formula:
If we want to calculate the spot price (SP) of ETH in the pool we use:
As mentioned above, this pool has a 50/50 weight split. Meaning that it assumes that 50% of the value is in USDC and 50% in ETH. But what happens when we allow for pools with weight assumptions that are not 50/50? Aka a Balancer pool.
The formula for spot price changes slightly (Balancer offers pools up to 8 assets but to keep it simple we’ll look at a pool with just two assets).
Let’s assume that our USDC/ETH pool is weighted in an 80/20 split respectively. The pool is assuming that 100 ETH has the same value as 25 USDC:
This makes sense when looking back at the Uni pool since when w and w’ are equal (as is the case in Uni v2 pools) we end up with the simple spot price formula for Uni v2 pools:
An LBP incorporates one more component into the mix (oh god no): time.
For all of the above examples we have been assuming that the asset weights have been constant, i.e once they are set, they don’t change. But what if we allow weights to be changed over time? Say starting at an 80/20 split and slowly changing to a 20/80 split. This is where the LBP comes in. Essentially an LBP allows for a pool in which the weights can be programmed to automatically change over time.
Let’s use a hypothetical TDAO token launch:
First, note that if the USDC/TDAO pool were to be weighted 50/50 (as is a Uni v2) then the spot price of TDAO would be:
But since the pool is weighted 20/80, spot price changes:
This means that by using a 20/80 starting weight, less USDC is needed to bootstrap for the same amount of TDAO, it also means that in the beginning, TDAO will have a high price.
Second, as the weights change (w increases from 20 to 80 & w’ decreases from 80 to 20) TDAO’s price in USDC will decrease, thus it experiences sell pressure. What this means is that there is no gain in being the first to buy and that ultimately the market determines what a fair price looks like for the token.
Allow for downward price discovery. What this means in practice is that the value of a token is fairly determined by the market since price starts very high and slowly decreases over time.
Allow for low liquidity requirements for launching a token. Liquidity is the name of the game and can many a time make or break a token since low liquidity traditionally meant high slippage. Since LBPs allow for varying pool weight assumptions, projects with not much liquidity can safely bootstrap their token without the risk of high slippage.
Prevents bots and frontrunning since being early to buy isn’t strictly better (as it is in normal token launches).
All of the above result in better token distribution. Generally speaking buy pressure is spread over a longer time period which makes pump and dump scenarios much less likely.
What does an LBP look like?
The above graph makes it easy to understand the change in spot price between the weight changes of standard Uni v2 pools and LBPs. Note that this is a hypothetical example where there are no buy or sell orders on either token. The red indicates the spot price of a token when using a normal Uni v2 50/50 weighting, since there’s no weight change the line is straight and horizontal. The blue line shows the spot price for a token when using an LBP, as weights change, price slowly decreases.
The above is an example of an LBP. As you can see, price started at ~$10 and as time passed the pool weights changed creating sell pressure on the token until the market determined that the current price was fair and the token found a bid, this buy pressure is what causes the peaks in the price curve (and is the reason why the curve is not smooth). As the LBP continued the market seemed to value the token at above the local LBP floor price and subsequently the buy pressure was greater than the change in weight which caused the price to slowly increase even though the LBPs weight change is designed to decrease price over time.
This shows that LBPs provide no benefit for fast bots and buying first.
Reverse LBPs (rLBP)
We’ve seen how LBPs are great for getting tokens onto the market in a fair way, but what if they could be used to buy back a token? The reverse LBP (just going to call it rLBP) does exactly this.
Let’s say Tokenomics DAO uses an LBP to launch i.e get tokens onto the market. What we are essentially doing is providing our token (the fictional TDAO) in exchange for another token (say USDC), meaning that people place USDC into the LBP and receive TDAO in exchange and thus Tokenomics DAO slowly raises funds in USDC. In the case of the rLBP though, the token is already on the market,Tokenomics DAO would provide USDC in exchange for any TDAO placed into the rLBP and thus it buys back its own token.
It’s important to note that each market is segregated and that prices tend towards equilibrium globally due to the work of arbitrageurs. As the price changes on the rLBP due to the change in weights over time, arbitrageurs buy on one market and sell on the other.
So what does a rLBP look like?
Price starts at around current market price and instead of decreasing over time, it slowly increases. This causes a price disparity between the rLBP and external market meaning that there is an incentive to sell the project token into the rLBP. Essentially creating arbitrage opportunities since price of token on rLBP > market price, thus users buy token on external market and sell it back to the rLBP.
It essentially functions as a form of TWAMM where tokens are slowly acquired over a set period of time with lower price impact. Why not just use a TWAMM or TWAP then? Or said differently, what is the USP of the rLBP?
They protect from front running & bots since the token price increase will take place over a longer period of time. It is harder for bots to make a substantial profit over human participants.
They’re more transparent than market buybacks since buy pressure per block is known beforehand. In a traditional buy back, the quantity to be bought back is known, but when the buy back will take place has to be be obscured so as to prevent bots and front-running.
Since they’re more transparent, rLBPs also prevents insider trading and MEV due to all participants have the same information.
Gas wise, rLBPs are cheaper to run than a TWAMM since buybacks are not made by project per say but rather by market participants willingly depositing the token into the rLBP and thus incur the gas cost themselves.
Additionally this buy pressure raises the price and allows for token holders to exit if they so wish to, the reason that this is interesting is that the rLBP is essentially finding the market determined sell pressure for the token.
TempleDAO recently used this method to acquire $TEMPLE from the market. We’re not going to comment on decisions made by the TempleDAO team, simply look at the effects of a real life scenario.
TempleDAO conducted multiple rLBPs over a period of a month. As can be seen in the below graph from one of their rLBPs, price remained fairly stable during this buyback period as people gradually exited their positions and/or arbitraged the difference.
The TempleDAO team hasn’t released any transaction volume data for their rLBPs but we can see the effect on external markets. As the price of $TEMPLE on the rLBP increased above market price, arbitrageurs did their thing, reducing circulating $TEMPLE supply and increasing price.
Below we can see that the average overall acquisition price of ~$0.91 per $TEMPLE
Let’s compare an rLBP to a standard periodic buyback. In order to do this, we will use mock data and have to make a few assumptions:
No front running for periodic buyback.
Buy back only occurs in one pool and as price increases in said pool arbitrageurs step in to rebalance price, we assume that since buyback is of small amount, price will not be measurably affected by external market supply change.
Let’s start with the rLBP. It is set up as follows:
Start weights: 80/20
End weights: 20/80
Initial USDC liquidity in pool: 1,000,000
Initial TKN liquidity in pool: 2,500,000
Below we can see the spot price per hour for the mock rLBP. As price slowly increases due to weight changes external market actors sell TKN into the rLBP and take out USDC, thus the rLBP slowly acquires TKN at whatever the market determines to be a fair price. The price that the market determines for TKN within the rLBP converges towards the traded market price due to arbitrage.
On the other hand, we have the standard buyback which will be carried out on a standard Uni V2 pool consisting of 10,000,000 USDC and 100,000,000 TKN. In this scenario the project is buying back $750K worth of TKN over a 72h period, meaning a buy of ~$10,416 per hour. Remember, one of our assumptions is that there will be no frontrunning in this pool, real life scenarios would likely differ.
Below we can see the spot price per hour for the mock buyback. As the local price (price within this pool) increases due to this buy pressure, external market actors come in and sell TKN into the pool to rebalance price, this is why we can see a steady price over time.
You may have noticed that the amount acquired via the buyback is greater than that of the rLBP, similarly, the average acquisition price is also lower for the standard buyback. This is where the limitations of a mock scenario make themselves known and our assumptions have to kick in, namely that no frontrunning takes place.
One major advantage rLBPs seem to have over simply periodic buybacks is their protection from frontrunning & bots. Furthermore, they can be cheaper for the project to conduct since in a normal buyback, it is the project itself that is buying the token from the market whereas in an rLBP it is market participants who are selling the token into the pool (selling it back to the project), this also means that an rLBP is more efficient at finding the sell price range for a token.
There are some noticeable downsides to rLBPs though, namely that they create a PvP (player vs player) environment where everyone is fighting to sell their token back to the rLBP at the optimal time, this also means that users with large bags may not be able to exit at a desirable price. Furthermore, the market has a lot more control over how much of the token is bought and how fast the buying occurs since they are the ones that sell the tokens back into the rLBP, a normal buyback on the other hand could simply set the amount of USDC they want to spend and choose the amount of time that they want to spend over.
Conclusion; More real-data case studies are required to determine if rLPBs are viable.