Should you act as liquidity provider in DeFi?
DeFi (for Decentralized Finance) platforms are developing extremely fast since at least one year. It’s sometimes hard to follow every new interesting tools available and even more to understand how to use them and for what. DEX (decentralized exchanges), especially the one working with liquidity pools instead of an order book, offer brand new possibilities never seen on cryptocurrency centralized exchanges and even less in traditional finance, or at least, not with the same accessibility to anyone on the planet.
Some of these DeFi services are complex to understand and so to use as well but the most popular DEX like Uniswap, SushiSwap or 1Inch offer simple GUI (graphical user interface) and UX (user experience) that allow with only a limited time investment to get understood and used by most cryptocurrency users. First we should maybe recap the differences between an exchange based on order book and one with liquidity pools.
Order book based exchange
Most centralized exchanges for cryptocurrencies (Bitstamp, Kraken, Coinbase,…) as well as traditional finance exchanges (accessible by any stock and ETF broker) work with order books. When you want to buy something on the market, you place an order in the order book, saying that you are willing to buy/sell x amount per coin or share for a given number of coin or share. Then you wait that someone accepted your order and fulfill it fully or partially. This mean that your USD/EUR/CHF/BTC are sent to the other party account and you get the coin/token/share/ETF your requested in exchange. Of course you don’t have to add your offer in the order book if there are already enough offers at the price you are willing to pay in the order book. Then you can place a market order that will buy you the coin/share (whatever you want to buy, you get it) at the best possible price according to the offers in the order book. Of course it’s a simplification and you have often much more complex tools and parameters (if you are willing to use them) in order to buy and sell under specific conditions.
Liquidity pool based exchange
This new kind of exchanges introduced by DeFi offer a brand new way to buy and sell without any centralized actor to coordinate the exchanges between users. You have on one side the liquidity providers, that place in a liquidity pool a pair of assets and on the other side the users that swap one asset for another withing a chosen pool. Of course this happens entirely on the blockchain so it works only with cryptocurrencies or more specifically with tokens from the same blockchain. You will also find what is called layer 2 networks, with exchanges that are based on a separate layer or even a separate blockchain (or kind of) and only settle down “from time to time” on the main (layer 1) blockchain, typically the Ethereum blockchain. For the sake of not making it even more complicated I will not go in detail about these solutions in this article but just mention it at the end.
Let’s say a user want to swap (exchange) some Ethereum for a stable coin like USDC (which value is pegged to the USD). The user will send some token, let’s say 1.5ETH (you can have fraction of token on Ethereum like most cryptocurrencies), it will add 1.5ETH to the pool minus a fee defined by the pool (1%, 0.3% or 0.05%) that is distributed in proportion to the among hold by each liquidity provider in the pool, then the equivalent value in USDC at current rate is send to the user and thus removed from the pool. That’s what is called a swap, one token is swap by another and it’s directly triggered by the user that request a swap, liquidity providers have no choice than to accept it. In fact, the liquidity provider don’t have and cannot do anything while they are in the pool, except at any point choose to remove all funds they have left in the pool (called remove liquidity or close position for a complete removal). After the operation each liquidity provider in the pool will have a little bit more ETH (1.5ETH divide by the total among of ETH in the pool multiply by the among of ETH that the liquidity provider hold in the pool at the time the swap occurred), to balance this, each liquidity provider will get a little less USDC (calculated exactly in the other way around). On top of the swap they will also each get a tiny bit of the fee charged to the user for the swap and it will be added to their fee balance that will not be added to the pool in Uniswap V3 (other DEX might choose to add it to the pool automatically but it’s not the case on Uniswap). If a swap occur in the other direction, it’s the exact opposite but with fee charged in the other token, here USDC. After some times the liquidity provider will have a different value of ETH and USDC in the pool, that will also change in total value according to the current market value of the coins. On top of that they will have 2 balances, one for each token, with the total of all the fee accumulated with the swaps done in the pool.
By providing liquidity in a pool, a provider earn some fee that always grow up of course (when people sell ETH for USDC all the provider in the pool earn fee in ETH and when they buy ETH with USDC they earn fee in USDC) but you also always change the ratio of your coins hold in the pool. And in fact, mathematically, the liquidity provider will always end up with more of the coin that has less value and less of the coin that get more value. With a classic pool, like on Uniswap V2, at the extreme, if one coin is worth 0, you will end up with only this coin and you would have loose all your money by holding a worthless coin. If you provide ETH vs USDC, hopefully (or at least not too soon) the USDC will never have a value of zero, but ETH could increase so much that you end up with mostly USDC and almost stop making money in the pool. That’s why you have to pickup carefully which coin you are willing to add to a pool. In general you will always end up with less money than if you simply hold ETH or USDC unless the price of ETH come back to the exact same among when you enter in the pool and you time your exit exactly with the same quantity of each coin while keeping all the fee earn in between. If you deduce the gas fee you have to pay to transact on the Ethereum network, you have very few chance to make any money, unless you engage a huge value in the pool and are very lucky to stay a long time in a oscillating market and manage to exit close to your entry point in value.
Uniswap V3 offer new possibility in DEX
Uniswap V3 change the game in DEX by providing more control in the way you provide liquidity. With V3, you can set a high and a low limit in which you provide liquidity in the pool. If one of the coin, let’s say ETH, goes down in price below your lower limit, you will end up with 100% of ETH and stop buying more of it below this limit (you have not more USDC to buy more anyway). And once ETH reach your higher limit, you will have only USDC. In other words, it’s a bit like if you would have sold small part of your ETH on the way up but then immediately buy back each time it goes down and sell back again when it goes up again. And as a bonus you make extra money on the fee taken for the service you do by providing liquidity to users that want to swap between two coins. With this method you could define a lower limit above which you are comfortable to buy back the coin and a higher limit above which you would like to have sold all of them. You could do the other way around if you try to buy in a bear market but so far cryptocurrencies have always been bullish in the long term and reversing the strategy would be like shorting the coin (betting that it will goes down in value) which many have experience significant loses in the past. If you are investing in cryptocurrencies in the first place I would consider that you believe they still have a lot of potential to growth and are willing to hold into them in mid or long term whatever time it takes to reach your target or at least to come back at your entry point. You also have to take the risk that you might never reach your target and even maybe never come back to the level of your entry point. Never put more in a liquidity pool or in cryptocurrency in general than what you can afford to loose.
So how much extra money can I make with this strategy?
Well, it depends. If you look at some Uniswap V3 fee calculator it looks like you could reach double digit of average annual return. Of course the calculator has a lot of parameters and conditions that will never guarantee anything in long term, it’s just hypothetical gain in given conditions based on historical data.
In 5 months I had a return of 91% vs holding the money in USD
As I wanted to figure out by a practical case, I tried the experiment for about 5 months now. My target was to end up with only USDC (which value is stable to 1 USD) when ETH would have reach 5000 USD, which still didn’t happen to this day (ETH is around 4500 USD at the time I write this, please note that price might change until I publish the article and until you read it, all figures given here are based on this ETH value). In 5 months I had a return of 91% vs holding the money in USD! Which would end up (if it continues at the same pace on average) with an annual percentage yield (APY) of 233%! “Wow Eluc, you are such a genius, I will run to add liquidity to every pools around.” If it’s what came to your mind, I’m sorry but I have to stop you right here. You got blinded by the figures and forget to take into account the whole picture. What would have been the other options instead of providing the liquidity in this pool? Obviously the first thing to do when investing in cryptocurrency is to hold them as long as possible. So during the same period if I would have hold the star of cryptocurrency, Bitcoin, I would have made a 79% return, not as good at the pool but with much less of a hassle and less risk than doing all this liquidity provider stuff. And what if I would have hold onto ETH instead, the number two cryptocurrency and the base coins used for most DeFi platform. This time I would have made a 147% return, significantly more than by doing liquidity provider and again with less hassle and less risk.
So why should I bother to provide liquidity in a pool if I can make almost as more if not much more by just holding BTC and ETH? Because I don’t know what the price will be in the future. In this case ETH increase a lot but it could have not been the case in this same period. All I know is that I’m OK to hold into a certain among of ETH (or other coin) until it reach a value, then I feel it’s time to sell (at least some part of it) to take profit. I could have placed limit sell at 5000 USD and just wait for all of it to be sold at this price and make maximum profit. I could have stay more conservative and sell some of my stack of ETH each time it increase by a given percentage (automatically or manually). But maybe it will reach the value only in a very long time, especially if you don’t enter right at the bottom or in the middle of a bull market (you cannot and should not try to time the market). And during all the time between your entry point to your exit point, the price will likely oscillate between the 2 limits, and so each time it increases, people swap between your ETH and USDC within the pool, leaving you some fee on the way up, and the same while price decrease, you earn a fee anyway as you provide either ETH or USDC. If you set the lower limit not low enough, as you should not set it lower than the price you are willing to buy back some ETH, you might find yourself out of range and keeping the position open would not earn you any additional fee. You keep every fee you earn before of course, in Uniswap it’s not reinvested in the pool automatically, other DEX does that be careful to read and understood exactly what the smart-contract will do.
By providing liquidity in a Uniswap V3 pool, you can simulate a regular sell and buy back between two limits of your choice. You buy more ETH each time the price goes down up to your lower limit and you sell ETH each time the price goes up until you reach you higher limit. And during all the time the price oscillate in between your two limits you earn some precious fee while doing absolutely nothing, you can completely forget about it and never check the position you hold in the pool, you don’t even have to connect your wallet unless you want to cash out or add more liquidity to the pool (which will result in a second position created independently of the first one in Uniswap V3).
But the best is that you have another option, if you figure out it’s too long to reach you target price or maybe the price went back to your entry point or even lower, you always have the fee earn along the way that will have increase your total of ETH and USD (plus/minus the difference of your initial total of each coin between the time of entry and the time of exit). So at the end, either you have more money than if you have sold only if the price goes up, more money if you decide to stop before your target is reach or if price come back to original but less money than waiting until the higher target is reach and sold all at once. It’s a risk vs. benefit that everyone should evaluate.
Now there is other things to take into account while providing liquidity to a DEX. At the time I opened my position, I could manage to set an alert for a low gas fee (the service I used for this had closed but a new one will do the job with email alert: ethgas.watch) and I did spend about 20USD of fee in ETH (value at the time of opening) to pay for the transaction on the Ethereum network. But in between an update was made in Ethereum, EIP-1559 (click the link if you want to learn more) that is bullish for Ethereum as fee are now burned, reducing the emission of new ETH on the network but it has a side effect to push gas price even higher, while ETH had also increase in value and it’s now impossible to open or close position on Uniswap V3 with less than 100$ if not several hundreds of dollar of fee to be paid to the network. This make this strategy profitable only if you invest really a lot of money (tens of thousand of USD at once if not hundred thousand) otherwise you risk to have to pay more than what you earn to exit your position in the future. Of course some miracle could happen and newer update or move to ETH2.0 with proof of stake, would reduce again drastically the gas fee on the network but I would not count on it for any future strategy at the moment.
Another option is to do provide liquidity on a layer 2 network of Ethereum, they are many, some taking momentum like Arbritrum or Optimism, but it’s still very experimental and even more riskier than providing liquidity on the main Ethereum network with a DEX. Also you still have a significant fee to transfer your token to the second layer, and you still have some fee to pay on the second layer, maybe 10-20x less but it could still cost you 10-15$ to open/close a position on Arbritrum, making the total cost in fee quite similar if not more unless you interact a lot on layer 2 before coming back to layer 1. You should also note that most layer 2 have a safety waiting time to transfer back the coins to layer 1 (Ethereum mainnet), it can vary from a few hours to a week.
Finally from a fiscal point of view acting as liquidity provider might increase your taxes. It’s not clear for me at this point and not documented officially but it might be that all fee earn while being a liquidity provider would have to be taxed no more as capital gain (not taxed in Switzerland) but as source of income (strongly taxed). I’m still trying to clarify if it’s the case as a private occasional investor, but if it’s the case, there is practically no way to make this profitable versus simply selling on an exchange as long as you don’t do too much trade to be considered as a professional trader, otherwise you might be taxed on the gain as a professional income even if the definition of “too much trade” is not always clear either depending on your tax authority.
To conclude, acting as liquidity provider might be a very interesting solution to play with smart-contracts and DeFi, it could allow you to have a set and forget strategy that earn you money in some situation but not as much as simply holding your coin in purely bullish market. Of course if you have a very high confident that a coin will reach you sell target at some point you might avoid this technique and earn more by just holding while taking less risk related to smart-contracts. In other words, it’s not a good strategy if you plan to hold on your coin for a certain, long, period of time no matter what happen. Up to you to balance the risks and benefits of each solution based on these information. Personally I don’t think it’s the best strategy for my targets but I did it with a small percentage of my portfolio in order to play with DeFi platforms as I think that it is going to revolutionize finance in the future and I like to be a part of it and have some basic experience with it. If you are interested in DeFi as well, I can only encourage you to test and play with some well recognized platform at least as an educational purpose, always with fund that you can afford to loose.
If you like this post, want to add or correct something to it, feel free to leave a comment below.
Also be sure to subscribe by RSS and follow @eluc on Mastodon or @ElucTheG33k on Twitter to not miss any future post.
Disclaimer I’m not a financial advisor, nor a professional in any kind of industry link to finance, cryptocurrencies nor tax legislation. I’m just giving my personal opinion and life advise about topics that I like and experiment by myself on my free time. My articles could always have mistakes, inaccuracies or lead to misunderstanding of a more complex topic. I cannot by any mean be liable for any loss or issue you could have by following any strategy or using any app or product that I mention in my articles. Using any kind of investment product, cryptocurrencies, smart-contracts, app or tool always come with a certain risk. Before engaging your data, time and money in any activities, always do you due diligence and get informed by yourself about the implications and risks.
Affiliate links Some links in my articles can be affiliate links, usually I mention it explicitly. This mean that if you use the link to a shop or service and then buy the product or subscribe to the service offered, I will get a small commission on your purchase. For you it doesn’t cost anything more and in some case it’s also linked to a promotion where you can get a small discount as well, I try to write it clearly if it’s the case.
If you use the link and buy something there, I will know that someone did but I will not know anything about this person. If you don’t agree to use the affiliate link please visit the website of the shop or service by yourself, for example using a search engine without using an ads at the top of the results of course. If you agree to use them and make a purchase, thanks for the small support.
When I decide to place an affiliate link for a product or service, it’s not because I will maybe get some money from the affiliation but because I truly believe in the product/service and I’m using it myself. I will recommend the same way a product or service that doesn’t offer affiliation and will never give the advantage or highlight one product/service just because it offers an affiliation or because the commission offered is higher, but I hope it’s reflected well in my article.