Operationalized Impermanent Loss & Range Bounded Assets
Liquidity Mining Ethereum Volatility on Uniswap V3 with volmex.finance v1 and “Buying the Dip”
It’s never financial advice. It never has been and it never will be. I’m bad with money. If you follow these instructions, plan to lose all of your money. Please read the full disclaimer below.
What are we working with?
With the release of V3 by Uniswap, liquidity providers can provide liquidity within target ranges. This is presented as a more efficient use of capital, but I see another potential use case to address risks around impermanent loss.
Volmex Labs has recently launched volmex.finance v1 allowing users to mint tokens that track the implied volatility of Bitcoin and/or Ethereum and the inverse of the implied volatility.
Learn more about Uniswap V3 with the official documentation
Learn more about volmex.finance v1 on their official blog
Disclaimer
As mentioned above, nothing here should be construed as financial advice. I literally have no idea what I am doing and I expect that will come across as you read through this.
This piece is primarily an exploration of concepts due to limitations around interacting with crypto derivative products in the United States. Be sure to read the Terms of Service from Volmex Labs to see if this product is available in your jurisdiction and be aware that using a VPN to access Volmex v1 violates the Terms of Service and may be considered illegal in your jurisdiction.
As I am unable to participate in this strategy due to restrictions, any reference to usage of Volmex v1 or volatility tokens provided by Volmex Labs is hypothetical.
Per usual, I will jump around a bit as I try to introduce concepts and work through questions that come to mind. I will edit for grammar and word choice but I am not going to go through this and restructure the whole thing. If you plan to proceed with me through this journey, expect a bit of confusion and please understand that I am still learning. I am open to feedback and would appreciate clarity anywhere that I am missing something.
With that said, let’s jump into some basics.
Providing Liquidity & Impermanent Loss
This will be an extremely oversimplified version of liquidity pools and impermanent loss. I will include links to more advanced explanations at the end of the section.
I’ll use this example later, but all you need to take away from this is:
Apples / USD liquidity pool with a current price of 1 apple = $1 and user provides 10 apples and $10 accounting for 10% of the entire pool.
If you are familiar with these concepts, please skip this section. I am about to botch the explanation with a stupid analogy. If you do plan to read this section, I apologize in advance.
Liquidity is an important concept within markets. Asset holders want to be able to exit positions and need buyers to do so. Prospective asset holders need sellers in order to acquire assets. Automated markets makers (AMMs) like Uniswap allow asset holders to provide liquidity to a market in the form of liquidity pools. Liquidity providers are incentivized through trade fees.
While there are other protocols such as Balancer that allow providing liquidity across more than two assets, we are going to focus on a two asset liquidity pool.
Let’s assume that an apple is worth $1. You have $10 and 10 apples, worth a total of $20. You are aware that people want to buy apples, and you are willing to sell your apples. Both sides of the trade are worth $1, so who really cares right?
You take your apples and your dollars to the market where you find a pile of 90 Apples and $90. You add your assets to these piles and get a note that represents your 10% share of the pool. When sellers and buyers of apples trade using the pool of apples and dollars, the pool takes a haircut from the trader in the form of a fee. You are entitled to 10% of the fee revenue generated.
Okay — we have a silly liquidity pool of apples and dollars. It’s important to note that to provide liquidity you must supply both sides of the trade in equal value. This allows traders to buy from or sell to the pool. You are paid for facilitating the trade — 0.3% is the standard fee.
Now what happens if there is a worldwide apple shortage? The value of one apple goes up.
To keep things extremely simple, let’s assume that one trader knows about the impending shortage of apples and visits the market to buy all of the apples in the pool for $100. The pool now holds $200. Your note entitles you to 10% of the pool or $20.
Once the apple shortage hits and the value of one apple shoots up to $5, you have experienced what is called impermanent loss. If you had never provided liquidity and kept your initial assets: 10 apples and $10, your assets would now be worth $60 = (10 apples * $5) + $10. Instead, you provided liquidity to a pool that has been cleaned out of apples. Oh well, hopefully you made good fee revenue. Assuming only one trade happened inside the pool (and ignoring the way that AMMs re-price assets depending on the balance of assets) you are entitled to 10% of 0.3% of $90 = 27 cents. Yikes.
Not great.
Again, this is grossly oversimplified and I suggest diving into the below links as well as doing your own research to better understand the roles that AMMs play and the risk of impermanent loss that comes with providing liquidity.
More on Liquidity Pools by Finematics
More on Impermanent Loss by Finematics
Finematics has a great catalog of videos and articles breaking down DeFi concepts. I cannot recommend their content highly enough.
Uniswap V3 — wyd Hayden?
Historically, liquidity providers create a market across all price ranges. In Uniswap V3, liquidity providers can set a range that they want to provide liquidity within. In the above screenshot, the liquidity provider is accepting a range of 1.114 LINK per ETH to 997.9 LINK per ETH — this is pretty large range. At a current price of 87.822 LINK per ETH, the price can move drastically in either direction and traders can swap within this position in the pool.
This liquidity position has a much tighter range, from 54.044 LINK per ETH to 79.821 LINK per ETH. At a current price of 88.1088 LINK per ETH, we can see that traders will not be swapping in this position. We also see that the entire position is now made up of LINK.
Interestingly, traders do not choose the position that they are swapping within.
Notice that “Get a better price on V2” button? Me too. Let’s come back to that.
My first question, is how does Uniswap V3 determine which liquidity position in the pool to route the swap through?
But before we dive deeper into how Uniswap V3 works, a quick sidebar…
Don’t Sell Your Liquidity Position on OpenSea
In our previous apples and dollars example, our notes represent a fungible claim to a share of the pool. Assuming a 10% share of the pool, it does not matter which 10% of the pool your note gives you claim to. For this reason, liquidity provider tokens have historically been represented by ERC20 tokens.
In Uniswap V3, positions are unique and a unique ERC721 (NFT) is created to represent the position in the pool. We’ve seen a couple cases where it appears someone thought they got a cool NFT for participating in V3 and thought that they could sell the NFT without any impact to their liquidity position.
Or, there are some creative tax strategies going on. Either way, if you are going to sell the ERC721 representing your claim to the liquidity position, please be aware of what you are doing.
Uniswap V2 vs. Uniswap V3
Most of this section comes from this article by Finematics
In Uniswap V2, liquidity providers act similar to our apples and dollars example. Liquidity is provided on both sides of the trade in equal value and as prices fluctuate on either side of the trade, liquidity providers are exposed to impermanent loss and are at the mercy of the market. If apples soar in value, the pool will be left with a pile of dollars — if apples plummet in value, the pool will be left with apples.
In Uniswap V3, liquidity providers have a lot more flexibility with how they want to structure their positions in the pool. If we think back to the fungibility of positions in V2 and compare it to the uniqueness of positions in V3, we can start to try to understand what Hayden is building. The more that I play with V3 on testnets and read about it, the more impressed I am. I will struggle from here on in to try to explain the beauty that is Uniswap V3.
By enabling liquidity providers to set parameters around what ranges they want to provide liquidity within, V3 empowers liquidity providers and allows consideration of impermanent loss to become a part of the strategy, rather than an accepted risk that historically comes with providing liquidity.
Thanks to the ability to create distinct, purposeful positions instead of providing blind, two-sided liquidity users can now enter liquidity positions with a single asset…
This single asset deposit aspect has opened a whole new set of possibilities.
Say that you want to provide liquidity for apples in the $2-$3 range while the current market price is $1, you can supply liquidity into the market without having to initialize your position with dollars. It’s hard to comprehend the various opportunities that this opens. Essentially, you could now take your apples to the market and set a limit sell order between $2 and $3. Beyond getting your preferred price, you will also generate a small trade fee while getting the preferred price for your assets.
Let’s swing back to that trade fee. The standard fee is 30bps, but Uniswap V3 gives the liquidity provider flexibility around the fee they want to set on their positions.
In V3 there are three (coincidence?) options for trade fees:
0.05% suggested for stable pairs
0.3% suggested for most pairs
1.0% suggested for exotic pairs
Again, we see how Uniswap V3 empowers liquidity providers in ways that were not historically possible.
Alright. But what if this is too much and you miss simply supplying liquidity?
Equal assets, 0.3% trade fees, impermanent loss potential to the max, etc.
You can open up the range that you want to supply liquidity to egregious ends and simplify your position. Hayden mentions the importance of having your position aggregated in V3. We can likely expect most trade traffic to flow through V3 so the value in being aggregated in V3 seems worth it.
But…
Beyond your impermanent loss risk you seem to also be missing out on swap fees that will be re-directed to liquidity providers with more narrow positions.
Here is an example from the aforementioned Finematics article…
Essentially, there are opportunities to be strategic about how you deploy your assets into position in Uniswap V3. Failure to take these flexibility parameters into account when creating your liquidity position will result in an inefficient use of your assets.
Tokenized Volatility by Volmex Labs
When using volmex.finance, a user mints two volatility tokens using stablecoins. In this example, we’ll use Ethereum.
A user would deposit 250 DAI to receive 1 ETHV and 1 iETHV. ETHV tracks the volatility of Ethereum and iETHV tracks the inverse volatility. These tokens always combine to be equal to 250 DAI, but as the volatility increases or decreases, the share of the 250 DAI that each is worth fluctuates.
If Ethereum is in a volatile phase, then ETHV will be worth more than half of the 250 DAI. ETHV and iETHV can be redeemed in equal amount for the underlying DAI value (1 and 1 for 250, 0.5 and 0.5 for 125, etc).
In volmex.finance v1, these tokens must be redeemed in equal amounts.
Minting and immediately redeeming doesn’t really do anything except lose us 40bps (10bps when minting, 30 bps when redeeming) on our DAI, so let’s try to find something more interesting to do with our volatility tokens.
The Goal
When I look at tokenized volatility, I see a potential opportunity to accumulate the underlying asset. By using the volatility tokens for purposeful impermanent loss via volatility token liquidation — specifically upon a volatile drop in the underlying token an increased stablecoin position can be created. The stablecoin position could be pulled from the liquidity pool and used to buy the underlying assets.
Initially (and before totally understanding the redeem function), I designed some pretty crazy strategies for volmex.finance v1.
As you can read on the left sidebar, there is a lot going on here. By combining the Volmex, Uniswap, and Compound protocols you can develop a strategy to accumulate Ether. The left sidebar walks through considerations around optimizing thresholds to perform the various actions.
This is too complex for a human to manage — let’s see if we can come up with something manageable to test out the accumulation hypothesis by using volmex.finance v1 and Uniswap V3.
My hypothesis is that an ETHV/USDC liquidity position can be created within a specific range that will allow liquidation of the ETHV position into USDC in high volatility environments. My hope would be that when ETH takes a quick dive, ETHV will rise and traders will swap USDC for ETHV resulting in a position made up 100% of USDC. With ETH at a lower price, the liquidity position can be exited and the USDC can be swapped for ETH.
A Match Made in Heaven
Range bounded assets in liquidity pools turns impermanent loss into a tool.
It took me a bit of time to come to this realization…
As single sided liquidity position provisioning opens an entirely new set of opportunities, so do range bound assets in the context of impermanent loss.
When you subject yourself to the risk of impermanent loss in a traditional liquidity pool with unbounded assets, your loss potential is infinite. It’s like shorting an asset vs. buying it spot. If you buy spot, your risk of loss is range bounded down to 0. As Sam Trabucco said on UpOnly, the worst case is that you lose all of your money.
When you short an asset, your potential loss has infinite upside. There is no cap to the height that an asset can rise to. Impermanent loss in the context of a range bounded asset carries more similar risk to buying spot whereas in the context of an unbounded asset it is more similar to shorting an asset. While you aren’t “losing” a potentially infinite amount of money, you are losing exposure to potential infinite gains.
Since we are placing an asset (ETHV) with a maximum range from 0 to 250 inside a liquidity pool, the highest the ETHV can go is 250 and our maximum exposure to potential lost gains is 250 * ETHV in the position.
As we know that volatility will settle and regress to a mean, we also know that the potential losses are temporary in a sense. Some may even call them impermanent… This is not exactly why impermanent loss is confusingly named this but it’s a good example of why the name is accurate.
It’s hard for me to totally wrap my mind around the potential of these concepts but within the context of the products offered by Volmex Labs, I think that we can start to work towards a realistically operational strategy with minimized risk.
Selecting a Price Range
With the goal in mind, I would want to accumulate USDC throughout the drop of ETH. This means I want to set my price range for ETHV to trade on the positive side of 100, but making the determination around how high to place that is a bit beyond me. There is also a benefit to selecting a somewhat narrow range so that my position is utilized for the swaps. My understanding is that the swap will be routed through the position with the most narrow, matching range.
Initially, I think of a range from 155 to 175.
As I try to work through this scenario, I find the informational text in the Uniswap V3 interface very helpful. Check out Uniswap V3 on a testnet if you want to play with the interface and protocol without having to actually use real funds.
I understand this to mean that once ETHV surpasses 155, my position will start to be utilized in swaps. Once ETHV reaches 175, the entire position will be in the form of a stablecoin.
Historically, liquidity providers must provide both sides of the market. With an ability to do single asset deposits based on a range outside the current price, I am essentially able to set a limit sell order for ETHV. This is even better than I expected when I initially considered this strategy using a maximum range liquidity pool. The caveat here is that revenue generated from swap fees will be quite low as the position will not be used until volatility is extremely high.
I think we have a path forward there though.
If ETH moves up in value quickly, ETHV will rise, but according to my goal I do not wish to exit the position in stablecoins. So if ETH shoots up quickly, I will generate trade fees and hold the position. If ETH drops quickly, I will generate trade fees and exit the position for stablecoins to purchase ETH.
Setting a Data Supported Price Range for ETHV
See Loose Ends below
Pricing ETHV on Uniswap V3 from a range of 155 USDC to 175 USDC was a hunch. But to really understand a good price range, we should look back at market activity and find the dips that we would have wanted to buy.
Theoretically, this allows us to identify the range of volatility that we may expect on future dips that we will want to buy.
I do not have this data handy but it is critical to understand the historical value of the implied volatility near the dips that you want to buy. Once this data is accessible and can be analyzed, a more proper range should be identifiable.
Risks
This video from Andreas M. Antonopoulos covers 5 types of risk in DeFi.
Financial Risk
Counter-party Risk
Contract Risk (Primary and Secondary)
Platform Risk
Compound Risk
I will not go into them in depth in this post — but they are worth understanding. DYOR.
The main concern that has come up for me lies in the financial risk area. As the strategy is using Volmex along with another well known protocol, Uniswap, I can accept the counter-party risk. Assuming that we trust Volmex Labs contracts (they’ve been audited by Certik and Coinspect), I can accept the contract risk. Platform risk as described by Andreas refers to Ethereum ecosystems concerns such as high gas fees that lead to cascading issues — this is worth considering alongside the financial risk.
Compound risk has to do with considering all of these risks in relation to each other and how they may impact each other.
This is not a comprehensive list of risks but I find it a helpful framework to work through when considering how to think about a strategy.
Starting with the platform risk, particularly around high gas fees during turbulent ETH prices, it follows that exiting the position during a dump will be expensive. Over the past couple of weeks, gas prices have been low but it’s fair to say that we should expect DeFi users to lever up again. If that happens, and the market drops then liquidations will follow, borrowers will rush to add collateral and/or exit positions. Gas will spike. Knowing this, we should expect to pay a premium to exit the liquidity position.
This bleeds into financial risk. We understand that exiting the position will decrease margins. But before exiting the position fully in USDC, it needs to be utilized by traders who want to buy ETHV. Who is buying ETHV near its peak?
This risk is mitigated (or not?) by the assumption that there are derivative traders who will always include a volatility tracker in their strategies. I don’t know what their strategies may be, but if they want to buy my ETHV at the maximum end of the range in my position, I am happy to sell it to them.
Loose Ends
There are a few open questions. I’ll list them below and would appreciate any response that can be directed my way. Feel free to find in my in the Volmex discord or on twitter.
Why does Uniswap suggest that V2 may have a better price than V3?
How does Uniswap V3 route swaps through various positions?
Who is buying ETHV near its peak considering it is a bounded asset that will regress?
Who has a comprehensive historical data set of ETH’s implied volatility?
Enjoyed the write up?
Donations & tips are appreciated:
0x581bef12967f06f2ebfcabb7504fa61f0326cd9a