Skip to content

Price Impact, Slippage & Spread

TL;DR

Three concepts govern every trade: Price Impact, Slippage, and Spread. They are distinct, but frequently conflated. Understanding the difference prevents execution errors, especially when taking profits in a volatile or low-liquidity market.

TERM WHAT IT IS CAUSE
Price Impact How much your trade moves the price Your order consuming available liquidity
Slippage Difference between expected and executed price Market moved while your order was in transit
Spread Gap between best buy price and best sell price Market makers extracting profit for providing liquidity

Key distinctions:

  • Slippage: the market moved while you were trying to trade
  • Price Impact: your trade moved the market

Practical implications:

  • Small trades ($100 in a liquid market): all three costs are negligible
  • Large trades relative to liquidity: price impact dominates and can cost 10%+ on shallow DEX pools
  • CEXs handle large orders better than DEXs due to order book depth vs AMM curve math
  • High slippage tolerance on DEXs invites MEV sandwich attacks

How to minimize costs:

  • Split large orders
  • Use limit orders on CEXs
  • Compare venue depth before executing
  • Use DEX aggregators with MEV protection

Figure 1: Execution cost breakdown from quoted to executed price.

graph LR
    subgraph "Quoted"
        A[Price: $1.00]
    end

    subgraph "Deductions"
        B[Spread<br/>-$0.005]
        C[Slippage<br/>-$0.01]
        D[Price Impact<br/>-$0.02]
    end

    subgraph "Executed"
        E[Price: $0.965]
    end

    A --> B --> C --> D --> E

    style A fill:#90EE90
    style B fill:#FFE4B5
    style C fill:#FFB6C1
    style D fill:#FF6B6B
    style E fill:#87CEEB

Price Impact

Price impact is how much your own order moves the market. Unlike slippage, you cause this directly by consuming liquidity.

Figure 2: Price impact from a single large sell order.

graph LR
    subgraph "Before"
        B1["Price: $1.00"]
    end

    subgraph "Your Order"
        TRADE["Sell 10,000 tokens"]
    end

    subgraph "After"
        A1["Price: $0.95"]
    end

    B1 --> TRADE --> A1

    NOTE["Price Impact: -5%"]
    TRADE -.-> NOTE

    style B1 fill:#90EE90
    style TRADE fill:#FFD700
    style A1 fill:#FF6B6B
    style NOTE fill:#E6E6FA,stroke:#000,stroke-dasharray:5

Price impact scales with order size relative to available liquidity. A $100 trade in a $10M liquidity pool is negligible. A $100,000 trade in that same pool is significant. A $100 trade in a $50K pool causes measurable price degradation.


Slippage

Slippage occurs when price changes between order submission and execution.

Figure 3: Slippage during order execution.

sequenceDiagram
    participant You
    participant Exchange
    participant Market

    You->>Exchange: Sell order at $1.00
    Note over Market: Other trades execute
    Market->>Market: Price moves to $0.98
    Exchange->>You: Filled at $0.98
    Note over You: Slippage: -2%

Slippage can be positive (price moved in your favor) or negative (price moved against you). Negative is more common. Markets tend to move against the side with visible intent.

Causes:

  • High volatility
  • Network/execution latency
  • Low liquidity
  • Large order size relative to available depth

Most DEX interfaces expose a slippage tolerance setting:

SETTING TRADE-OFF
0.1% Trade fails if price moves at all
0.5% Standard for stable pairs
1-3% Volatile tokens
5%+ Low-liquidity tokens; exposes you to Maximal Extractable Value (MEV) extraction

MEV Exposure

High slippage tolerance on DEXs is an invitation for Sandwich Attacks. Bots will front-run your trade, push price against you to your tolerance limit, then back-run to capture the difference. This occurs routinely on public Mempools. See jaredfromsubway.eth for a real-world example of a sandwich bot that extracted $22M+ from retail traders.


Spread

The spread is the difference between what buyers will pay (Bid) and what sellers will accept (ask).

Figure 4: Order book spread between bid and ask.

