High-level model for the returns to providing liquidity in Uniswap v2 liquidity pools. There are two assets X and Y in the pool with reserves x and y of each, with pool constant k = x * y and price p = x / y.
-
-
(Actually it's a little more complicated since k increases every time there is a swap, due to liquidity fees being subtracted from the incoming amount and added to the pool - I'll get to that)
Show this thread -
The important thing is that you can express the reserves in terms of k, p as x = √(kp) and y = √(k/p), and whenever there is a price move the new reserves are x' = √(k'p') and y' = √(k'/p')
Show this thread -
The total value of the pool is x + y * p = 2√(kp) and after a price move this has changed to x' +y' * p' = 2√(k'p') so the P&L is just 2√(k'p') - 2√(kp)
Show this thread -
(Clearly you only have an ownership claim on a % of all the assets in the pool, but since everyone in the pool gets the same results, we may as well model the whole pool as a single liquidity provider)
Show this thread -
Now most treatments I see compare this to an alternative where you just held assets X and Y outside of the liquidity pool. But I'm a market neutral kinda guy so let's assume you hedge the linear price exposure with a short futures position, which generates P&L of -y * (p' - p)
Show this thread -
Call the price return r, so that p' = p(1+r), then your total P&L is 2√(k'p(1+r)) - 2√(kp) - √(kp) * r which, if you expand out the square root in powers of r, is 2√(kp) * [√(k'/k) * (1 + r/2 - r^2/8 + ...) - 1 - r/2] (the linear term cancels as expected)
Show this thread -
Now remember that the pool constant k grows over time. The growth is proportional to the turnover of the pool and to the fees charged so we can write k' = k * (1 + t * f) where t is the turnover as a fraction of pool assets, and f is the liquidity fee (0.3% in Uniswap v2)
Show this thread -
Using that in the expression for the P&L, expanding in powers of tf and simplifying, we get P&L = √(kp) * [tf - r^2/4] = x * (tf - r^2/4)
Show this thread -
Taking an expectation on both sides and dividing through by x to get a return, we get E(return) = E(tf) - sigma^2/4. If you have estimates for the turnover in the pool and the realized volatility, this tells your your expected return for providing liquidity over one time period.
Show this thread -
If you set that expected return to zero you get an "implied volatility" of sigma = 2 * √E(tf). Unlike option implied volatility you can't observe this directly (only indirectly in the form of time-series averages of pool turnover) but you /can/ compare it to your estimate ...
Show this thread -
... of realized volatility to determine whether providing liquidity in the pool is likely to be profitable or not. You can also calculate the "gamma" for the pool which tells you (a) how sensitive your P&L will be to price jumps and ...
Show this thread -
... (b) how often you need to adjust your futures position to remain market neutral.
Show this thread -
Some extensions to this - 1. In some liquidity pools you receive governance tokens for participating, which increase the yield (assuming you sell them) 2. You may pay or receive funding fees on the futures position, which should be added/subtracted from the liquidity fee yield
Show this thread -
3. It costs money to adjust your futures hedge so you shouldn't re-hedge too frequently, there is probably an interesting avenue of research for "optimal delta hedging" in liquidity pools.
Show this thread -
Ugh - I wanted to shout out another account that did a thread about viewing liquidity pool stakes as covered calls and trading liquidity tokens as options, but I can't find it now. If someone could please link it that would be very helpful!
Show this thread
End of conversation
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.