The Fee Switch
Last month Leighton Cusack posted a temperature check on the Uniswap governance forums. The subject? The ever-looming, ever-controversial fee switch.
Today we’re going to talk about what’s going on and why it matters but (most interestingly, imo) we’re also going to take a look at Uniswap pool data and talk through how Alastor would consider testing and tracking the Fee Switch process.
Thanks for reading Alastor! Subscribe for free to receive new posts and support my work.
What is Uniswap?
If you’re familiar with how Uniswap works and what the fee switch is, feel free to skip to the next section.
For the uninitiated: Uniswap is an automated market maker protocol first announced and deployed by Uniswap Labs to the Ethereum mainnet in late 2018 allowing users to swap ERC-20 tokens for ETH and vice-versa. Since that time, Uniswap has gone on to launch v2 of its product which allowed for the swapping of all ERC-20 tokens for one another and then v3 which included flexibility and other upgrades to the liquidity provisioning side of the house, including the introduction of multiple fee tier pools through which trades could get routed, decreasing average fee amounts and increasing volume substantially. Particularly since the launch of v3, Uniswap has become a goliath, wildly outpacing every other decentralized exchange player combined and even beginning to threaten centralized exchange volumes. The daily fees generated via Uniswap will even occasionally surpass those of Ethereum itself.
When considered in layman’s terms, what the Uniswap protocol does is not terribly complicated: anyone who wishes to make a trade of one token for another is able to do so for a small fee calculated as a percentage of their transaction. These trades are enabled by liquidity providers (LPs) who lend their own tokens to Uniswap pools and help facilitate the swaps. As a reward for their services, LPs receive the transaction fees from traders allowing them to hold tokens that they might otherwise hold anyways and make some money doing so. The math behind all of this (particularly in v3) is a lot more complicated, but those are the basics.
Like many on-chain protocols, the Uniswap protocol is governed by holders of the UNI token. What that means (at least as of today) is that UNI holders have the ability to govern the following:
Uniswap treasury usage
Protocol licensing (for the next year)
New LP fee tier pool creation
The turning on/off of a treasury-directed “fee switch” built into the protocol
The concept of a “fee switch” (i.e., the ability for UNI token holders to redirect a portion of trading fees back to the Uniswap treasury rather than LPs) was first conceived in v2. It was a simple, all-or-nothing, one-sixth (16.7%) take of all fees across the entire v2 protocol. LPs would stop getting 30bps of Uniswap volume as fees for their services and instead get 25bps, Uniswap would take the remaining 5bps, and that would be that. v3 introduced new flexibility to this concept. Today, UNI token holders have the ability to turn on a fee switch taking anywhere from 10-25% of total fees on a pool-by-pool basis.
This fee switch has always remained dormant, despite being discussed constantly. From the look of things right now, that seems likely to change.
If you’re familiar with the state of the fee switch proposal and debate in Uniswap governance, feel free to skip to the next section.
The basic rationale for Leighton’s proposal was this: UNI holders shouldn’t be complacent exploring this option simply because they are afraid of what it might do to the platform. Instead, he argued that it would behoove the group to begin the process of gathering data on a limited number of pools and that doing so would also jumpstart the equally-important conversation regarding what the community might actually do with the fees once they begin piling up. Leighton had a couple ideas of which pairs (and which fee tier pools within those pairs) Uniswap should start with but mostly wanted the community to consider and discuss the idea more broadly.
There was a lot of debate but the short story is the Snapshot temp check passed 3.5M to 54 and a couple weeks later the Snapshot consensus check passed 19M to 418 (lol).
The current plan is for UNI holders to vote to turn on fees for three ETH-Stable “sister” pools at different base fee tiers: ETH-DAI (0.05%), ETH-USDT (0.30%), and ETH-USDC (1.00%). After 120 days Leighton is going to put a proposal up to either turn the fee switch off or keep it on and the community will vote again.
To understand the right way to think about the “Fee Switch” problem you first need to frame the discussion in terms of community objectives. If I were a Uniswap token holder (I’m not), I would personally frame my priorities like this:
Protect and grow trading volume
Protect and grow liquidity (read: TVL)
All of these things are, of course, very interrelated. Uniswap isn’t exactly a two-sided marketplace but you can simplistically think of it as one. Trading volume might be the “most important” thing but it cannot exist without the liquidity that LPs provide. Without liquidity I can’t create a market, and the more liquidity I have the more efficiently (and cheaply) I can service trading needs and entice volume to my platform. In turn, the more volume I attract the better returns a given LP will get for his/her provided liquidity. Uniswap has managed to create an incredibly productive virtuous cycle for LPs and traders and the potential disruption of this cycle is the primary reason there has been reticence to attempt value accrual via the fee switch.
The fee switch value doesn’t affect my traders or my volume, at least not directly. Like I said before, the switch built into the protocol is simply a redirection of a portion of LP fees to the Uniswap treasury in a given pool. The fear should (rightly) be around the potential negative cycle created from value accrual: Fee switch on → fewer fees for LPs → less liquidity in a given pool → increased slippage in a given pool → lower volume routed to the platform → fewer fees for LPs → etc. etc. etc.
…but will the LPs leave in the first place? If an LP is currently expecting to make, let’s say, 10% APY for their troubles (fee returns less impermanent loss) and I turn on a fee switch and those returns become 6%, well that might be enough for them to take their ball and go home. Worse, it may be enough for them to take their ball and go to Sushi, Shiba, Balancer, Curve, or any other number of AMM competitors. If that same LP’s expected APY is actually 30% and my take has dropped that figure down to 25%, well he or she might grumble about it but that’s still a great return, especially relative to the other AMMs out there who don’t have nearly the platform volume or position flexibility that Uniswap v3 does. Understanding the flow of liquidity is all about understanding returns and benchmarking them against opportunity cost. That’s the name of the game as far as LPs are concerned.
All this being said, the primary question that many in the community are asking is an important one: is value accrual worth the risk? Any amount of volume lost to competitors is an objectively bad outcome for a protocol that should very much still be focused on market share and growth. Given that fact, there are only two questions UNI token holders should consider when thinking about value accrual via the fee switch: what is the likelihood that the protocol will lose liquidity in a given pool and if it does, where is that liquidity likely to go?
The Pool Data
To conduct this thought experiment I pulled 7 days worth of Uniswap v3 Ethereum pool data ending 8/5 (when I first started messing around with this idea) and began to look at different pairs, comparing them first to each other and eventually to other AMMs. Before we dive in it is important to note that while this data set is useful and illustrative, because it is only a 7-day sample size it is not necessarily representative. If I were to do this for real I would pull this same data for each pool for every 24-hour period for the last year, calculate all this same stuff and weighted-average my findings over time to find the “right” numbers to inform the process. I would probably also mess around with the concept of running this same exercise at various ticks. That said, this is just a framework so a less cumbersome data pull will do just fine for our purposes.
This is a sample of the data to consider when thinking about enabling a fee switch for a given pool. I know this looks like a giant wall of numbers but the stuff here is actually pretty simple: the ETH/USDC trading pair on Uni v3 has multiple fee tier pools (5bps, 30bps, 100bps) and within those pools there is a given Volume (driven by traders) and TVL/Liquidity (driven by LPs). The volume multiplied by the fee tier equates to the fees extracted; these fees are distributed pro rata to the LPs providing liquidity in those pools at the $ value of the given trade. Note that we are viewing these pools at an aggregate level. The volume, liquidity, fees, turnover, returns, etc. all vary within each pool at the tick level because of the v3-introduced concept of concentrated liquidity. Ultimately being an LP on v3 is a zero sum game, some LPs are gobbling up a ton of these fees while others are getting rekt, depending on their respective positions.
Below the raw statistics are some Alastor-created KPIs that we believe would need to be considered when making a fee switch decision and tracking the consequences of that decision. From a trade volume-perspective it’s important to consider the sizes of trades we’re dealing with and the amount our liquidity is turning over and being utilized over a given period of time. Neither of these things exactly estimate total trade slippage but they can inform us of TVL utilization and slippage “risk.” You’ll note that the 5bps pool has a ton more turnover than the higher fee pools, there’s a few different reasons for this but the primary reason is that trades within that pool can absorb a higher degree of slippage before the aggregator or Uniswap itself will re-route some portion of that trade to another pool. Take a look at the below screenshot for an example of how this works in the context of a large trade done via the Uniswap interface.
The second group of KPIs are LP-focused. As I said before, you can pretty safely assume that LPs care about returns and not a whole lot else. Again, at an aggregate level we’ve calculated a few different APYs based on TVL today and fees generated over the last seven days. Row 1 is the returns if there were no price change (read: no impermanent loss) whatsoever and Row 3 is the returns if the the entire pool were to be adjusted for impermanent loss assuming either a 100% price jump or 50% price decrease in ETH at the default Uniswap v3 LP settings (-50%/+100% price bounds). Rows 2 and 4 are the same calculations as the rows above them, just with the lowest possible fee switch level (10%) layered on top.
There are a number of different ways to cut up and think about this data but at the very base level the way I would think about approaching this problem would be around benchmarking average historical LP returns in a given pool (which would most likely be what informs expected future returns), benchmark these returns against other pools with the same assets, and then talk through what would likely happen in each case given what we know about the various pools.
The first pool in the currently suggested list is the 100bps ETH/USDC pool. The smallest, lowest returns pool of the pairing. Below you can see a simplified benchmarking against other AMMs over this given period so we can begin to talk through the consequences of this particular move. Note that all other AMMs offer flat liquidity across their pools, meaning their fees are split pro-rata across their TVL base and their impermanent loss is muted relative to Uni v3 pools (depending on the position taken). The TL;DR is this assumes Uniswap v3 LPs take ~3.5x the impermanent loss against their fees gained versus other platforms in 100% price gain / 50% price drop scenario. Go read my footnoteif you care for a deeper explanation.
If the 7-day sample size we took is any indication, the 100bps pool does not do well relative to competition in terms of expected returns. This is counterintuitive given it’s the highest fee tier of the bunch but the volume relative to TVL sitting in the pool + the more punitive impermanent loss leave it… somewhat undesirable, at least if I were an LP.
Would we lose liquidity? Yeah, probably - we arguably should be losing more liquidity than currently sits there already. Where will the liquidity go? Probably back to our own pools, but at a cheaper base rate - but of course there is no guarantee of that given there are other options with solid returns. Ultimately I would call this a fine option, but not bulletproof. On one hand it is a low-stakes pool (i.e., low volume) and the liquidity flow would likely stay on-platform and increase liquidity in lower fee-tier pools, which is a good thing for trade volume. On the other hand the low amount of volume (~30th across the platform) makes one wonder if this is a meaningful pool to look at and returns for LPs are already quite low. I would say this is a totally fine pool to experiment on, but it wouldn’t be my first choice, if you really want to experiment on a 100bps pool I would go for ETH/BTC, personally. Higher volume, higher returns given Volume/TVL relative to asset correlation, and a pairing that could use some TVL redistribution towards lower fee tiers. Verdict: Inconclusive. 6/10.
The second pool on the community suggestion list is the 30bps ETH/USDT pool. This is my favorite idea of the bunch… and it isn’t particularly close. TVL is relatively high and arguably over-distributed towards the 30bps pool, leading a lot more volume to land there rather than in the 5bps pool (in stark contrast to the ETH/USDC pairing). These LPs, comparatively speaking, do quite well for themselves - especially when you consider how poor the expected returns on other platforms were in this given period.
This particular pairing and suggestion offers us some fantastic insight into how powerful the fee switch can actually be for the UNI community. I pretty firmly believe that taking returns from this fee tier would either result in A. no TVL movement at all or B. TVL movement towards the 5bps fee tier. Both outcomes are wildly positive for the UNI community. If nothing happens? Great, we’ve layered on our value accrual objective without incident. If 30bps LPs move to the 5bps tier? Even better, we can now service more volume at the lowest fee tier in all of DeFi, which should drive ETH/USDT volumes up as we take more aggregator and smart-money order flow. This should, in turn, drive LP returns up even further in the 5bps pool. It’s not quite a win-win-win but about as close as one can achieve and ultimately satisfies the top objective of UNI token holders by protecting and possibly even growing volumes. ETH-USDT is the single biggest ETH pairing in the world by a country-mile (mostly done on Binance, who has a 10bps default fee on trades), that’s order flow Uniswap can and should be targeting. Verdict: No-Brainer. 10/10.
The last pair currently being considered and my least favorite of the group: ETH/DAI 0.05%. I haven’t really seen or heard a good explanation for why this group is on the list but if I were to guess I would venture that in the name of experimentation we should see what happens to a pairing when we take from the smallest fee tier. I personally wouldn’t choose this one, I would much rather use ETH/APE or USDC/FRAX, something with enough volume to matter but in a case where the implied returns in the lowest tier bucket are already outpacing higher fee tiers. With that said - I would not, under any circumstances, use ETH/USDC until testing on other pools has been done given >50% of Uniswap’s volume is serviced out of that 5bps pool.
I’m not a fortune teller but I can tell you what’s being incentivized when you do something like this. ETH/DAI returns are terrible in the 5bps pool already, the worst of any of the 5bps pools we’ve looked at so far in the given period. Volume and TVL is always a bit of a chicken and egg issue, but there’s so little liquidity in this pool relative to others which will naturally lead to low turnover, low volume, etc. All of the volume and liquidity in this pairing are concentrated in the 30bps tier, much like ETH/USDT. That’s what gets you graphs like the below.
Why you would incentivize the worst liquidity distribution of the three pairs we’ve looked at (only 12% TVL in your lowest fee tier) to get even more lopsided is beyond me. Even in the name of experimentation this is almost certainly a bad idea. Your #1 objective should be to protect and grow volumes, this is a nearly surefire way to redirect them off your platform. Verdict: Probably A Bad Idea . 2/10
Hint: Uniswap should be focused on incentivizing liquidity to shift from higher fee tiers to lower fee tiers…
Base Fees Across Exchanges
…to focus on taking exchange market share
Statement of the obvious but all these opinions are just opinions, it’s impossible to perfectly predict behavior and if you think people are always going to act rationally you’re fooling yourself. Probably the most important part of this theoretical experiment wouldn’t actually be the initial pools chosen, but instead the tracking and analyzing of these and other pools during the course of the process.
There are a lot of things to look at but on an aggregate pool level the bare minimum would need to include:
Liquidity / TVL
Maximum, Median, and Avg. Trade Size
Trailing Weekly Turnover
Aggregate Approx. APY (sensitized for various ETH price changes)
Avg. $ Fee per $ Volume
Pairing Volume Distribution (by fee tier)
Pairing TVL Distribution (by fee tier)
Liquidity Market Share (per pairing)
Volume Market Share (per pairing)
The raw data (trades, volume, fees, TVL) gives you the tools you need to measure and benchmark your results looking at various potential APY expectations and liquidity turnover but market share trends is likely the most important thing to consider when measuring consequences. Raw volume and liquidity movements are useful but without the context of the broader market they are fairly flawed.
The #1 indicator to consider, from my perspective, over the course of this process would be how this affects trading volume market share. There are other things that matter, certainly, but nothing matters nearly as much. Not at this stage of the protocol’s lifecycle.
To reiterate - the above is just a framework. This data set is likely imperfect and potentially not representative of reality, it would take a bit of an exercise to do this properly, but it certainly could be done. This is a perfect example of how blockchain data can and should be utilized to inform strategic decision-making. One of the (many) amazing things about the blockchain is that all of the data you need to operationally problem-solve exists, as long as you have the right frameworks to cut it up, benchmark it, and analyze it. Here’s to hoping Uniswap and other on-chain organizations begin to leverage these types of processes and analyses to inform their communities and drive decision-making.
Just to be clear: I use the term “fee switch” throughout because everyone uses it. It’s a pretty misleading nickname given it’s actually just a redirection of existing fees.
Our benchmarking data assumes impermanent loss in a +100% or -50% price change to ETH scenario where Uniswap v3 LPs have taken the default (-50%/+100%) price bound settings. This effectively assumes all LPs have the same price bounds and thus share in equal parts impermanent loss and equal parts of the fees. This is nonsense in practice but again when looking at things on a zero-sum, aggregate level is still instructive. Go read this medium post if you’re interested in understanding more about v3 impermanent loss relative to v2 and other AMM pools.
fantastic piece, but im still unsure of how much the fee switch would generate in each of the pools described? and what it would be annnualised and projected over the next few years?