graph TB
    subgraph "Order Book"
        direction TB
        ASK3["Sell @ $1.03 — 500 tokens"]
        ASK2["Sell @ $1.02 — 300 tokens"]
        ASK1["Sell @ $1.01 — 200 tokens ← Best Ask"]
        SPREAD["══ SPREAD: $0.02 ══"]
        BID1["Buy @ $0.99 — 150 tokens ← Best Bid"]
        BID2["Buy @ $0.98 — 400 tokens"]
        BID3["Buy @ $0.97 — 600 tokens"]
    end

    ASK3 --> ASK2 --> ASK1 --> SPREAD --> BID1 --> BID2 --> BID3

    style ASK1 fill:#FF6B6B
    style ASK2 fill:#FF8888
    style ASK3 fill:#FFAAAA
    style BID1 fill:#90EE90
    style BID2 fill:#77DD77
    style BID3 fill:#55CC55
    style SPREAD fill:#FFD700,stroke:#000,stroke-width:2px

The depth of liquidity at each price level determines how much your order will move the market. Larger volumes at prices closer to the spread mean better execution for market orders.

On a Centralized Exchange (CEX), market makers place orders on both sides. The spread is their compensation for taking inventory risk. On a Decentralized Exchange (DEX), there is no explicit spread—it emerges from Automated Market Maker (AMM) curve mathematics. The cost is still there; it's just calculated differently.

DEX Spread is Price Impact

What looks like a spread on a DEX is actually the price impact of your trade moving along the bonding curve. The distinction matters for understanding how costs scale with trade size.

Before 2001, US stock spreads were quoted in fractions. The minimum tick was 1/8 dollar ($0.125). Decimalization compressed spreads to pennies. Crypto markets skipped that evolution entirely.


CEX vs DEX Execution

Trading Model

Figure 5: CEX trading model characteristics.

graph TB
    subgraph "Centralized Exchange (CEX)"
        C1["Order book model"]
        C2["Discrete price levels"]
        C3["Market makers provide liquidity"]
        C4["Better large trade execution"]
        C5["Custody risk, KYC required"]
    end

    C1 --> C2 --> C3 --> C4 --> C5

    style C1 fill:#FFE4B5
    style C2 fill:#FFE4B5
    style C3 fill:#FFE4B5
    style C4 fill:#FFE4B5
    style C5 fill:#FFE4B5

Figure 6: DEX trading model characteristics.

graph TB
    subgraph "Decentralized Exchange (DEX)"
        D1["AMM model"]
        D2["Continuous curve pricing"]
        D3["Liquidity Providers provide liquidity"]
        D4["Worse large trade execution"]
        D5["Self-custody, permissionless"]
    end

    D1 --> D2 --> D3 --> D4 --> D5

    style D1 fill:#E6E6FA
    style D2 fill:#E6E6FA
    style D3 fill:#E6E6FA
    style D4 fill:#E6E6FA
    style D5 fill:#E6E6FA

Feature Comparison

FACTOR CEX DEX
Large trades ☑ Better ☒ Worse
Limit orders ☑ Yes ☒ Generally no
Long-tail tokens ☒ Rarely listed ☑ Permissionless
Custody △ Exchange holds funds ☑ Self-custody
Privacy ☒ KYC required ☑ Pseudonymous
Execution speed ☑ Instant △ Block time dependent

Order Books (CEX)

Centralized exchanges match buyers and sellers through an Order Book—a list of all pending orders at each price level.

Figure 7: Order book depth with sell and buy sides.

graph TB
    subgraph "SELL SIDE"
        direction TB
        S5["$1.05 — 1,000"]
        S4["$1.04 — 800"]
        S3["$1.03 — 500"]
        S2["$1.02 — 300"]
        S1["$1.01 — 200 ← Best Ask"]
    end

    subgraph "─────────"
        MID["Mid: $1.00"]
    end

    subgraph "BUY SIDE"
        direction TB
        B1["$0.99 — 150 ← Best Bid"]
        B2["$0.98 — 400"]
        B3["$0.97 — 600"]
        B4["$0.96 — 900"]
        B5["$0.95 — 1,200"]
    end

    S5 --> S4 --> S3 --> S2 --> S1 --> MID --> B1 --> B2 --> B3 --> B4 --> B5

    style S1 fill:#FF6B6B
    style S2 fill:#FF8888
    style S3 fill:#FF9999
    style S4 fill:#FFAAAA
    style S5 fill:#FFBBBB
    style B1 fill:#90EE90
    style B2 fill:#77DD77
    style B3 fill:#66CC66
    style B4 fill:#55BB55
    style B5 fill:#44AA44
    style MID fill:#FFD700,stroke:#000,stroke-width:2px

