Pricing Uniswap v3 LP Positions: Towards a New Options Paradigm?
- Uni v3 LP positions can be decomposed into a short put payoff and a range component.
- The value of a Uni v3 position is the sum of 1) a short put, whose value is given by the Black-Scholes model, and 2) a range term, whose closed-form expression is found using the Feynman-Kac formula.
- This can be simplified further by converting the Uni v3 LP position into a “fixed-DTE” put option whose value at expiration converges to a put option at time T_r > 0 .
- Comparing the expected returns and the options premium of a Uni v3 position can help determine whether it is more beneficial to hold a Uni v3 position or to “lend” it to an options buyer. Spoiler alert: It is almost* always better to lend a Uni v3 option 🤯
To establish a Uniswap v3 LP position, one has to lock an asset (eg. ETH) and a numéraire (eg. DAI) between a user-specified range defined by a lower tick tL and an upper tick tH. The value of such a Uniswap v3 LP position is
where S is the price of the asset in terms of the numéraire, K is the strike price √(tL*tH), and r is the range factor √(tH/tL). The range factor determines how “sharp” the transition between holding the asset and the numéraire is.
I described in details in several other posts how the value of a Uniswap v3 position is analogous to a short put for narrowly defined (ie. single-tick) positions.
What about Long options? If one is able to borrow a Uni v3 LP position and pay it back at a later time, this is equivalent to the purchase of a long put. The user would pay a fixed premium when borrowing the LP position.
What should that premium be? Can we use an established framework like the Black-Scholes model to price a Uni v3 position directly?
The answer is Yes.
In this post, we will show how we can achieve this by decomposing V(S) into a short put component, which corresponds to a single-tick position, and a range component, which only exists between the upper/lower ticks.
Options pricing from Feynman-Kac
Before deriving the price of a Uni v3 option, it is worth revisiting how regular options are priced. There are many ways to derive the price of a regular call option using the Black-Scholes model. My favorite way is to use the Feynman-Kac formula, which states value of an option u(S,t) is given by:
where V(x, T) is the payoff function at expiration and the average ⟨ ⋅ ⟩ is taken over the probability measure of a Geometric Brownian Motion.
Understanding the meaning of the Feynman-Kac formula is simple: the value of an option at a time T is found by computing the average value of the payoff function over all possible price movements between now and a time T in the future.
Physicist Richard Feynman initially developed a similar equation in the context of the path integral formalism of quantum mechanics, where the “expected” location of a particle is determined by the weighted sum of all possible paths the particle can take. Mark Kac realized that they were working on a similar problem when he heard a talk by Feynman when they were both at Cornell, and out of that collaboration emerged the Feynman-Kac formula (source).
So, computing the Feynman-Kac formula directly, we get:
For a call option, the payoff V(S,T) = max(S-K,0) and for a put option V(S,T) = max(K-S, 0). Thus, the value of a call and put option at time t is given by:
Proving that this agrees with the Black-Scholes pricing is left as an exercise to the reader.
Pricing Uniswap v3 options
The Feynman-Kac formula makes it easy to compute the value of exotic options. We will apply the Feynman-Kac formula to find the value of a Uniswap v3 option.
To make things a bit simpler, let us first decompose the value of a Uni v3 LP position into two distinct components V(S, t) = V_p(S, t) + V_ρ(S, t), where V_p=-max(K-S, 0) is the payoff of a short put option, and range payoff V_ρ is given by:
We can graphically see how the put and range payoffs are related to the value of a Uni v3 position: the range payoff is maximum at the strike price and reaches zero at the upper/lower ticks (I’m plotting the negative of the range payoff for simplicity).
Using this decomposition, we can explicitly solve for the value of a Uni v3 option at a time t using the Feynman-Kac formula. Doing this, we get:
where Put(S, t) is the familiar price of a short put option at strike K given by Black-Scholes.
The “range option “ ρ(S,t) component is a strictly positive term that corresponds to the value of the ranged part of an LP position. Solving the Feynman-Kac formula, we obtain a rather complicated expression for ρ(S,t):
Although we’re not interested in the details of ρ(S, t) for now, we can graphically see that ρ(S,t) looks like this:
Can we make this expression simpler?
The expression for the value of a Uni v3 position is rather complex. Luckily, we can simplify the analysis significantly.
As shown in my post about creating perpetual options in Uniswap v3, a good approximation for a Uni v3 LP position with range factor r is a regular put option at time T_r, where
Therefore, we can reduce the expression for the option pricing given by the Feynman-Kac formula to a much simpler expression that’s taking advantage of the range factor/DTE relationship above. Specifically, we get:
In other words, the value of a Uniswap v3 option is equivalent to a short put option that expires at a fixed number of days to expiration (DTE) so that DTE > 0 at expiration.
The price of a Uni v3 option is still subjected to theta decay before expiration, but gamma would be capped at the gamma of a 45DTE option.
How accurate is this approximation? We can see in the figure below, which compares the fixed-DTE approximation with the computed value of a Uni v3 option, that the difference between the fixed-DTE put approximation and the exact solution is not significant for range factors less than about 2:
Are Uni v3 returns matching their “option” value?
Right now, the only option for Uni v3 LPs is to hold their position until they accumulate enough fees to turn in a profit. No protocol allows users to easily do borrow/lend Uni v3 LP positions yet
However, if such a protocol were available, then the premium received by the Uni v3 liquidity provider for lending their LP position would be given by the Black-Scholes model with a “fixed-DTE” that depends on the range factor r. In contrast, fees would also accumulate if the position was left alone and simply collected fees.
Therefore, in a world where Uni v3 LP positions are minted/lent/borrowed and traded as options, a key question to ask is whether it would it be better to:
Hold a LP position for a time T and collect the 0.05-0.3-1% fees
“Lend” the option for a time T and collect a fixed premium fee
Let’s explore that question by analyzing the expected yields for both scenarios.
1. Holding a Uni v3 LP position
First, we can use the expression derived in my previous post to determine the expected payoff of a Uniswap v3 LP position. Specifically, if liquidity is deployed to a single-tick, the expected LP returns for a unit amount of liquidity ΔL is:
where γ is the fee tier (ie. 0.01, 0.003, or 0.0005) and the “Tick Liquidity” is the amount of liquidity in the pool at the current tick. The factor of √(8/π)=1.5957691216… comes from deriving the time spent in-the-money assuming that the price follows a Geometric Brownian Motion.
The key point here is that the returns are expected to grow according to √T. Therefore, since fees accumulate linearly over time for wider positions (read this article for more details), we will only consider single-tick positions.
Importantly, this means that LP returns will depend on the pool’s total volume and the total liquidity at the deployed tick.
In the example below, we consider a position deployed at the 3990 tick in the ETH-DAI-0.3% pool. Since that pool has a total daily volume of $15.71m and the 3990 tick has 70.60ETH = $281,694 of locked value, the relative LP returns should be approximately 1.6% per √days or about 30% per year (assuming a 100% annualized volatility).
By comparison, deploying the same liquidity to a similar pool like the ETH-USDC-0.03% pair, we obtain that LP positions earn a 1.37% return per √days or 26.2% per year. Some pools generate more yields than others. YMMV.
Some pools have wild (predicted) returns, mainly due to them having a relatively low per-tick liquidity compared to the volumes traded.
For instance a newly listed token such as RBN only has $500k of locked value at the current tick for $25m of volume. Computing the LP returns for the RBN-ETH 1% pool will be left as an exercise to the reader.
2. Lending a Uni v3 LP position to an options buyer
On the other hand, one may wish to mint a Uni v3 LP position and lend it to another user for a time T for a premium.
Specifically, the premium received will be:
This is the familiar expression for the value of a short put, except time has been translated according to t → (t+T_r).
This expression will depend on the specific underlying, the strike price K, the implied volatility σ, and the time to expiration T. If we consider that the option is minted “at-the-money” where the LP position’s strike price K is equal to the current price, then the value of the put option is simply:
Interestingly, this expression also depends on the square root of time. This means we can directly compare the premium received per unit of deployed liquidity to the expected returns obtained by holding the LP position and collecting fees.
If we consider a single-tick position, then T_r will go to zero and (T-t) will be the amount of time the position is held (if it is held until expiration).
Therefore, we simply need to compare the factors multiplying the √T term to find which strategy is the most beneficial:
Assuming an annual volatility of 100%, this means that holding will only generate returns larger than lending the option if the Daily Volume/Tick Liquidity ratio is larger than:
The actual daily volume, tick liquidity, and the realized volatility may need to be calculated for each pool in order to accurately determine whether the criteria above (which may change for each pool) is satisfied or not.
As an example, I’m including below a list of the top 17 pools currently on info.uniswap.org by 24h trading volume and I’ve added a column to show whether the holding ratio is satisfied (4th column, I’ve normalized the ratio to a yearly IV of 100%).
Some pools do indeed have a large daily volume compared to their locked liquidity. Holding a position in these pools would generate an expected yield that will be higher than the options premium only if the hold ratio is larger than 1.
Right now, only the UNI/ETH, HEX/USDC, and RBN/ETH pools highlighted above would generate higher returns from holding. Holding any of the pairs with a hold ratio < 1 would underperform lending them as options.
In other words, it would be more profitable to lend the Uni v3 LP position for most Uni v3 trading pairs as an ATM option rather than holding+collecting fees.
Takeaway (this is in bold because this is important):
It is almost always better to lend a Uni v3 position as a short ATM option rather than to hold it.
Our results suggest that Uni V3 positions are analogous to short put options, and that it would be better in most cases to lend it to an option buyer and collect premium rather than simply holding it and collecting fees.
What does that imply? First, this suggests that establishing a healthy options market based on Uniswap v3 (or SushiSwap’s upcoming concentrated liquidity pools) would likely increase the yields collected by liquidity providers.
Second, not only would LPs generate more yields, but options buyers would also be able to protect their investments by purchasing put options that can permissionlessly be deployed at any strike and for any pairs. Options on ETH-stablecoin pairs can be efficiently handled by protocols like Opyn, Pods finance, or Lyra finance, but it would be challenging to set up smart contracts for the trading of options of each possible asset pairs that exists (tens of thousands of markets exist in Uniswap’s long tail end of crypto assets).
Finally, there needs to be a cultural shift in the way people are interpreting the deployment of concentrated liquidity positions on Uniswap v3 or SushiSwap. While constant product AMMs are simpler to understand and manage, they can be prone to significant impermanent loss and are a very inefficient use of capital compared to concentrated liquidity AMMs.
Being on the short side of options trading is an inherently profitable endeavor (since implied volatility is often higher than the realized volatility), but managing a short options portfolio is not a buy-and-hold passive strategy. Short options, and by extension Uni v3 LP positions, have to be actively managed, but active investing does not mean watching charts and trading every minute of every day. With the right tools, being an active investor takes less than five minutes per day.
I wish to thank Lucas Kohorst for their helpful comments. If you’re interested in these ideas please DM me on twitter @guil_lambert or send an email to guil.lambert @ protonmail.com .