Liquidity Pools Explained: What Happens When You 'Provide Liquidity'
"200% APY! Just provide liquidity to our ETH/USDC pool!"
Sounds amazing. But what does "providing liquidity" actually mean?
You're about to:
- Deposit two tokens you own
- Receive a weird "LP token" you've never heard of
- Somehow earn fees from other people's trades
- Hope you end up with more money than you started with
And there's this thing called "impermanent loss" that everyone warns about but no one explains clearly.
This is your guide to liquidity pools (LPs): how they work, how you make money, what the risks are, and β critically β how they're taxed.
The Problem LPs Solve: How Do DEXs Work Without Order Books?
Traditional Exchanges (Centralized)
On Coinbase or Kraken:
- Order book model: Buyers and sellers post limit orders
- Matching engine: Exchange matches buy orders with sell orders
- Centralized: The exchange controls everything
Example:
Buy Orders:
- Buy 1 ETH @ $1,990
- Buy 1 ETH @ $1,985
- Buy 1 ETH @ $1,980
Sell Orders:
- Sell 1 ETH @ $2,010
- Sell 1 ETH @ $2,015
- Sell 1 ETH @ $2,020
Spread: $20 ($2,010 - $1,990)
When someone market-buys ETH, they get matched with the lowest sell order.
This requires:
- Centralized matching engine
- Custody of user funds
- Market makers to provide liquidity
Decentralized Exchanges (Uniswap, Curve, etc.)
Problem: No centralized matching engine. No custody. Who provides liquidity?
Solution: Liquidity pools.
Instead of order books, DEXs use pools of tokens that anyone can trade against.
How Liquidity Pools Work (The AMM Model)
AMM = Automated Market Maker
The Basic Concept
Imagine a pool with two tokens:
- 1,000 ETH
- 2,000,000 USDC
Total value: 1,000 ETH Γ $2,000 = $2,000,000 + $2,000,000 USDC = $4 million
Anyone can trade against this pool:
- Want to buy ETH? β Send USDC to pool, receive ETH
- Want to buy USDC? β Send ETH to pool, receive USDC
The pool automatically prices trades using a formula.
The Constant Product Formula (x Γ y = k)
Uniswap uses this simple rule:
ETH amount Γ USDC amount = constant (k)
Before trade:
1,000 ETH Γ 2,000,000 USDC = 2,000,000,000 (k)
Someone buys 10 ETH:
How much USDC do they pay?
New ETH balance: 1,000 - 10 = 990 ETH
To keep k constant:
990 Γ new USDC balance = 2,000,000,000
new USDC balance = 2,020,202 USDC
USDC paid: 2,020,202 - 2,000,000 = 20,202 USDC
Effective price: 20,202 / 10 = $2,020 per ETH
After trade:
990 ETH Γ 2,020,202 USDC = 2,000,000,000 (k still constant)
[Visual suggestion: Diagram showing pool before/after trade with formula]
Price Impact
Notice the buyer paid $2,020 per ETH, but the pool started at $2,000 per ETH.
That $20 difference is "price impact" (or "slippage").
The bigger the trade relative to pool size, the worse the price:
Trade Size | USDC Paid | Effective Price | Price Impact |
---|---|---|---|
1 ETH | 2,002 | $2,002 | 0.1% |
10 ETH | 20,202 | $2,020 | 1.0% |
100 ETH | 222,222 | $2,222 | 11.1% |
This is why larger pools are better β less price impact for traders.
Becoming a Liquidity Provider (LP)
Now that you understand how pools work, here's how you can provide liquidity and earn fees.
Step 1: Deposit Two Tokens
To provide liquidity to ETH/USDC pool:
You must deposit both tokens in equal value.
Example:
- Pool ratio: 1 ETH = 2,000 USDC
- You deposit: 1 ETH + 2,000 USDC (equal value: $4,000 total)
You can't just deposit ETH. You can't just deposit USDC. Must be both, in equal value.
Step 2: Receive LP Tokens
The pool contract mints LP tokens (liquidity provider tokens) as a receipt.
Think of LP tokens as:
- A receipt proving you deposited
- A claim on a % of the pool
- A new asset you now own
Example:
Before your deposit:
- Pool: 1,000 ETH + 2,000,000 USDC
- Total LP tokens: 1,000,000
You deposit:
- 1 ETH + 2,000 USDC (0.1% of pool)
You receive:
- 1,000 LP tokens (0.1% of total supply)
Your LP tokens represent 0.1% ownership of the pool.
Step 3: Earn Trading Fees
Every trade pays a fee (typically 0.3% on Uniswap, varies by protocol).
Example:
- Trader swaps 10,000 USDC for ETH
- Fee: 0.3% Γ 10,000 = 30 USDC
- This 30 USDC is added to the pool
- Pool now has: 1,000 ETH + 2,000,030 USDC
All LP token holders benefit proportionally.
You own 0.1% of the pool, so you earned:
0.1% Γ 30 USDC = 0.03 USDC
Doesn't sound like much, but:
- High-volume pools generate millions in fees daily
- Fees compound 24/7
- APYs can range from 5% to 200%+
Step 4: Withdraw Liquidity
When you want to exit:
Burn your LP tokens β receive your share of the pool.
Example:
Time has passed. Pool is now:
- 1,005 ETH + 2,010,000 USDC (fees accumulated)
You burn your 1,000 LP tokens (still 0.1% of supply)
You receive:
- 1.005 ETH (0.1% of 1,005)
- 2,010 USDC (0.1% of 2,010,000)
You deposited: 1 ETH + 2,000 USDC
You withdrew: 1.005 ETH + 2,010 USDC
Gain: 0.005 ETH + 10 USDC β $20 in fees (example values)
That's your profit from trading fees.
The Big Risk: Impermanent Loss
Here's the catch: Your LP position can lose value even if the pool earns fees.
What Is Impermanent Loss?
Impermanent loss happens when the price ratio of your deposited tokens changes.
Example: ETH Price Goes Up
You deposit:
- 1 ETH @ $2,000
- 2,000 USDC
- Total value: $4,000
ETH price doubles to $4,000:
If you had just held:
- 1 ETH = $4,000
- 2,000 USDC = $2,000
- Total: $6,000
But in the LP:
Remember: x Γ y = k
Pool rebalances automatically as traders arbitrage:
Original: 1,000 ETH Γ 2,000,000 USDC = 2,000,000,000
After ETH doubles, arbitrage traders buy ETH from pool until price matches external markets.
New pool state (simplified):
707 ETH Γ 2,828,000 USDC = 2,000,000,000
Your 0.1% share:
- 0.707 ETH Γ $4,000 = $2,828
- 2,828 USDC = $2,828
- Total: $5,656
If you held: $6,000
LP value: $5,656
Impermanent loss: $344 (5.7%)
[Visual suggestion: Graph showing impermanent loss at different price changes]
Why "Impermanent"?
It's called "impermanent" because:
- If the price returns to the original ratio, the loss disappears
- Only becomes permanent if you withdraw at a different ratio
Impermanent Loss Table
Price Change | Impermanent Loss |
---|---|
1.25x | -0.6% |
1.5x | -2.0% |
2x | -5.7% |
3x | -13.4% |
4x | -20.0% |
5x | -25.5% |
The more volatile the pair, the higher the impermanent loss risk.
Mitigating Impermanent Loss
1. Choose stable pairs:
- USDC/USDT (both stablecoins, no impermanent loss)
- ETH/WETH (same asset, no impermanent loss)
- stETH/ETH (very similar assets, minimal IL)
2. Bet on trading volume:
- If fees earned > impermanent loss, you still profit
- High-volume pools (ETH/USDC on Uniswap) can earn 50%+ APY
3. Concentrated liquidity (Uniswap V3):
- Provide liquidity in a narrow price range
- Earn higher fees per dollar
- But also higher impermanent loss if price moves out of range
Real Example: Uniswap V3 ETH/USDC LP
Pool: ETH/USDC 0.05% fee tier
You decide to provide:
- 10 ETH @ $2,000 = $20,000
- 20,000 USDC
- Total: $40,000
Choose price range: $1,800 - $2,200 (concentrated liquidity)
Result over 3 months:
Scenario 1: ETH stays $1,900-$2,100
- Fees earned: $1,200 (10% APY annualized)
- Impermanent loss: -$50
- Net: +$1,150 β
Scenario 2: ETH pumps to $3,000
- Price exits your range
- Fees earned while in range: $800
- Impermanent loss: -$2,400
- Net: -$1,600 β
Scenario 3: ETH crashes to $1,200
- Price exits your range
- Fees earned while in range: $500
- Impermanent loss: -$3,000
- Net: -$2,500 β
Key insight: LPs perform best in sideways/ranging markets. Not during strong trends.
The Tax Nightmare: How Are LPs Taxed?
LP taxation is one of the most complex areas of crypto tax.
The IRS hasn't given clear guidance, so tax professionals disagree.
The Deposit (Potentially Taxable)
What happens:
- You send 1 ETH + 2,000 USDC to the pool contract
- You receive LP tokens
Conservative tax treatment:
- Disposing of ETH: Taxable sale
- Disposing of USDC: Taxable sale
- Acquiring LP token: New asset with cost basis = market value at receipt
Example:
You bought 1 ETH for $1,500 (cost basis)
ETH is now $2,000
You deposit 1 ETH + 2,000 USDC to LP
Taxable events:
1. Disposed 1 ETH (basis $1,500, value $2,000)
β Capital gain: $500
2. Disposed 2,000 USDC (assuming basis $2,000)
β No gain
3. Acquired LP token (new basis: $4,000)
Aggressive tax treatment:
- Defer taxation until you withdraw
- LP deposit = like-kind exchange (not taxable)
Problem: IRS hasn't clarified. Consult a crypto tax CPA.
Earning Fees (Income or Deferred?)
What happens:
- Pool earns fees 24/7
- Fees automatically compound into the pool
- You don't "receive" them until you withdraw
Tax treatment options:
Option 1 (Conservative):
- Fees = income as earned
- Must calculate daily (nightmare)
Option 2 (Aggressive):
- Defer until withdrawal
- Only recognize when you actually receive tokens
Most tax pros use Option 2 (deferred until withdrawal).
The Withdrawal (Definitely Taxable)
What happens:
- Burn LP tokens
- Receive ETH + USDC
Tax treatment:
- Disposing of LP token: Taxable event
- Calculate gain/loss on LP token itself
Example:
Deposited: 1 ETH + 2,000 USDC β LP token basis $4,000
3 months later, burn LP token
Received:
- 1.05 ETH @ $2,100 = $2,205
- 2,100 USDC = $2,100
- Total: $4,305
LP token gain: $4,305 - $4,000 = $305 capital gain
Then, your new cost basis:
- 1.05 ETH (basis: $2,205)
- 2,100 USDC (basis: $2,100)
Alternative Treatment: "Two-Asset" Method
Some tax pros treat LP positions as if you continuously hold the two underlying assets:
- No taxable event on deposit
- Fees = income
- Impermanent loss = capital loss
This is even more complex and requires custom tracking.
Moonscape's Approach
We flag LP deposits/withdrawals for review:
β οΈ Liquidity Pool Deposit Detected
You deposited 1 ETH + 2,000 USDC to Uniswap V3 PoolTax treatment is complex. Options:
- [Conservative] Treat as taxable disposal (recognize $500 gain now)
- [Aggressive] Defer until withdrawal
Recommendation: Consult your tax professional.
[Review Transaction] [Choose Treatment]
We support both methods:
- Conservative (disposition on deposit)
- Deferred (only tax on withdrawal)
You choose based on your tax professional's advice.
Popular Liquidity Pool Protocols
Uniswap V3 (Concentrated Liquidity)
How it works:
- Choose a price range
- Earn higher fees within that range
- Lose fees if price exits range
Best for:
- Active management
- Narrow range = higher fees
- Traders who can monitor positions
Tax complexity: High (must track range, rebalancing)
Curve (Stablecoin Specialist)
How it works:
- Optimized for low-slippage stablecoin swaps
- Uses custom bonding curve (not constant product)
Best for:
- Stablecoin LPs (USDC/USDT/DAI)
- Minimal impermanent loss
- Lower APYs but safer
Tax complexity: Medium
Balancer (Weighted Pools)
How it works:
- Pools with more than 2 tokens
- Custom weights (e.g., 80% ETH / 20% USDC)
Best for:
- Multi-token exposure
- Weighted strategies
- Reduced impermanent loss on unbalanced pools
Tax complexity: Very high (multiple assets)
Aerodrome / Velodrome (ve(3,3) Model)
How it works:
- Vote-escrowed tokenomics
- LPs earn trading fees + AERO/VELO rewards
- Voters direct emissions to pools
Best for:
- High yields (100-300% APY on incentivized pairs)
- Complex but lucrative
Tax complexity: Extreme (fees + rewards + voting tokens)
Should You Provide Liquidity?
β Good Reasons to LP
- Earn passive income: High-volume pools earn consistent fees
- Sideways markets: If you think ETH will trade in a range, LP can outperform holding
- Stablecoin pairs: USDC/USDT has no impermanent loss, safe yields
β οΈ Reasons to Avoid
- Bullish on one asset: If you think ETH will moon, just hold ETH (don't LP it)
- High volatility: Impermanent loss can wipe out fee earnings
- Tax complexity: LP positions create messy tax situations
- Requires monitoring: Especially Uniswap V3 β price can exit your range
The Math: When Do You Profit?
You profit when:
Fees earned > Impermanent loss
Example:
- Impermanent loss: -5% ($200)
- Fees earned: +8% APY over 3 months = +2% ($80)
- Net: -3% (loss)
Better example:
- Impermanent loss: -2% (price stable)
- Fees earned: +15% APY over 3 months = +3.75% ($150)
- Net: +1.75% (profit)
High volume pools and stable price ratios = best LP opportunities.
How Moonscape Handles LPs
Auto-Detection
We recognize LP deposits across major protocols:
Instead of:
Sent 1 ETH to 0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8
Sent 2,000 USDC to 0x8ad599c3A0ff1De082011EFDDc58f1908eb6e6D8
Received 0.1 LP-ETHUSDC from 0x8ad599...
You see:
Provided liquidity: 1 ETH + 2,000 USDC to Uniswap V3 ETH/USDC Pool
Received: 0.1 LP tokens
Auto-labeled. Linked transactions.
LP Dashboard
Track your LP positions:
Protocol | Pool | Deposited | Current Value | Fees Earned | IL |
---|---|---|---|---|---|
Uniswap V3 | ETH/USDC | $40,000 | $41,200 | +$1,500 | -$300 |
Curve | USDC/USDT | $10,000 | $10,150 | +$150 | $0 |
See performance at a glance.
Tax Treatment Options
Choose your preferred method:
- Conservative: Tax on deposit/withdrawal
- Deferred: Tax only on withdrawal
- Custom: Consult tax pro, we'll implement
We support all approaches.
The Bottom Line
Liquidity provision:
- Earn fees: From every trade in the pool
- Face impermanent loss: If price ratio changes
- Complex tax treatment: IRS hasn't given clear guidance
Best for:
- Sophisticated DeFi users
- Those who can monitor positions
- Sideways/ranging markets
- Stablecoin pairs (low IL risk)
Avoid if:
- You're bullish on one asset (just hold it)
- You can't handle tax complexity
- You want set-and-forget investing
Most importantly: Track everything for taxes. LP positions are one of the hardest DeFi activities to report correctly.
Track Your LP Positions
Moonscape detects liquidity pool deposits/withdrawals and:
β
Auto-labels LP transactions
β
Tracks LP token cost basis
β
Flags for tax treatment review
β
Supports conservative and deferred methods
β
Links deposits β withdrawals
Built for people who'd rather track than guess.
Moonscape β your crypto, your taxes, fully decoded.
Follow us on X (@MoonscapeHQ)
Related Reading
- What Are Smart Contracts? (The Addresses That Control Your DeFi)
- Wrapped Tokens Explained: Why ETH Becomes WETH
- DeFi Tax Audit Triage: Fix Red, Review Yellow, Ignore Gray
Tags: #LiquidityPools #Uniswap #DeFi #ImpermanentLoss #CryptoTax #AMM