Limit vs Market Orders

  • A Limit Order sits on the books until matched. You specify the price. No price impact until execution. May never fill.
  • A Market Order executes immediately against the best available prices. Guaranteed fill, unknown final price. You pay the spread and cause price impact.

Walking the Book

When a market order exceeds available liquidity at the best price, it "walks" through successive price levels until filled. This is not slippage—the market didn't move. You moved it.

Figure 8: Walking the book across multiple price levels.

graph TD
    START["Market Sell: 800 tokens<br/>Expecting ~$792 @ $0.99"]

    LEVEL1["Level 1: $0.99<br/>Fill 150 tokens<br/>Received: $148.50<br/>Remaining: 650"]

    LEVEL2["Level 2: $0.98<br/>Fill 400 tokens<br/>Received: $392.00<br/>Remaining: 250"]

    LEVEL3["Level 3: $0.97<br/>Fill 250 tokens<br/>Received: $242.50<br/>Remaining: 0"]

    RESULT["Total Received: $783.00<br/>Average Price: $0.97875<br/>Expected: $792.00<br/>━━━━━━━━━━━━━━━<br/>Price Impact: -$9.00 (-1.14%)"]

    START --> LEVEL1
    LEVEL1 --> LEVEL2
    LEVEL2 --> LEVEL3
    LEVEL3 --> RESULT

    style START fill:#FFD700
    style LEVEL1 fill:#90EE90
    style LEVEL2 fill:#FFE4B5
    style LEVEL3 fill:#FFB6C1
    style RESULT fill:#FF6B6B

This example 800-token order consumed three price levels. The first 150 tokens got the best price ($0.99). The remaining 650 walked down the book, receiving progressively worse fills.

Order Book Depth

The deeper the book, the less each level matters. A shallow book forces your order to walk further, degrading average execution price. This is predictable and proportional to order size relative to available depth.


AMMs (DEX)

AMMs replace order books with liquidity pools governed by mathematical formulas. Instead of matching buyers and sellers, you trade directly against a pool of tokens. Most use the constant product formula:

x × y = k

Where x and y are token quantities in the pool, and k remains constant through trades.

Figure 9: AMM pool state and derived price.

graph LR
    subgraph "Pool State"
        POOL["ETH: 100<br/>USDC: 100,000<br/>k = 10,000,000"]
    end

    PRICE["Price: 1 ETH = 1,000 USDC"]

    POOL --> PRICE

    style POOL fill:#E6E6FA
    style PRICE fill:#90EE90

How Swaps Work

When you trade, you add one token and remove another. The formula enforces price adjustment:

Figure 10: AMM swap execution and price impact.

graph TD
    B["1. Initial State<br/>ETH: 100 | USDC: 100,000<br/>Price: 1,000 USDC/ETH<br/>k = 10,000,000"]

    T["2. You Sell 10 ETH<br/>Pool receives 10 ETH<br/>Pool calculates USDC output"]

    A["3. New State<br/>ETH: 110 | USDC: 90,909<br/>Price: 826 USDC/ETH<br/>k = 10,000,000"]

    R["4. Result<br/>Received: 9,091 USDC<br/>Effective rate: 909 USDC/ETH<br/>Price impact: -9.1%"]

    B --> T --> A --> R

    style B fill:#90EE90
    style T fill:#FFD700
    style A fill:#FFB6C1
    style R fill:#FF6B6B

The math: with 110 ETH in the pool, USDC must equal 10,000,000 ÷ 110 = 90,909. You receive the difference: 100,000 - 90,909 = 9,091 USDC.

You sold 10 ETH expecting ~10,000 USDC. You got 9,091. The 9.1% difference is price impact, a direct consequence of your trade size relative to pool depth.

The Curve

AMM price impact is non-linear. Small trades are cheap. Large trades get progressively worse.

Figure 11: Non-linear price impact curve on AMMs.

