What is Uniswap v3, and why does it matter?
As of November 2021, Uniswap is by far the largest of the Decentralized Exchanges (DEXs) by volume. Only Sushiswap is close, but even they did only $16bn in volumes in 10/2021 compared to Uniswap’s $61bn total.
In May 2021, Uniswap rolled out the v3 iteration of their AMM strategy. The critical point of Uniswap v3 revolved around capital flexibility and efficiency. Theoretically, the addition of concentrated liquidity & variable fee tiers more accurately compensates LP for taking on risk – leading to up to 4000x capital efficiency and higher returns on capital.
The way that this works is fairly simple. In a traditional Liquidity Pool, distribution of liquidity was uniform across the entire price curve. That meant that in many pairs, the majority of liquidity was never touched. An easy way to understand the concept is by looking at stablecoin pairs. The liquidity outside the typical price range of a stablecoin pair is rarely touched. For example, the v2 DAI/USDC pair utilizes ~0.50% of the total available capital for trading between $0.99 and $1.01, the price range in which LPs would expect to see the most volume – and consequently earn the most fees. As in v1 & v2, LPs gain more of the one asset as swappers demand the other. However, unlike prior iterations, this can occur until the LP position’s entire liquidity consists of only one asset. This occurs because the trading range accepted is finite, unlike the prior (0, ∞) price range.
Dollar stablecoins are pegged & price volatility is extremely low. This means that allocating liquidity to the full range is inefficient for both capital allocation and fee generation. By selecting only the tightly traded range, where capital is being used most efficiently, the LP can sustain deeper trading books, and the LP’er earns fees more frequently because their money is being used as on the other side of trades more frequently. As you can see in the DAI / USDC v3 pool chart below, a range as tight as (-0.05%, 0.14%) could be appropriate given the low volatility of pegged token prices.
One key consideration for setting these ranges is that liquidity is active, meaning that price changes can take the pool out of the set range. When this happens, the liquidity position is no longer active, and fees will not be generated. To fix this, the LP’er must update / create a new LP position on the updated price range – ensuring again that their capital is being used in the most effective fee-generating range, and to keep IL from getting extreme.
Where does Yield Optimization come in?
Despite what you might expect from the above, uptake of Uniswap v3 hasn’t necessarily been a seamless transition. Impermanent loss is a major issue. While stablecoin pairs such as the USDC / DAI pair above trade within an extremely tight range due to their peg, that isn’t always the case. Even with a decently wide band, volatile low-market cap tokens can quickly double or triple, leaving LP entirely in the counter token. For those that aren’t familiar, this happens as prices in the pool are based on the ratio of tokens in the pool. This frees up opportunity for arbitrage traders to snag tokens at a discount if the pool isn’t properly balanced.
There’s some interesting work that’s been done on this by Andreas Aigner & Gurvinder Dhaliwal. The table from their paper below highlights the key difference mentioned. The first row – (0, inf) – is the v2, ‘full range’ position. In v2, a 20% price move in one of the underlying tokens would only result in about ~0.5% of Impermanent Loss.
With the addition of Uniswap v3 came the ability to set price ratio ranges, in this case reflected by ‘%Move/Range’. Glancing at the chart above, we can see that the same 20% price move that previously only caused 50bps of IL causes multiples of that as the range grows tighter. So, tighter ranges are more appropriate for tokens that move only rarely – stablecoins coming up as the obvious option.
It’s worth looking at an actual example: the ICE/ETH v3 pool. By default, Uniswap suggests a (-50%,100%) range for the pool. Those values mean that, based on the current ICE/ETH price ratio of 106.36, my tokens would be available for LP unless said ratio reaches either 53.08, the minimum, or 212.24, the maximum. However, remember that because v3 sets a finite range, if the position reaches either end of the range you would end up with either the worst of either all ICE or all ETH.
For another example: say you bought ICE two weeks ago for $25 because you were impressed by how Dani handled the hack, and wanted to earn some rewards by adding ICE liquidity in Uniswap v3. If token price doubles, as it has since then, and the LP was left in place, the position would now no longer be generating fees, and it would be entirely in ETH, leaving you 0 exposure to the doubling of your original asset. To resolve this, and protect your LP from severe IL, you would have to remove and re-pool your liquidity. Given the current state of gas fees Ethereum, that is untenable for the average retail investor. The adjustments of concentrated ranges and needing to more actively manage liquidity makes keeping track of IL across multiple positions more difficult and complex, which again requires both resources and capital to solve.
There are a few protocols working to create efficiencies in this space for retail liquidity providers – but that will be another topic coming soon.