Polymarket Orderbook Archive archive.pendulumflow.com

Polymarket orderbook data: what you can actually do with it

Ten things this archive is good for, each with a concrete example and the columns it needs. Everything below is free, needs no account or key, and works on the hourly Parquet files exactly as they are published.

1. Backtest with real depth, not mid prices

A mid price tells you what one share might have cost. The book tells you what a hundred would have cost, and whether the second fifty moved the price. Every hour here carries the full ladder, so a strategy can be filled at the size it would actually have moved rather than at a price nobody could have got.

For example. Replay an hour, and for each signal walk the resting asks until your order is filled. The difference between that fill and the mid is the part of a backtest that usually goes missing.

Columns: bids, asks, market, asset_id — in event_type book. What every column means.

2. Measure what a sized order really costs

Slippage is not a constant and it is not a fee. It depends on the market, the side, the hour and the size, and the only way to know it is to walk the book that was standing at the time.

For example. Compute the cost of $10, $100, $1,000 and $10,000 on each side, per market, per hour. The spread between the $10 and the $10,000 number is the liquidity of that market stated in the units you care about.

Columns: bids, asks, best_bid, best_ask, spread — in event_type book, best_bid_ask. What every column means.

3. Watch liquidity around news and resolution

Books do not thin out gradually. They widen in seconds when something happens, and again as a market approaches its close, and both are visible here at the granularity the venue published them.

For example. Take a market that resolved, line up the minutes before its market_resolved event, and watch the spread and the depth on each side. Then compare that shape against a market that resolved quietly.

Columns: best_bid, best_ask, spread, timestamp, winning_outcome — in event_type best_bid_ask, market_resolved. What every column means.

4. Mark positions honestly

A position is not worth the last trade and it is not worth the mid. A long is worth what someone is bidding and a short costs what someone is asking. Marking to mid flatters every book with a wide spread, which is most of them, most of the time.

For example. Value a portfolio hour by hour at the bid for longs and the ask for shorts, then compare it against the same portfolio marked at mid. The gap is the part of a P/L that was never really there.

Columns: best_bid, best_ask, market, asset_id — in event_type best_bid_ask. What every column means.

5. Compare market types

Sports, politics and crypto markets behave differently, and the differences are in the book rather than in the headline volume: who is deep, who is thin, and at what hour of the day.

For example. Group markets by their question text, then rank the groups by median depth within a dollar of the touch. The ordering is rarely the one the volume table suggests.

Columns: question, slug, outcomes, best_bid, best_ask — in event_type new_market, best_bid_ask. What every column means.

6. Find odd shapes

Walls that appear and vanish without trading, churn that adds volume and moves nothing, quotes that step in front of each other. None of this is visible in a trade tape, because none of it is a trade.

For example. Track resting size at a single price level across consecutive book snapshots. Size that repeatedly appears and disappears without any fill at that level is worth a second look.

Columns: bids, asks, price, size, timestamp — in event_type book, price_change. What every column means.

7. Yes and No should add up to a dollar

The two sides of a binary market are two assets with two books. In principle their prices sum to one. In practice they drift apart, and when they do it is either an opportunity or a sign that one side has no liquidity to speak of.

For example. Take a market's two asset_ids from its new_market event, join their books on the same instant, and plot the sum of the two best bids. The size of the gap and how long it lasts are both measurable here.

Columns: market, asset_id, assets_ids, best_bid, best_ask — in event_type new_market, best_bid_ask. What every column means.

8. Calibration and microstructure research

The archive carries two clocks: the venue's own timestamp and the moment each machine received the message. That pair is what makes questions about ordering and latency answerable rather than assumed.

For example. Test whether imbalance between bid and ask depth precedes the next price change, using the venue's timestamp for ordering and arrival_skew to see how much transport delay sat behind each observation.

Columns: timestamp, timestamp_received, sequence, arrival_skew, witness_set — in event_type all. What every column means.

9. Train models on book states

Hourly Parquet is the format the tools already want. There is no API to wrap, no pagination to survive and no rate limit to back off from, and you can read one column of one hour without downloading the rest.

For example. SELECT straight from a URL in DuckDB, or hand one hour to pandas or polars. Filter on event_type first and you will usually read a small fraction of the file.

Columns: event_type, market, timestamp, sequence — in event_type all. What every column means.

10. Build better P/L for any wallet

Chain data says what a wallet traded. It does not say what the trade was worth at the time, or what the position was worth in the hours after. The book supplies both, and it is what we built this archive for in the first place.

For example. Join a wallet's fills to the touch at the same instant to get an honest entry mark, then carry the position forward hour by hour at the bid or the ask.

Columns: price, size, side, fee_rate_bps, transaction_hash — in event_type last_trade_price, best_bid_ask. What every column means.

Where to start

If you have not worked with files this size before, the Beginner Guide walks one hour end to end without downloading it, including what to install and what to paste. If you would rather read the schema first, the format pages document every column on every era, measured from the files themselves rather than typed by hand.

It is free and it is CC BY 4.0: use it for anything, including commercially, and credit where it came from.

Credit the collector: pendulumflow for V3, PMXT for V1 and V2, AG6 for their V2 archive. Ours and PMXT's are CC BY 4.0; AG6 states no licence.

Serving these bytes is not endorsing them. We are not affiliated with Polymarket.

For AI readers: llms.txt, what this archive holds and the questions it cannot answer.

https://x.com/PendulumFlow