xychart-beta
    title "Price Impact vs Trade Size"
    x-axis "Trade Size (% of Pool)" [1, 2, 5, 10, 20, 30, 50]
    y-axis "Price Impact (%)" 0 --> 35
    line [0.5, 1, 2.5, 5.3, 11.1, 17.6, 33.3]

This curve is why DEX aggregators exist. Splitting a large trade across multiple pools can yield better execution than hitting one pool with the full amount.

Cascading Through the Curve

Unlike order books where your trade walks through discrete price levels, AMM trades slide continuously along the bonding curve. Each token you add pushes price further. If the pool is shallow relative to your order, this creates a cascade effect where your own trade compounds its own impact.

Consider a sell that moves price significantly:

Figure 12: Cascading price impact from sequential sells.

graph TD
    INITIAL["Initial Pool State<br/>ETH: 50 | USDC: 50,000<br/>Price: $1,000/ETH<br/>k = 2,500,000"]

    TRADE1["You Sell 5 ETH<br/>Pool: 55 ETH | 45,454 USDC<br/>New Price: $826/ETH<br/>You received: 4,546 USDC"]

    TRADE2["Next trader sells 5 ETH<br/>Pool: 60 ETH | 41,666 USDC<br/>New Price: $694/ETH<br/>They received: 3,788 USDC"]

    TRADE3["Third trader sells 5 ETH<br/>Pool: 65 ETH | 38,461 USDC<br/>New Price: $591/ETH<br/>They received: 3,205 USDC"]

    IMPACT["Cascading Impact:<br/>━━━━━━━━━━━━━━━<br/>First seller: -9% impact<br/>Second seller: -17% impact<br/>Third seller: -16% impact<br/><br/>Total price drop: -41%<br/>from initial $1,000"]

    INITIAL --> TRADE1
    TRADE1 --> TRADE2
    TRADE2 --> TRADE3
    TRADE3 --> IMPACT

    style INITIAL fill:#90EE90
    style TRADE1 fill:#FFE4B5
    style TRADE2 fill:#FFB6C1
    style TRADE3 fill:#FF8888
    style IMPACT fill:#FF6B6B

Each successive trade faces worse execution because the previous trades degraded the pool's price. Three independent sellers each incur their own price impact. The effect compounds.

  • On a CEX, walking the book has natural break points. Once you exhaust a price level, the next level might be significantly different, but each order consumes discrete liquidity chunks.
  • On a DEX, there are no break points. The curve is continuous. Your trade doesn't just walk through levels—it slides the entire pricing function. The next trader immediately inherits your impact.

This matters most in:

  • Low-liquidity pools where single trades move price 5%+
  • Volatile periods when multiple large orders hit the same pool sequentially
  • Exit events where many holders try to sell simultaneously

If you're the third seller in a cascade, you're not just paying your own impact—you're paying the cumulative degradation of everyone before you.


Practical Comparison

Same token. Same price ($1.00). Different trade sizes. Different outcomes.

Setup:

  • CEX: Moderate order book depth
  • DEX: 50,000 tokens + 50,000 USDC pool (k = 2.5B)

$100 Trade

Figure 13: $100 trade execution on CEX.

graph TB
    subgraph "CEX"
        CEX1["Best bid: $0.995"]
        CEX2["100 tokens fill at $0.995"]
        CEX3["Received: $99.50"]
        CEX4["Cost: 0.5%"]
    end

    CEX1 --> CEX2 --> CEX3 --> CEX4

    style CEX3 fill:#90EE90

Figure 14: $100 trade execution on DEX.

graph TB
    subgraph "DEX"
        DEX1["Pool: 50K/50K"]
        DEX2["Add 100 tokens"]
        DEX3["Received: $99.60"]
        DEX4["Cost: ~0.4% + fees"]
    end

    DEX1 --> DEX2 --> DEX3 --> DEX4

    style DEX3 fill:#90EE90

At this size, the difference is negligible.

$1,000 Trade

Figure 15: $1,000 trade execution on CEX.

graph TB
    subgraph "CEX"
        CEX1["Consumes 2 price levels"]
        CEX2["500 @ $0.995, 500 @ $0.99"]
        CEX3["Received: $992.50"]
        CEX4["Cost: 0.75%"]
    end

    CEX1 --> CEX2 --> CEX3 --> CEX4

    style CEX3 fill:#90EE90

