You see a 0.8% spread — looks like a great trade. But after execution, profit comes in at 0.3%. Where did the other 0.5% go? Some went to fees (0.2%), and another 0.3% was slippage — invisible losses that don't show up neatly in exchange reports but reduce your profit on every single trade.
This article covers slippage in detail: what it is, where it comes from, how to calculate it, and how to minimize it.
What Is Slippage
Slippage is the difference between the price you expected when placing an order and the price at which it actually filled.
Simple example:
You see ETH at $2,484 and want to buy 10 ETH with a market order. You expect to spend $24,840.
But the order book looks like this:
$2,484.00 | 3.2 ETH
$2,484.50 | 2.8 ETH
$2,485.00 | 4.1 ETH
$2,485.50 | 2.5 ETH
Actual execution:
- 3.2 ETH × $2,484.00 = $7,948.80
- 2.8 ETH × $2,484.50 = $6,956.60
- 4.0 ETH × $2,485.00 = $9,940.00
Total: 10 ETH for $24,845.40 instead of $24,840.00.
Slippage: $5.40 = 0.022%
On one side of a trade this seems trivial. But in arbitrage you pay slippage twice — on the buy and on the sell. Across hundreds of trades per month, it becomes material.
Why Slippage Occurs
Reason 1: Finite order book depth
Every exchange's order book is a list of orders at specific prices. When your market order "consumes" the first price level, it moves to the next at a higher price. The larger your order relative to book depth — the higher the slippage.
Reason 2: Price movement during execution
Even with a deep book, price can change between clicking "buy" and the actual fill. This happens during high volatility, overloaded exchange servers, or slow connections.
Reason 3: Competition for liquidity
On popular pairs, thousands of participants trade simultaneously. When an attractive price appears — hundreds of traders and bots compete for the same fills. First in gets the best price.
Reason 4: Low-cap coins
On coins with small capitalization and low trading volume, order books are thin. Even a modest order causes significant price impact.
How to Calculate Expected Slippage
Method 1: Through order book depth
def calculate_slippage(order_book_asks: list, order_size: float) -> float:
"""
order_book_asks: [(price, volume), (price, volume), ...]
order_size: order size in base currency (ETH)
returns: slippage as percentage
"""
best_price = order_book_asks[0][0]
remaining = order_size
total_cost = 0.0
for price, volume in order_book_asks:
fill = min(remaining, volume)
total_cost += fill * price
remaining -= fill
if remaining <= 0:
break
if remaining > 0:
return None # insufficient liquidity
avg_price = total_cost / order_size
slippage_pct = (avg_price - best_price) / best_price * 100
return slippage_pct
# Example:
asks = [(2484.0, 3.2), (2484.5, 2.8), (2485.0, 4.1), (2485.5, 2.5)]
print(calculate_slippage(asks, 10)) # → ~0.022%
Method 2: Quick estimation rule
| Order size / Book volume ±1% | Expected slippage |
|---|---|
| < 1% | < 0.01% |
| 1–5% | 0.01–0.05% |
| 5–15% | 0.05–0.15% |
| 15–30% | 0.15–0.50% |
| > 30% | > 0.50% |
Rule: keep order size within 5–10% of visible volume in the ±1% price range.
Real Impact on Arbitrage Profit
How slippage changes the picture with a specific example.
Trade without slippage:
- Position: $5,000
- Spread: 0.65%
- Fees: 0.20%
- Calculated profit: $22.50
Same trade with real slippage:
| Pair | Book depth ±1% | Slippage |
|---|---|---|
| Liquid (ETH, $50M volume) | $8M | ~0.02% × 2 = 0.04% |
| Medium (ALT, $5M volume) | $800K | ~0.15% × 2 = 0.30% |
| Thin (SMALL, $500K volume) | $80K | ~0.80% × 2 = 1.60% |
Net profit:
| Pair | Spread | Fees | Slippage | Profit |
|---|---|---|---|---|
| ETH/USDT (liquid) | 0.65% | 0.20% | 0.04% | +$20.50 |
| ALT/USDT (medium) | 0.65% | 0.20% | 0.30% | +$7.50 |
| SMALL/USDT (thin) | 0.65% | 0.20% | 1.60% | −$57.50 |
The same 0.65% spread produces profit on a liquid pair and a significant loss on a thin one. This is the trap of attractive spreads on illiquid coins.
How to Minimize Slippage
Strategy 1: Trade liquid pairs
The simplest and most effective approach. BTC, ETH, SOL, BNB on Binance/Bybit have deep books — slippage is minimal even on larger orders.
Avoid coins with daily volume below $10–20M if working with $5,000+ positions.
Strategy 2: Control order size
The 10% rule: your order should not exceed 10% of visible volume within ±0.5% of the current price.
Max order = Book volume ±0.5% × 0.10
For larger amounts — split into several orders with a small time gap.
Strategy 3: Use limit orders where possible
A limit order guarantees the fill price — slippage is zero. Downside: no guaranteed fill.
In balance arbitrage where speed isn't critical — placing limit orders significantly reduces costs.
Strategy 4: Choose trading times wisely
Slippage is higher during low-liquidity periods:
- Night hours (0:00–6:00 UTC) — thinner books
- Weekends — lower volumes
- Just before/after major news — volatility and uncertainty
Best time for arbitrage: Asian-European session overlap (7:00–12:00 UTC) and European-American session (13:00–18:00 UTC).
Strategy 5: Set max slippage tolerance on DEX
On Uniswap and other AMM-DEXes, the "Slippage Tolerance" setting defines the maximum slippage at which a transaction will execute. If actual slippage exceeds the limit — transaction reverts.
Recommended values:
- Stablecoins (USDC/USDT): 0.1%
- Top tokens (ETH, BTC): 0.5%
- Altcoins: 1.0–2.0%
Don't set very high values (10–50%) — that's an invitation for MEV bots.
Slippage vs Bid-Ask Spread: Key Difference
These two are often confused:
Bid-Ask spread — the fixed gap between the best buy (bid) and sell (ask) price. You always pay it when using market orders — even with a deep book.
Slippage — additional losses from consuming multiple price levels with a large order. Only occurs when your order exceeds the first book level.
Total per-trade cost:
Total cost = Exchange fee + Bid-Ask spread + Slippage
Conclusion
Slippage is the invisible enemy of arbitrageurs. It doesn't appear clearly in exchange reports but reduces profit on every trade.
Three rules for minimization:
- Trade liquid pairs with deep order books
- Control order size — no more than 10% of visible liquidity
- Calculate expected slippage from book depth before every trade
SpreadScan shows volume and order book depth for each pair — use this data to filter opportunities.
FAQ
What's average slippage in practice? On liquid pairs (BTC, ETH) with reasonable order size: 0.01–0.05% per side. On altcoins with $1–10M daily volume: 0.1–0.5%. On thin coins: can exceed 1%.
Can slippage be eliminated completely? With limit orders — yes, slippage is zero. But limit orders don't guarantee fills. With market orders — no, but it can be minimized by choosing liquid pairs.
How does slippage affect triangular arbitrage? Three orders = three slippage sources. At 0.03% per side, combined = 0.09%. With typical route profit of 0.15%, that's half the profit. This is why triangular arbitrage requires especially liquid pairs.
Does time of day affect slippage? Yes. During high-activity periods (European-American session), books are deeper and slippage is lower. At night and on weekends — books are thinner.