Uniswap v3: New Horizons
Uniswap V3 is unlocking greater capital efficiency for liquidity providers and better pricing for traders. It does so through a new primitive described as “concentrated liquidity”. With Uniswap V2, the liquidity added by LPs was maintained in a 50-50 ratio by the protocol’s market making equation (XYK, or constant product market maker). The XYK price curve provides inventory from just above $0, to just below infinity. As a result, liquidity density was low and LP fees weren’t too impressive either (though still attractive). Since it’s highly unlikely that the price of ETH would either go to $10 or soar towards infinity in a brief amount of time, providing liquidity at these extremes can be considered a waste.
The concentrated liquidity enabled by V3 improves upon this by allowing LPs to set custom ranges. For example, let’s say there is an LP who thinks ETH won’t go above $5k or below $2k. With UniV3, they can now provide liquidity at only the range between $2k-5k. Again, this is in contrast to UniV2, which previously would have spread that liquidity across a semi-infinite range. This model also does away with the fixed 50-50 allocation in a pool, which further opens the door to positional flexibility.
If you’re familiar with how professional market makers provide liquidity on an orderbook, you can think of this as analogous to having a large block of asks (i.e. maker sell orders) stacked up from current price till the upper bound, and bids (i.e. maker buy orders) stacked down from current price till the lower bound.
While Uniswap v3 hasn’t seen explosive trading volumes since it launched in May, by no means has it been disappointing. In recent weeks, UniV3 has consistently had days that facilitated over a billion dollars in volume.
LP flexibility wasn’t the only thing that changed with UniV3, the fee structure did as well. Uniswap V2 had a fixed 0.30% trading fee, which was paid to the liquidity providers of the pool. UniV3 did away with the fixed fee, introducing three tiers instead: 0.05%, 0.30%, and 1.00%. Due to this new tiering, the average fee level on Uniswap will vary over time although, for the most part, it’s been lower than 0.30%, as seen in the chart below. The average V3 fee has been 0.22% since inception.
Fee tiers have given way to interesting pool dynamics. In theory, LPs should gravitate towards the higher fee pool because that is where they can earn the most. Conversely, traders would rationally opt for the lower fee pool given its cheaper. Importantly, what is “cheap” for a trader isn’t solely reliant on the trading fee but also the slippage incurred on trade execution. Due to this last point, there are times when the higher fee pool may actually be the cheapest option for a trader because the liquidity is deeper, thus resulting in lower slippage. Concentrated liquidity can also materially mitigate slippage, depending on the situation.
Conceptually, this should all make sense but as you can see there are many variables at play. What does the data reveal about how trader and LP dynamics have actually fared in UniV3? Let’s explore this with an example by looking at the two ETH-USDC pools on V3 – one that has a fee of 0.30% and the other a fee of 0.05%. We’ll start with the larger fee pool, as seen in the chart below. While liquidity has fallen ~22% from its early June highs, daily trading volume is down ~74% from May highs. Here we see that liquidity providers quickly gravitated towards the higher fee pool, but eventually traders started looking elsewhere.
Now let’s turn our attention to the lower fee pool (0.05%) which currently has just under $120m of liquidity in it. Despite the lower TVL, this pool has averaged a whopping $421M of volume per day in August 2021. The lower fee pool facilitated 165% more volume than the higher fee pool, with just 35% of its liquidity. All because the lower fee pool quotes a better price for traders. And this is only possible because, with concentrated liquidity, slippage is still incredibly low for traders despite them tapping into the pool with much less capital. Even if V2 had flexible fee tiers, this wouldn’t be possible because of a lack of flexibility in liquidity provision.
The 0.05% fee pool has averaged a volume/TVL ratio of 4.25 since inception, while the 0.30% pool averaged 0.9, implying ~5x higher utilization for the 0.05% fee pool.
Uniswap v3 brings a lot of new functionality to the table. But the inherent complexity leaves some less knowledgeable retail users wanting more. For example, concentrated liquidity has some degree of inherent leverage. Because what it does, in a nutshell, is compress the XYK price curve, which extends semi-infinitely, into a range that the LP chooses. Importantly, concentrated liquidity has the ability to magnify losses if not used right.
And this is where the next layer of products come in. Several teams are building active strategy vaults on top of Uniswap v3. The goal is to take advantage of concentrated liquidity, while employing rebalancing mechanisms to minimize IL. Such products abstract away the complexity of V3 liquidity provisioning from end-users, who can instead enjoy passive LP-ing through the vaults. The protocols behind the vault’s creation and maintenance take care of the hard part.
One such product is Charm Finance. Their Alpha Vaults are the oldest Uniswap V3 liquidity provision vault and have fared quite well since inception. Let’s take a look at Charm Finance and how its vault works.
Charm Finance’s Alpha Vaults
Charm is a protocol building a suite of innovative trading products. The project initially started as an options protocol, but when Uniswap V3 was announced, the team quickly realized the potential of vaults that manage Uniswap liquidity for you. As mentioned above, Uniswap V3 brings a lot more complexity to the table relative to Uniswap V2. Charm’s goal is to build vaults that take an active approach to managing liquidity while giving LPs a passive experience akin to V2.
Charm’s Alpha Vaults currently use a proprietary strategy that manages liquidity according to market conditions. The general strategy is one of mean reversion. Basically, if price deviates too far from the mean, in either direction, the strategy positions itself for price to revert back to the mean. While straightforward, this strategy is fairly resilient in any market as mean reversion is a common phenomenon.
The specifics of the strategy are complex, but we’ll try to break it down in a simple way. It starts by providing liquidity in what’s called a “base order.” The base order is an LP position set within a wide range (based on proprietary parameters). It’s the upper and lower bounds for the LP position. This is where the vast majority of the vault’s liquidity sits. The goal is to ensure that price stays in the base order range for as long as possible in order to maximize fees earned.
At the upper bound, the vault’s LP position would be 100% in USDT and 0% in WETH, and vice versa at the lower bound. However, these ranges move with price. So barring any extraordinary events of volatility where price moves over 50% in a short period of time, price is unlikely to ever hit the base order bounds.
After the base order, there’s a second set of orders — the “limit orders.” Limit orders are a common order-type across financial markets. Charm uses Uniswap limit orders to rebalance positions when there is an excess of one token in the pool. When price hits the upper or lower limit order, a rebalance occurs to sell the excess tokens. This liquidity is then added to the base order.
The limit order essentially rebalances LP positions when there’s an excess of one token in the pool. Rebalancing helps LPs reduce impermanent losses as it periodically brings the pools close to equilibrium (50:50). The threshold for the limit order is actively selected but they are subject to passive (and feeless) execution. Instead of simply swapping one asset for another during a rebalance, Charm creates a single-sided LP position consisting of the token that there is too much of. When the limit order executes, the excess tokens are fully converted from one token to the other.
The range for this position is tight, so when it hits the end of the range during mean reversion, the asset there is excess of is automatically converted to the other asset. Simply put, the limit order relies on Uniswap V3 swappers to do the rebalancing and, as such, Charm LPs actually earn fees (rather than pay fees) on these orders.
TLDR: Base orders have a wide range around current price is where most of the returns are made; limit orders sit just above/below current price and are used to rebalance the pool’s asset allocation when price moves.
The details of this strategy are slightly complex. So if the above explanation didn’t make it clear enough, we’ll run through an example to further flesh out how it works:
- ETH is trading at $2500. A Charm ETH-USDT vault with 1 ETH and 3000 USDT deploys liquidity into the pool. 1 ETH and 2500 USDT are set as a base order within a set range centered around $2500.
- The 500 USDT excess is set as a limit order (single sided LP position) between, say, 2500 and 2200 USDT per ETH. As the price of ETH-USDT moves, the base order’s range always changes to accommodate this movement. The limit order only starts to execute under 2500 USDT per ETH and is fully executed at 2200 USDT per ETH.
- The price of ETH shoots up to $2800 on Uniswap V3. This implies traders on Uniswap have been buying ETH with USDT — meaning Charm’s pools now have less ETH and more USDT.
- Charm’s base order has been selling USDT for ETH, providing liquidity and earning fees the whole way up. But the composition of the 500 USDT limit order is unchanged because price didn’t move into the limit order’s threshold (2200-2500 USDT).
- Let’s say there’s now (at $2800 ETH) 0.7 ETH and 3300 USDT in the base order. The base order is re-deployed with 0.7 ETH and 1960 USDT (implying 50-50 ratio at 2800 USDT per ETH), which implies an excess of 1340 USDT (3300-1960).
- This 1340 USDT is combined with the previous 500 excess USDT (whose limit order did not execute) to place a new limit order for 1840 USDT between a range of 2800 and 2500 USDT (just below current market price).
- With a larger limit order sitting just under current market price, there will be a larger rebalance back to 50:50 if/when price reverts back to the mean (goes down, in this situation). If ETH’s price decreases, the limit order will help Charm LPs earn additional fees on the way down as people swap ETH for USDT.
- The core goal of the base order is to position the vault’s inventory to take advantage of the market’s demand for a particular asset. The purpose of the limit order is to reduce impermanent losses without incurring swap fees and slippage.
The Competitive Landscape Around Uniswap Liquidity
While the strategy is sound, its performance has been on par with a Uniswap V2 LP position in ETH-USDT, excluding fees. Which means, when fees are included, Uniswap V2 LPs actually outperformed Charm LPs. The current iteration of Charm’s strategy is just over 2 months old — and the V3 LP market is becoming quite competitive with the likes of Visor, Aloe, and smart individual LPs all fighting for fees in a similar price range.
In fact, almost every Uniswap V3 strategy for ETH-USDT slightly underperformed the Uniswap V2 position. Aloe Blend is the only Uniswap V3 strategy that outperforms the V2 portfolio, because it’s precisely engineered for marginal outperformance over v2. The goal for Charm, over time, is that as more data is “unlocked”, more strategies can be devised — and the existing strategy can be fine tuned. The team is already researching new strategies and improvements to the current implementation.
However, the competition will also become stronger as they too will unlock new insights. Ultimately, it all comes down to whose strategy best optimizes for IL minimization and fee maximization. Irrespective of which protocols are able to capture the most market share, it’s clear that Uniswap V3 is changing the way DEX liquidity works — for the better.