With the explosion in popularity of decentralized finance (DeFi) in the crypto space, investors interacting with DeFi protocols have come across a whole host of innovative financial products. One foundational product that has been created as the result of DeFi are liquidity pools (LPs) and their associated tokens (LP tokens). Liquidity pools form the backbone of many DeFi protocols, enabling token swaps , borrowing and lending protocols, yield farming and aggregators, on-chain liquidity insurance and many other products.
What is a liquidity pool?
A liquidity pool is essential a group of tokens locked into a smart contract and enable decentralized token swaps, lending, borrowing, and other activities, all on-chain. Each liquidity pool will have a specific composition of assets (usually 2-3 specific tokens) where the amount of Token A + Token B = 'LP AB', and liquidity providers much deposit equal proportions of each token to enter the pool. Liquidity pools form the backbone of decentralized exchanges (DEXes) such as Uniswap, Pancakeswap and Raydium.
Unlike a centralized exchange, DEXes do not use an order book to create the market price. When you place a buy order on the exchange, you choose the price you want to purchase the asset for, and when that order gets filled, there was a seller on the other side who placed an order and was happy to sell you the asset at the same price. Instead, automated market makers (AMMs) govern the liquidity pools in DeFi, and algorithmically balance the pools to determine the price.
Using an example, let's take a theoretical liquidity pool on Uniswap that consists of 100,000 ETH and 10,000 WBTC. This would be a ETHWBTC LP. This gives an initial price ratio of 1 ETH : 0.1 WBTC. Let's say that the price of ETH on some major exchanges, such as Binance and Coinbase, starts to fall below this ratio, down to 1 ETH : 0.09WBTC. There is now an arbitrage opportunity between the centralized exchanges and the Uniswap pool. ETH would be purchased from the centralized exchanges and sold to the pool for an immediate profit. This selling would rebalance the pool, adding ETH and removing WBTC until an equilibrium was reached between the centralized exchange price and the pool price, meaning arbitrage would no longer be profitable. In practice, this happens constantly and is why the price of assets is generally very similar to the prices on large exchanges.
The problem that the constant rebalancing causes for liquidity providers is a concept called impermanent loss (IL). IL occurs when one of the assets in the pool appreciates against the other. In the example above, where WBTC has appreciated against ETH, the liquidity providers of this pool have essentially lost some WBTC exposure as the arbitragers have removed WBTC from the pool and added ETH. The loss is 'impermanent', as it may return to the same allocation of assets if the price returns to the same proportion as when the liquidity provider entered the pool.
To compensate liquidity providers for taking the risk of IL, traders who make trades using the pool must pay a trade fee, which gets allocated to the liquidity providers. The more trades that get made, the higher the return is in % terms for liquidity providers.
The Process of Providing Liquidity
If you have decided you want to participate in this innovative new financial product, and take the risk of impermanence loss in exchange for the chance of returns from trading fees, you will have to go through the process of providing liquidity.
The first step is to decide what pool you want to join. This will mainly be factored by what tokens you own, and are willing to pool for a return. Examples of common pools are: ETH/USDC, ETH/WBTC, ETH/DAI etc
The second step is to decide what platform you want to trust with your tokens. Certain platforms are more battle-tested than others, and have possibly had their code audited for bugs or flaws. Some pools may have incentive schemes to entice you to join the pool, especially if the pool is new. It is important to note that your funds are only as safe as the contract you deposit them into. Brand new protocols will generally be more risky than larger, well-known, audited ones! However, there is a risk with any DeFi protocol, so think carefully before deciding to join a LP.
The third step is to provide the liquidity using your web3 wallet, such as Metamask. The pool will require you to deposit set proportions of each token at the time of deposit, e.g. 1 ETH : 5000 USDC for the ETH/USDC Uniswap pool. In return, you receive a proportional amount of LP tokens associated to that pool. These tokens represent your stake of the pool.
The last step is when you want to redeem your LP token, and withdraw your funds from the pool. In the redeeming process, you essentially exchange the LP token back to the pool in return for your stake (plus your share of the fees that were generated over that time period). If no impermanent loss has occurred, you will walk away with the same amount of each token as you deposited. If there has been some IL, you may receive different proportions of the tokens you first deposited.
Categorising Liquidity Provision on CryptoTaxCalculator
The process of providing liquidity, and the resultant LP tokens and their properties are a grey area in most tax jurisdictions. It is important that you discuss these transactions in-depth with your personal accountant so they can take into consideration your personal situation, and how these transactions may affect your tax obligations.
When you deposit your tokens into the pool, effectively you are 'disposing' of the tokens (relinquishing control of them) and receiving an LP token, with substantially different properties, in return.
From the guidelines we have received, our platform categorizes this initial deposit into the pool as 'Add Liquidity' which has the tax consequences of a disposal event. The receipt of the LP token is categorized as a 'Receive LP Token' which has the tax consequences of a 'buy' with the cost basis derived from the proceeds of the prior 'sell'. This creates a taxable event on our platform, where you may realize capital gains from the 'sell' of the deposited tokens. This can be seen in the example below where WETH and DPX have been deposited into a liquidity pool on Sushiswap (Arbitrum):
You can see the deposit of each asset, WETH and DPX have been categorized as 'Sell' and have an associated capital gain/loss. This is then immediately followed by the buy of the Sushiswap Liquidity Pool (SLP) Token, which is assigned the value equal to the value of the two deposited tokens.
The redemption of the LP token works in the reverse process, with the LP token being categorized as a 'Send LP Token' which is treated as disposal and the deposited tokens (plus generated fees/yield) being received are categorized as a 'Remove Liquidity', which is the same as a 'buy', using the proceeds of the LP token. If the LP position has changed in value between the initial deposit and the final withdrawal, this will be classified as a taxable event on our platform. This can be seen again in the example where WETH and DPX has been withdrawn from the same liquidity pool on Sushiswap (Arbitrum):
You can see the 'Send LP Token' (treated like a disposal hence the capital loss) of the Sushiswap LP token, which is assigned a value equal to the value of the two deposited tokens. This is then immediately followed by the withdrawal of each asset, WETH and DPX have been categorized as 'Remove Liquidity' and have an associated capital gain/loss.
As mentioned before, liquidity deposits are a grey area in most tax jurisdictions. CryptoTaxCalculator uses the method outlined above, where each step of the liquidity provision is a taxable event. This ensures our users are best positioned for future clarification of these complex transactions. If this is to be clarified as a chain of taxable events in the future (as the platform accounts for) users will be positioned correctly in terms of their tax obligations. If we were to take the stance that this was not a chain of taxable events, and future clarification went against this assumption, many of our users would be impacted and have unfulfilled tax obligations. Again, it is very important you clarify this process of events with your accountant to ensure your taxable obligations are fulfilled in your particular personal circumstance.
LP Token Value
As there are millions of different liquidity pools, each with their own unique LP token associated, and with their own unique pool characteristics, it is not always possible for us to assign a market value to your LP token at this point in time. Each LP token will change value every single time a trade is executed in the liquidity pool, or when liquidity is added or removed, and thus, the proportion of the pool that the LP token represents is ever-changing.
This explains why it is currently difficult to assign a correct market value to your LP token. The LP token will be assigned the value of the deposited tokens at the time of deposit, and will only receive a new value at the time of withdrawal, equal to the value of the withdrawn tokens at that time. This is how capital gains and losses are accounted for, but may result in incorrect 'holdings value' on the dashboard whilst you have this LP token in your possession.
For more details on handling the LP transactions, see here: