Election Markets as Training Data: Long Contracts, Thin Books, Loud Quotes
Election contracts trade for months and thinly — the order book, not the tape, carries the signal. Tick-level Kalshi and Polymarket politics data, €1 per day.
Political prediction markets are the oldest use of event contracts and the one most people have seen a chart of. The chart hides what the data actually is: a contract that lists in spring, trades a few times a day through summer, reprices on a debate, a poll or a court ruling, and settles on election night. Between those moments, almost everything the market says is said in the order book — bids and asks that move without a trade. This guide is about building datasets from that shape: what the label is, where the features are, how to join polls and news without leaking, and why the split has to follow the calendar of elections rather than the calendar on the wall.
Everything below runs on the CryptoStruct archive: every message Kalshi, Polymarket and 35+ crypto venues publish — every Level-2 snapshot and update at full depth, every trade, every contract, every day since we added the venue — captured co-located with nanosecond venue and receive timestamps and a gap-audited event-id chain, in one normalized schema. It is the same capture our own trading engine and enterprise feeds run on, sold as €1 day bundles you buy as a guest in the Data Shop with instant download — no subscription, no minimum, no sales call. Free full-day samples let you run every command in this guide before paying.
Contract lifetimes
A sports game contract exists for days; an election contract exists for months. In the Kalshi House race winner family a district's contract lists long before the vote, and in the 2028 presidential matchup markets a contract can trade for years. The series pages measure how long a contract ranked among the series' most traded contracts: in our 2026-10 measurement a House race contract ranked for about one captured day in that top-10 while a presidential-matchup contract ranked for about eighteen — a reminder that "days traded" on a politics page counts the days a contract was busy enough to rank, not the days it existed. The day bundle holds the contract's file on every day it was listed, busy or not.
For a model this inverts the arithmetic of the up/down training-data guide: instead of 288 labels a day with a short feature path each, you have one label per race and hundreds of days of feature path. The dataset is wide, not long. The questions a model can answer change with it — not "which way does the next window settle" but "is this book mispriced relative to the information available at this timestamp", evaluated over the contract's life and across many races.
Thin books, sparse tapes
Politics turnover is small. The whole category recorded a fraction of a percent of the sports turnover in our 2026-10 window, and most individual contracts print a handful of trades a day. That makes trade-based features — volume, VWAP, trade-flow imbalance — mostly noise: a day's "last price" can be a single ten-contract print that crossed a wide spread. The series pages show the quoted spread in contract-price cents and the top-of-book depth per side for the most traded contracts; on politics families both are typically an order of magnitude worse than on a game moneyline, and the contract tables show open, high, low and close that often sit on the same price for days.
The sparse tape has a practical consequence for how you read the archive: a politics series-day is small in trades but not in messages. Market makers re-quote on every headline, cancel and replace through the day, and the file records each of those changes with a nanosecond timestamp. That is the data.
Book updates as the signal
The ratio to look at first on a politics series page is Level-2 updates per trade. Where a crypto up/down window shows a few book updates per print, a politics contract shows dozens or hundreds: the book is where the market thinks. Features that work on such a contract are built from quote arrivals and cancellations rather than from prints — the time since the last re-quote, the direction of the last ten mid changes, the depth on each side and how it shifted in the last hour, the width of the spread against its own trailing distribution, and whether the move came from a bid lifted or an ask pulled. None of these exist in a price history; all of them are in the day file.
- Quote arrival rate per hour, split by side — a rise on one side before a poll release is a feature with a timestamp you can defend.
- Mid changes without trades — the count and net direction per day; on a thin contract this is most of the repricing.
- Depth imbalance at the top three levels, sampled on a fixed grid (the free reader builds the grid; depth and sampling are parameters).
- Spread regime — the day's quoted spread against the contract's own trailing weeks; it narrows into the final fortnight of a race and widens on uncertainty.
Primaries, midterms, general elections
The three kinds of race produce three label structures. A general-election seat is a binary contract per party or candidate — the Kalshi House race family and Polymarket's per-district House winners. A margin market such as midterm margin of victory is a ladder of buckets per race: exactly one bucket settles Yes, the rest No, and the ladder's prices read as a distribution over the margin rather than one probability. A primary or nomination market — the Democratic and Republican nominee families — is a ladder over candidates with the same one-hot structure, except that the field changes as candidates enter and withdraw, so the set of contracts is itself a time series.
Treat every ladder as one example when you count labels: a margin ladder with twelve buckets is one race, not twelve independent observations, and the buckets' prices must sum to about one (an arbitrage-free ladder is itself a check on your parser). The strike-ladder guide covers the same structure for economic releases and temperature markets; the mechanics transfer unchanged.
Calibration over months
Was the market right? The honest version of that question for politics is slow. A season of NFL games resolves hundreds of contracts; a midterm cycle resolves a few hundred House races once, every two years, and most of them were never close. The series pages compute the share of contracts whose favoured side at the opening price finished in the money, but only above a floor of settled contracts and only over the day's most traded contracts, and they label the outcome as implied from the last recorded print rather than the venue's official settlement. For many politics families that floor is not reached and the table is simply absent — which is the correct answer, not a missing feature.
A hundred days of quotes on one Senate race are a hundred observations of one outcome. Any calibration or accuracy figure has to be computed across races and across cycles, with the race as the unit — a model that looks superb inside one contract's life has usually learned that contract's drift.
Joining polls and news without leaking
The natural exogenous features for an election model are polls, fundraising filings, candidate announcements and court decisions. Joining them to a price history is where published political-market studies most often leak: a poll is time-stamped by its field dates or its publication day, the price by a daily close, and the two are aligned by date. With the day file you align by the second. Every quote and trade carries the venue's timestamp and our co-located receive timestamp, so a feature can be defined as "the state of the book one minute before the poll's publication timestamp" and the label as "the mid one hour after" — a leak-free event study at the resolution the market actually moved. The same alignment separates the market's reaction to a debate from the slow drift of the days around it.
Splits: by cycle and by race
Split by election cycle and by race, never at random. Random splits over days leak the contract's own future into training; random splits over races within one cycle leak the national environment that all of them share. The honest protocol holds out whole cycles where the archive allows it and whole races otherwise, trains on the contracts that had settled by the cut-off and purges the ones still open, and reports results per cycle. Expect wide confidence intervals; the data is wide, not long, and a model that claims precision over a handful of cycles has not met its test set yet.
Data plan
- Start with the series page of the race family you care about: Level-2 updates per trade, quoted spread, days traded per contract and the weekday profile tell you what kind of book you are buying.
- Download the free sample contract and build the quote-based features first — arrival rates, mid changes without trades, depth imbalance on a grid — before any price feature.
- Buy the contract's whole life as a range:
/shop/bundles?bundle=<series-key>&d=<from>..<to>pre-fills every day from the first listing to the settlement day; a politics series-day is small, so months are affordable at €1 per day. - Join polls and news by timestamp against the book, never by calendar day against a close.
- Count ladders as one example, hold out whole cycles, purge open races, and report per cycle.
Coverage
| Series | Venue | Days | Coverage | Size | |
|---|---|---|---|---|---|
| House Race Winner? | Kalshi | 232 | March 2026 – present | 8.44 GB | Browse days |
| Midterm margin of victory | Kalshi | 177 | April 2026 – present | 4.74 GB | Browse days |
| Democratic Primary winner | Kalshi | 232 | March 2026 – present | 977 MB | Browse days |
| Republican Primary winner | Kalshi | 232 | March 2026 – present | 365 MB | Browse days |
| 2026 House Election Winners — Democratic party (per district) | Polymarket | 331 | November 2025 – present | 52.3 GB | Browse days |
Live archive coverage of the series discussed here (updates daily).
The Politics category hub lists every family; the midterms, primaries and world elections topic hubs group them by race type. Everything is sold the same way: €1 per series-day, no subscription, no minimum, no account.
Limitations
The statistics on series pages cover the ten most traded contracts per day — the bundle holds every contract, the statistics do not, and on thin politics families many contracts never rank. Measurements quoted here are from 2026-10 and change as the archive grows; politics is a small category by turnover and its figures move with the election calendar. Polymarket files between 2025-09-16 and 2026-01-08 are affected by an adapter fault that left about half of them without order-book deltas (trades are complete) — that window covers autumn-2025 politics days and they are sold as-is and marked in the shop. Kalshi trades between 2026-02-26 and 2026-03-10 were recorded twice by the first recorder — de-duplicate on the trade id. All venues have a late start on 2026-06-17. Outcomes in our statistics are implied from the last recorded print, never the venue's official settlement, which you should join as the authoritative label. Venue APIs expose some historical market and price data, but not the tick-by-tick book path — check the current docs. Nothing here is betting or investment advice.
Why buy the data in this guide here
Four things every page on this site is built on — and the reason the numbers above exist at all.
We record everything
The complete public feed of each venue as it was published: every Level-2 snapshot and update at the venue's full book depth, every trade with its aggressor side, every quote, funding, mark-price and liquidation event — for every instrument the venue lists, every UTC day since we added the venue. Nothing sampled, no top-N cut, no on-demand capture.
Institutional grade
Captured co-located at the venue with the exchange timestamp and our receive timestamp in integer nanoseconds, an event-id chain that makes any gap visible, and one normalized schema across 35+ venues — the same capture our own high-frequency trading engine and enterprise feeds run on.
€1 per instrument-day
Any instrument-day is €1, series-day bundles start at €1 — no subscription, no minimum order, no tiers to unlock. Credit packs lower the effective price and never expire, and every venue has free full-day samples to test against first.
Self-service for everyone
Pick the days in the Data Shop, pay by card as a guest and download immediately — no sales call, no enterprise contract, no KYC. Coding agents buy the same files through the MCP server, and the free Agent Skill teaches them the format.
Agents: /llms.txt · MCP server /mcp · every page as markdown via Accept: text/markdown
Frequently asked questions
How long do election contracts trade on Kalshi and Polymarket?
Weeks to months — a House race contract lists long before the vote and a presidential nomination market can trade for years. Each series page prints the median number of captured days its contracts ranked among the series' most traded; the day bundles hold a contract's file on every day it was listed.
Why is there so little trading in political markets?
Because the information arrives in headlines, not in a continuous price process: market makers re-quote on news and cancel between them, while trades are sparse and small. The Level-2 updates per trade on a politics series page are typically far higher than on a sports or crypto contract — the book, not the tape, carries the signal.
Can order-book data predict elections?
It gives you the market's implied probability at any timestamp, the quotes behind it, and a settlement label per race — the inputs and the yardstick of a model. Whether a model beats the market is for your out-of-sample test to say, evaluated across races and cycles; outcomes in our statistics are implied from the last recorded print, not the official settlement.
Do you have 2026 midterm market data?
Yes — the Kalshi House race winner, midterm margin-of-victory and Senate families and Polymarket's per-district House winner markets are recorded day by day; the coverage table above and each series page show the exact spans. Sold as series-day bundles, €1 per series-day, no subscription, no minimum, no account.