Guide

Modeling slippage in Polymarket backtests

Slippage is the gap between the price your signal saw and the price you actually got. On Polymarket it has two components - crossing the spread and walking thin depth - and both are measurable per asset, which means you can stop guessing.

What this guide covers

  • Measured 3-day median spread: btc 0.0100, eth 0.0100, sol 0.0200, xrp 0.0200, doge 0.0300, bnb 0.0300, hype 0.0600, zec 0.3900
  • Average spread is always above the median, so the tail is where most execution cost hides
  • ZEC's 0.3900 median spread means a round trip can cost nearly 0.80 before any edge
  • Slippage compounds with order size and shrinks with top-of-book depth

Spread cost is the floor

If you take liquidity, you pay half the spread on entry and half on exit at minimum, because you buy at the ask and sell at the bid. On BTC, where the median spread is 0.0100, that floor is about 0.01 per round trip. On ZEC, at 0.3900, it is nearly 0.80 - a bar almost no strategy clears.

This makes spread the first filter when choosing where to test a strategy. A signal that looks marginal on BTC is hopeless on ZEC, and no amount of clever entries fixes a 0.39 crossed spread.

Measured 3-day spread by asset (2026-10-17)
AssetAvg spreadMedian spread
btc0.01150.0100
eth0.01390.0100
sol0.02620.0200
xrp0.02590.0200
bnb0.04150.0300
doge0.03630.0300
hype0.10250.0600
zec0.42710.3900

Depth slippage beyond the touch

Once your order exceeds the size at the best price, it eats into the next levels and the average fill price drifts away from the touch. That drift is depth slippage, and it grows with order size relative to the resting book.

Because the archive stores full L2 depth, you can compute this exactly for any order size rather than applying a flat basis-point penalty. A flat penalty is a guess; walking the stored levels is a measurement.

Average versus median spread

On every measured asset the average spread sits above the median - for HYPE, 0.1025 average against 0.0600 median. That gap is the tail: windows where the book widens sharply. If your strategy trades continuously, it pays the average; if it trades selectively, it may mostly pay the median.

This matters for backtest honesty. A strategy that trades during calm windows can legitimately use the median, but a strategy that trades on volatility events will pay the average or worse, and should be modeled against the wide tail, not the typical print.

Putting the components together

Total slippage per trade is the half-spread you cross plus the depth drift plus the taker fee. Model each explicitly so you can see which one is killing a strategy. Often the answer is the spread, which no execution improvement can fix - only a different market or a different holding period can.

Report slippage as a distribution, not a single number. The median trade may be fine while the worst decile is ruinous, and a backtest that reports only the mean hides exactly the trades that matter.

Code examples

# Depth slippage: effective price minus the touch.
def slippage(levels, mid, size):
    remaining, cost = size, 0.0
    for price, qty in levels:
        take = min(remaining, qty)
        cost += take * price
        remaining -= take
        if remaining <= 0:
            break
    if remaining > 0:
        return None
    eff = cost / size
    return eff - mid  # signed drift from the midpoint

Free tier

The Starter plan is free, includes order books, prices, and metrics at 250ms resolution, with 3 days of history, 60 requests/min, 1,000/day, 1 free AI backtest, and 3 strategy backtests. No credit card required.

Paid data windows from $19/mo extend history to 30–120 days at higher throughput. Backtest AI add-on is +$19/mo or standalone at $29/mo.

FAQ

What is a typical Polymarket spread?

Measured 3-day medians range from 0.0100 on BTC and ETH to 0.3900 on ZEC, with averages consistently higher because of quiet-to-wide swings.

Is a flat slippage assumption acceptable?

Rarely. Depth slippage depends on order size versus resting depth, so computing it from stored L2 levels is more accurate than any constant penalty.

Should I model average or median spread?

Median if your strategy trades mostly in calm windows; average or worse if it trades on volatility events, since those windows have the widest books.

Can execution improvements remove slippage?

Only depth slippage. The half-spread you cross is structural, so a wide-spread market stays expensive no matter how the order is sliced.