Figure 16: $1,000 trade execution on DEX.

graph TB
    subgraph "DEX"
        DEX1["2% of pool liquidity"]
        DEX2["Curve pricing applies"]
        DEX3["Received: ~$970"]
        DEX4["Cost: ~3%"]
    end

    DEX1 --> DEX2 --> DEX3 --> DEX4

    style DEX3 fill:#FFD700

CEX wins. Order book depth absorbs the size better than the AMM curve.

$10,000 Trade

Figure 17: $10,000 trade execution on CEX.

graph TB
    subgraph "CEX"
        CEX1["Walks through 6+ levels"]
        CEX2["Average fill: ~$0.968"]
        CEX3["Received: ~$9,680"]
        CEX4["Cost: 3.2%"]
    end

    CEX1 --> CEX2 --> CEX3 --> CEX4

    style CEX3 fill:#FFD700

Figure 18: $10,000 trade execution on DEX.

graph TB
    subgraph "DEX"
        DEX1["20% of pool liquidity"]
        DEX2["Severe curve penalty"]
        DEX3["Received: ~$8,333"]
        DEX4["Cost: ~17%"]
    end

    DEX1 --> DEX2 --> DEX3 --> DEX4

    style DEX3 fill:#FF6B6B

At $10,000, the DEX costs you over $1,600 more than the CEX. AMM curves penalize large orders in shallow pools disproportionately.

Figure 19: Value lost comparison by trade size.

xychart-beta
    title "Value Lost: CEX vs DEX"
    x-axis ["$100", "$1,000", "$10,000"]
    y-axis "Loss ($)" 0 --> 2000
    bar [0.5, 7.5, 320]
    bar [0.4, 30, 1667]

Stock Market Context

These mechanics are not crypto-specific. Order books, spreads, and market impact have governed traditional markets for centuries.

Stock Market Mechanics vs Crypto

ASPECT STOCKS CRYPTO CEX CRYPTO DEX
Spread ☑ ~$0.01 (liquid) △ 0.01-0.1% ☒ Curve-derived
Slippage ☑ Rare △ Moderate ☒ Common
Settlement ☒ T+2 days ☑ Instant ☑ Instant
Hours ☒ 6.5 hrs/day ☑ 24/7 ☑ 24/7
Custody △ Broker △ Exchange ☑ Self

Minimizing Costs

Figure 20: Strategies for reducing execution costs.

graph TD
    GOAL["Reduce Execution Costs"]

    GOAL --> SIZE["Order Management"]
    GOAL --> VENUE["Venue Selection"]
    GOAL --> TIMING["Timing"]
    GOAL --> TOOLS["Tooling"]

    SIZE --> SIZE1["Split large orders"]
    SIZE --> SIZE2["Use limit orders"]

    VENUE --> VENUE1["Compare CEX vs DEX"]
    VENUE --> VENUE2["Check depth/liquidity"]

    TIMING --> TIMING1["Avoid low-volume hours"]
    TIMING --> TIMING2["Avoid volatility spikes"]

    TOOLS --> TOOLS1["DEX aggregators"]
    TOOLS --> TOOLS2["MEV protection (CoW, Flashbots)"]

    style GOAL fill:#90EE90
    style SIZE fill:#FFE4B5
    style VENUE fill:#FFB6C1
    style TIMING fill:#E6E6FA
    style TOOLS fill:#87CEEB

General:

  1. Split large orders across time
  2. Use limit orders on CEXs
  3. Compare venues before executing
  4. Avoid high-volatility periods

DEX-specific:

  1. Use aggregators (1inch, Paraswap, CoW Swap)
  2. Set slippage tolerance appropriately—too high invites MEV, too low causes failures
  3. Check pool depth before trading
  4. Consider concentrated liquidity venues (Uniswap v3) for better rates on supported ranges

References

AMM & DEX Mechanics

Order Books & Market Microstructure

MEV & Sandwich Attacks

DEX Aggregation

Traditional Market Structure

Changelog

DATE AUTHOR NOTES
2025-12-24 Artificial. Generated by robots.
2026-01-04 Denizen. Reviewed, edited, and curated by humans.