Slippage Math: The Hidden Tax on Every Swap You Make
"Set slippage to 1%" is not advice — it's a coin flip. Real slippage is a function of pool depth, trade size, and how many bots are racing you to the block. Here is the math, and the parts your wallet doesn't show you.
What slippage actually is
Slippage is the difference between the price you saw when you signed and the price you got when the transaction landed. On an AMM, that gap comes from one place: your trade size moving along the curve. The wallet just bundles that movement, plus any other trades that landed before yours, into a single number.
For a constant-product pool (Uniswap v2 / Raydium classic):
# Given reserves x (token) and y (quote, e.g. SOL)
# Constant: k = x * y
# You sell Δx tokens, receiving Δy quote (after 0.3% fee)
Δy = (y * Δx * 0.997) / (x + Δx * 0.997)
price_before = y / x
price_after = (y - Δy) / (x + Δx)
price_impact = 1 - (price_after / price_before)
Two things fall out immediately. First, price impact is non-linear — doubling your trade more than doubles the impact. Second, impact scales with trade size relative to pool, not absolute USD. A $5k swap is trivial in a $50M pool and lethal in a $50k one.
The five components of "real" slippage
The number your wallet shows is the smallest piece. Here is what actually comes out of your trade:
| Component | Typical cost | Who collects it |
|---|---|---|
| LP fee | 0.20% – 1.00% | Liquidity providers |
| Price impact | 0.05% – 50%+ | The next trader (pool rebalances) |
| MEV / sandwich | 0% – 20% | Searchers (see MEV piece) |
| Routing inefficiency | 0.1% – 3% | Spread between aggregator quotes |
| Network fee / priority | $0.0001 – $30 | Validators / miners |
Add them and the "0.5% slippage" you set is fiction. On a thin pool with active sandwich bots, your effective slippage on a $2,000 swap can be 8–12% round-trip. That is the tax.
Setting slippage tolerance — the actual rule
Slippage tolerance is the maximum gap you'll accept before your transaction reverts. Set it too low and your swap fails (you still pay gas). Set it too high and sandwich bots eat the headroom you gave them.
The right number depends on three inputs: token volatility, pool depth, and chain mempool exposure.
| Asset class | Slippage | Notes |
|---|---|---|
| Stable–stable (USDC/USDT) | 0.05–0.1% | Curve / Uniswap v3 stable pools — anything more is a trap |
| Major / blue-chip | 0.3–0.5% | SOL/USDC, ETH/USDC — Jupiter / 1inch routing handles it |
| Mid-cap alt | 1–2% | Raise during high-volatility hours |
| Memecoin entry | 3–8% | Pool is moving while you're signing. Lower = failed tx |
| Memecoin exit during dump | 10–25% | Honest math: there is no painless exit on a thin pool |
| Tax tokens (6/6) | + tax% | Add the buy/sell tax to your slippage or your tx reverts |
Splitting big trades
If your trade is more than 1% of pool depth, you should consider splitting. Two approaches:
- Time-split (TWAP). Break the order into 4–10 chunks across 5–60 minutes. The pool refills between your trades as arbitrageurs pull price back. You give up some convenience and spread, you save price impact. Tools: Jupiter on Solana has a built-in DCA / VA mode; 1inch Fusion+ on EVM.
- Route-split. Aggregators automatically route across multiple pools (Raydium + Meteora + Orca for SOL pairs). For sizable trades, the saving over a single-pool swap is consistently 0.5–3%. Always quote against an aggregator before signing on a single DEX.
Quick mental model
If you want one heuristic to keep in your head: your trade size, as a % of pool TVL, is roughly equal to your one-way price impact on a balanced 50/50 pool. A 2% trade = ~2% impact. A 10% trade = ~9% impact. That's not exact (the curve gives slightly less than linear at small sizes, more at large), but it's a useful sanity check before you click confirm.
# Cheap heuristic for a v2-style pool
trade_pct = (trade_usd / pool_tvl_usd) * 100
est_impact = trade_pct # roughly, for trades < 20% of pool
if est_impact > 3: print("split this trade")
if est_impact > 10: print("you are the price action")
What the wallet doesn't tell you
Your wallet shows you the LP fee and a slippage tolerance. It does not show you the MEV, the routing inefficiency vs aggregator, or the cost of failed transactions when you set tolerance too tight. Over a year of active trading those uncosted lines are worth several percent of your portfolio. They are also the easiest leakage to fix — pick the right aggregator, set realistic tolerance, split big trades, and use private RPC on chains where it matters.