Datasets
The price tape, free. Since 22 June 2026 three pollers on this box have written a row every time a Kalshi, Polymarket or Manifold market’s ask moved a cent — or once an hour when it did not. That is 39,512,645 rows in the 2 finished months published so far, one compressed CSV per month, with a checksum and the poller’s own day-by-day count so you can see any hour it was down. It is the same tape our bots are backtested on.
The files
2026-08 — market-price-snapshots-2026-08.csv.gz
Download 2026-08 (302 MB) checksum
2026-07 — market-price-snapshots-2026-07.csv.gz
Download 2026-07 (461 MB) checksum
Schema
Eight columns, UTF-8 CSV with a header row, sorted by polled_at then ticker. Read from the pollers’ own code, not from memory.
- ticker
- Kalshi: market ticker (KX...). Polymarket: market slug. Manifold: 'mf-' + slug.
- polled_at
- ISO-8601 UTC, second resolution, the poller's clock.
- yes_bid, yes_ask, last_price
- yes_bid, yes_ask, last_price in cents 0-100. Only Kalshi rows carry a real bid; the Polymarket and Manifold pollers write the ask into both bid and ask.
- volume, volume_24h, open_interest
- volume, volume_24h, open_interest as the platform reported them.
How it was collected
- Cadence. Kalshi every 1 min, Polymarket every 2 min, Manifold every 3 min (cron on the TinyCorp box).
- The row rule. A row is written when the ask moved >= 1 cent since that ticker's previous row, or the previous row is older than 3,600 s (heartbeat). An event tape, not a fixed cadence. So a flat market has one row an hour and a busy one has one every poll; count rows per market before you treat density as activity.
- Coverage. The markets the pollers were watching at the time — every open market on each venue that passed their status filter — not a curated subset. Markets enter the tape when listed and leave when they settle.
- Gaps. The bars above are the poller’s own count per day. A red bar is a day with no rows, which means the box or the poller was down, not that the markets were quiet. The exporter reads the live database a day at a time and never deletes from it.
- Started 2026-06-22. Earlier data was pruned before this archive existed and is not recoverable from this tape.
Reading it
zcat market-price-snapshots-2026-08.csv.gz | head — or in Python, pandas.read_csv("market-price-snapshots-2026-08.csv.gz"); the file is plain gzip. Prices are integers in cents, so divide by 100 for probabilities. Join Kalshi tickers to titles through the Kalshi API; Polymarket slugs are the URL path on polymarket.com.
Questions or a correction: contact. The bots that trade on this tape, and the ones that died trying, are in the Graveyard.