Backtest strategies

How to Backtest Polymarket Strategies

Backtesting a Polymarket strategy correctly is about the fill model and the sample: walk the recorded ladder at 250ms, execute at the executable side, and test on only resolved markets. This page is the backtest recipe and the honesty rules around it.

Figures measured as of 2026-09-24 on the published PolyOrderbooks archive.

The rules

Four rules before any backtest

Method

The honest fill model

The recorded 250ms frames define the backtest: for each signal, the strategy transacts against that frame's ladder — the same ladder the venue carried at that second, with one-sided and crossed states intact. Minute-aggregated data cannot honor this model because the states are gone.

The measured reason the model matters: one-sided books at 16.9% and a median 42,254-share bound rest mean mid-fill results overstate returns structurally.

Worked example

Backtest one strategy cleanly

Define the signal, slice a resolved sample, and run it on the Backtest AI tooling or the REST pipeline: entry at executable side, slippage from consumed size, settlement on the recorded outcome.

The output report should separate strategy P&L, fill cost, and the one-sided share of the sample — if it does not, it has hidden the venue's real texture.

Honest

The honest verdict rule

A backtest decides a habit, not a month's P&L: the honest interpretation names the sample, the model, and the assumptions, exactly as the backtest methodology page requires before any live dollar.

Walk

The walk-forward habit

The honest backtest is walk-forward: tune on one resolved window, validate on the next, and never let a snapshot from the test period leak into the signal. On a venue whose final minutes are one-sided 76.2% of the time, leakage is the easiest mistake to make and the hardest to see.

The archive's reconciled structure makes the discipline mechanical — signal on the executable side, fill from the ladder, settle on the recorded outcome — so the backtest tooling merely enforces what a careful study would do anyway.

FAQ

How do I backtest on Polymarket data?

Walk the recorded 250ms ladder, fill at the executable side, charge per-size slippage, and test only resolved markets.

What breaks a backtest result?

Mid-fills, minute-aggregated states, unfiltered illiquid samples, and unlabeled testing windows.

Why only resolved markets?

Only resolved markets carry an outcome column — testing against what actually happened is the point of a backtest.