Liquidity Provider Strategies for Uniswap: Liquidity Rebalancing
This article describes liquidity rebalancing and it’s effects on the principal capital. It’s part of a series.
Liquidity rebalancing or relocation refers to moving the liquidity around to a different price boundaries. It’s typically used to move out-of-range LP positions back into the range, where the active price is.
A very common error that new Uni LPs commit is “chasing the price” — that is, moving the liquidity too frequently. Getting an amazing fee APR can feel good, but too often the “profit” is an illusion because the value of the principal capital dwindles. The problem is psychological — fee yield and APR are very salient metrics, and it’s tempting to maximize them even at the expense of longer-term capital losses, which are less visible to the beginner LP. To the credit of Uniswap, it doesn’t show the fee APR on the Uniswap v3 info page; however, many third-party sites and analyses do.
At the same time, when used properly, liquidity relocation is a powerful tool that not only maximizes fees, but also preserves the value of the principal capital better than some purely passive strategies.
Let’s start with examples to build intuition on this subject.
Examples
Example #1: unstable coins
Let’s consider a hypothetical “Super USD (SUSD)” coin that is a top-quality stablecoin, guaranteed to be always backed 1:1 by fiat. (No, really — suspend your disbelief for the sake of this example!) If you are an LP in the USDC/SUSD pool, you’re likely to have 1.0 as the center price and narrow range for you positions, around 0.1% or less.
One morning, you wake up and check the news, discovering that USDC has once again depegged, currently trading at 98 cents. Because of that, your LP portfolio consists of 100% USDC.
You check the Uniswap pool stats and notice a 200% APR in the USDC/SUSD pair. The trading volume is high, and the liquidity at the current price shallow. You want to convert half of your SUSD to USDC and become an LP at the 0.98 center price.
To initiate the new position, you close the existing one, swap 50% of your assets for SUSD, and provide liquidity at the 0.98 center price and 0.1% range. A day later, with a sigh of relief, you find that USDC has returned to its $1.0 valuation. Your new position is now entirely in SUSD. You can repeat this process to redeploy the LP position back at the 1.0 center price.
The sequence of events is:
- Deploy a USDC/SUSD LP position at price equal to 1.0.
- USDC depegs, trades at 0.98 with high APR, position fully in USDC.
- Close the position, collect the assets, put the collected fees aside, swap 50% of USDC for SUSD.
- Redeploy the USDC/SUSD LP at 0.98.
- USDC price stabilizes to $1 again, new position is fully in SUSD.
- Close the position, collect assets, put fees aside, swap 50% SUSD for SUSD.
- Redeploy the USDC/SUSD LP back at 1.0.
Question: are you better off?
One way to answer that is to notice that a single relocation reduces the liquidity of the position by approximately 1%, since sqrt(0.98) ~= 0.99. You better hope that the fee collected during the single day is grater than 2% of the principal. Otherwise it would have been better to keep the initial position unmoved.
Example #2: chasing the ETH
Let’s assume ETH/USDC price is $2000. An LP deploys a symmetrical position at the center price P=$2000 and range [P_a = P / r, P_b = P · r], where r = 1.1. When the price goes out of the range, LP redeploys the position at the old boundary price P_a or P_b as the new center price, using the same range r.
The LP is competing with a few other strategies:
1) Static — deploy and forget. It uses the same parameters: center price and r as the range;
2) Wide range — same strategy, but uses r² as the range;
3) HODL — keep the initial assets as they are.
The initial value of assets is $1000.
Scenario #1: upwards momentum
Here, the price increases by a factor of r once, and then by the same factor again. The active LP rebalances once: when the price reaches/exceeds the initial P_b the first time.
Final values:
- Active LP: 1049.40
- Static LP: 1024.40 ( — 2.44%)
- Wide-range LP: 1050.00 (+0.06%)
- Holder: 1105.00 (+5.03%)
The active LP beats the static narrow-range LP, but loses to other strategies.
Scenario #2: downwards momentum
Same idea, opposite direction.
Final values:
- Active LP: 867.28
- Static LP: 846.62 ( — 2.44%)
- Wide-range LP: 867.77 (+0.06%)
- Holder: 913.22 (+5.03%)
The gains in % terms are the same as in the Scenario #1, even though the values obviously are different from #1.
Scenario #3: oscillations
Here, the price increases/decreases by a factor of r once, and then does the opposite, reverting back to start.
The active LP rebalances once: when the price reaches the initial P_a or P_b.
- Active LP: 954.00
- Static LP: 1000.00 (+4.6%)
- Wide-range LP: 1000.00 (+4.6%)
- Holder: 1000.00 (+4.6%)
Here, active LP is clearly the worst strategy. It turns the impermanent loss into permanent loss.
Technical explanation of how “chasing the price” reduces liquidity
Why does the value of position go down due to price reversions after rebalancing?
With the xy=k bonding curve, the same amount of assets deployed at different prices creates different liquidity depths.
For instance, let’s look at a single-sided narrow range 1 ETH position in USDC/ETH pool. It can be interpreted as a limit order: “when price reaches X, sell ETH for USDC”.
- If the position is deployed 2000 USDC/ETH as the center price, a sum of 2000 USDC is required to fully buy out the ETH in the position.
- If deployed at 4000 USDC/ETH, 2x more $ is required.
- If deployed at 8000 USDC/ETH, 4x more $.
Also consider that swapping 4x more tokens at a fixed price P leads to sqrt(4) = 2x higher price impact. (Proof follows from the relation √P = L· y = L/x, and the fact that L remains constant after a swap.)
- From one side, the trader is swapping 4x more USDC tokens so that should lead to sqrt(4) = 2x higher price impact;
- From the other side, the trader is swapping 1 ETH, so the price impact should stay the same.
The way to reconcile these two requirements is make the liquidity 2x as deep if the single ETH is deployed at $8000.
Not only is the ETH priced more, it actually creates a deeper liquidity!
More formally, the v3 liquidity math defines the liquidity L of single-sided positions (only X or only Y assets) as:
It follows that:
- a position of x tokens relocated at α times higher price has sqrt(α) times higher liquidity, assuming that the range r=sqrt(P_b/P_a) of the position remains the same — see proof below:
- a position of y tokens relocated α times lower price has sqrt(α) times higher liquidity. (Proof follows from the above, as x and y are symmetrical in the xy=k equation.)
Moving assets away from the current price always increases the liquidity.
If a position with liquidity L is relocated as soon as it goes out of the range (p < P_a or p > P_b) and re-centered around the previous P_a or P_b, then on each relocation:
- half of the position stays the same distance from the new center price;
- half of the position moves r times closer.
The new liquidity L_new is given by:
We know that the range r is always larger than 1.0, because all valid positions have non-zero width. Therefore L_new is strictly less than L_old.
Now it’s possible to answer the question from above:
Why does the value of position go down due to rebalancing?
What happens is:
- the liquidity of the position decreases on every rebalance;
- if the price reverts, the value of the position goes down relative to the initial value, due to the lower liquidity.
An aside: academic papers and prestigious universities
As a side note: in my opinion, no research paper has been more harmful to the understanding of concentrated liquidity in the DeFi community than the preprint “Strategic Liquidity Provision in Uniswap v3” from Harvard. For one, it used to advertise¹ the extremely misleading “230x times more utility” in Uniswap v3 compared with Uniswap v2. While I haven’t seen the code behind their results, I strongly suspect they did not correctly model the liquidity evolution over time.
If you’re interested in academic approaches on Uniswap v3, start by looking at “Concentrated Liquidity in Automated Market Makers” instead. It’s short, easy to understand, and does take into account the liquidity evolution along with the accrued fees.
¹ — It seems that since 2021 the paper has had a major rewrite; in 2023 a new version was published, and the 230x figure is now gone.
Simulations
The simulations show the expected final value a year after the position was first created, for different levels of yearly volatility σ.
Caveat: in this article, I keep focusing only on the evolution of the principal capital over time, ignoring fees. As the different strategies are going to have different fee yields, a lower “expected final value” does not always mean the strategy is worse. Especially for higher σ, fee yields are expected to be large! However, fee yields depend mostly on external factors, and are difficult to predict & analyze mathematically. (For a deep dive: this research paper from 2023 does give it a shot, but they are focusing on just arb fees, ignoring “normal” market trades, for the unpredictability reasons.)
A technical note: the simulations use GBM price evolution and show the average results for N=10,000 simulated trajectories. The median results would be worse. Costs for rebalancing swap fees, transaction fees & other operating expenses are ignored, for simplicity.
The first graph below shows static narrow-range (r=1.1) static position vs. a narrow-range rebalanced position. As expected, active liquidity management increases the losses in the principal capital.
Let’s add several more common ideas:
- Fast rebalancing: do not wait until position is fully out of the range, rebalance whenever P/sqrt(r) or P·sqrt(r) is reached.
- Partial rebalancing: move just 1/4 of the position on the other side of the current price.
- Simply increase the width of the position by a factor of r, so that it includes the active trading price between P_a and P_b again.
Surprise: the first two ideas don’t change the performance, at least not in the simulations!
A caveat: the results may be different in practice:
- price movement in real markets is not fully random, e.g. periods with low volatility are mixed with periods where the price has a strong ↑ or ↓ momentum;
- short-terms price movements in Uniswap pools are closer to a power law than the Gaussian distribution.
However, increasing the width of the position to move it back into range does reduce losses, as in this way the position gets wider over time.
Another idea: instead of using a single “rectangular” position, use Gaussian-shaped liquidity distribution! The shape of the Gaussian function is a bell curve. It can be emulated by setting up multiple side-by-side narrow range positions.
The results below show 7 such positions located so that standard deviation σ of the Gaussian matches the rectangular position’s range r.
The divergence loss is similar to the standard (rectangular) liquidity distribution. This means that the Gaussian allocation is likely to be more profitable, due to the higher expected fee APR, because the liquidity is deeper near to the center price. However, the Gaussian approach has a larger complexity & rebalancing transaction costs.
Another idea is to build a sell and buy “walls”, by allocating a chunks of liquidity some distance away from current price, on each side of it. This is expected to have lower fee income as it’s more frequently out of range. (In option-speak, a normal in-range LP position is analogous to a short straddle, but the two-sided position is analogous to a short strangle.)
As shown above, the two-sided position better preserves the principal capital.
However, all results so far are completely invalid if the asset is moving directionally. To simulate this, I set the GBM parameters so that the volatile asset price is expected to 3x in the simulation period, on the average. A 100% HODL would yield 300$ average final value, and 50:50 HODL 200$ final value.
In this scenario, rebalancing, especially fast rebalancing, does give better results both in terms of fees and in capital preservation, as long as the volatility σ of the asset is not too high.
When is it profitable to rebalance?
The golden rule, I believe, is to look at the fees earned by the position vs. the divergence loss each time you rebalance the position. (If you hedge you position — which you should — then instead look at fees vs. hedging costs.)
The rule is: on average, the fees should be higher than the divergence loss / hedging costs.
This rule is deceptively simple, because it’s not that easy to evaluate it in practice — your sample size should be large enough, and to cover some high-volatility periods, otherwise the results are likely to be too optimistic.
A key might be minimizing the operational costs of your strategy, such as price impact and slippage when swapping assets, transaction costs etc. Any complex rebalancing strategy is likely to be infeasible on the Eth mainnet.
All in all, working on this article has convinced me that liquidity rebalancing is complicated matter with few clear and actionable “rules of thumb”. Analysis of automated liquidity management algorithms from on real-life data (from Ambient) confirms that simple automated rules aren’t performing well.
Conclusion
- Liquidity rebalancing is likely to increase the fees collected by LPs, but it happens at the cost of the principal capital, particularly when most of the price movements in the pool are oscillating (reverting, ⇅), rather than directional (↑ or ↓).
- These costs arise due to the inherent nature of AMM bonding curves and are incurred in addition to any other swap fees, transaction costs, and operational expenses that active LPs are likely to face.
- In contrast, when the majority of price movements are directional and non-reverting, continuous rebalancing is more likely to preserve capital compared to maintaining a static position within the same range.
- The volatility of the asset pair further complicates the selection of rebalancing strategies, as certain strategies may be effective only at specific levels of volatility.
Acknowledgements. This work received financial support from the Uniswap Foundation. Thanks to Float Locker for comments on a draft.
Disclaimer. This post is for general information purposes only. It does not constitute investment advice or a recommendation or solicitation to buy or sell any investment and should not be used in the evaluation of the merits of making any investment decision. It should not be relied upon for accounting, legal or tax advice or investment recommendations. This article was written in the author’s free time and is not related to his professional activity or his employer. This post reflects the current opinions of the author, which are subject to change without being updated.