# Polymarket 2026 midterm scorecard: 13,186 contracts frozen before the vote

Every Polymarket contract about the 2026 US midterms, frozen on 17 October: 13,186 contracts in 1,352 events, a hashed manifest, two price checkpoints and a Brier rule declared before the vote. In 402 of 507 races the favourite already trades at 90¢ or more.

Canonical URL: https://vultax.com/research/midterm-scorecard-2026
Author: [Vultax Research](https://vultax.com/editorial-policy)
Published: 2026-10-17
Last public revision: 2026-10-17

Published research snapshots and calculations; these exports do not contain current quotes or live account data. Observation windows and populations are stated in the source captions and methodology. Missing metadata is unknown, not zero. A pre-registered research protocol with a frozen universe and clocks; no scores exist before the election. Prices are Polymarket order-book readings at stated times, not advice.

## Key figures

- Races where the favourite already trades at 90¢ or more: 79.3% — 402 of the 507 Senate, House and governor races with a two-sided quote at the freeze, 17 October 2026, 03:34 UTC. After the election this page shows how many of those favourites won.
- Contracts in the frozen manifest: 13,186 — In 1,352 Polymarket events: 4,552 race-winner and chamber-control contracts, 7,254 other election-outcome contracts, 1,380 listed but not scored.
- Primary price checkpoint: 2 Nov, 23:59 UTC — Order-book midpoints captured hourly from 25 October. A second checkpoint on 27 October at 23:59 UTC measures what the last week adds.
- Manifest SHA-256, first eight characters: 5b607bde — Full hash in the downloads. Nothing enters version 1 after the freeze; later listings go to a separately versioned supplement.

<a id="frozen-favourites"></a>
## What the market already says it knows

At the freeze, 402 of 507 Senate, House and governor races had a favourite priced at 90¢ or more, 332 at 95¢ or more, and only 10 below 60¢. Each race is counted once by its highest-priced contract, read as the midpoint of the best bid and ask in Polymarket's public catalogue at 03:34 UTC on 17 October 2026.

That is the shape the scorecard has to be honest about. Most contracts are near-certain and will score well whatever happens; the test is in the 105 races priced under 90¢ and in how often the favourites in each price band actually won. Both tables are declared below, before any result exists.

### Favourite's price per race at the freeze: 507 Senate, House and governor races, 17 October 2026

Each race counted once by its highest-priced contract, midpoint of best bid and ask at 03:34 UTC. 402 favourites at 90¢ or more; 10 below 60¢. Chamber-control contracts are not races and are left out of this count.

| Category | Races |
| --- | --- |
| 50-59¢ | 10 |
| 60-69¢ | 19 |
| 70-79¢ | 26 |
| 80-89¢ | 50 |
| 90-94¢ | 70 |
| 95-98¢ | 329 |
| 99¢+ | 3 |

[CSV](https://vultax.com/research/midterm-scorecard-2026/data.csv?dataset=frozen-favourites-chart), [JSON](https://vultax.com/research/midterm-scorecard-2026/data.json?dataset=frozen-favourites-chart)

<a id="universe"></a>
## The universe, frozen

The universe is every market of every event carrying Polymarket's `midterms` tag, open or already closed, plus 45 events found by a title screen of 22 related tags and the whole 22,858-event active catalogue and confirmed by hand: California's governor, lieutenant governor and propositions, state ballot measures, and Senate-and-governor combinations. The sweep finished at 03:34:08 UTC on 17 October 2026. Every discovered contract keeps a row, scored or not, with its ids, rule text and capture time.

Tier A is the headline set: race winners and chamber control. Tier B is everything else the general election settles. Tier C stays listed and unscored: 1,058 contracts already determined before the freeze, mostly primaries, and contracts that something other than an election outcome settles, such as a forecaster's odds, a campaign event, a leadership vote or a combination with an oil-price leg. 2,621 lettered placeholder outcomes keep their rows but are left out of the Tier A means.

Counts at the freeze, 17 October 2026, 03:34 UTC. An event whose contracts fall in two families is counted in both, so the events column adds to more than 1,352. Full rows, ids and rule text are in the manifest download.

| Contract family | Events | Contracts | Scored as |
| --- | --- | --- | --- |
| House race winners | 445 | 3,561 | Tier A |
| Governor race winners | 37 | 532 | Tier A |
| Senate race winners | 35 | 471 | Tier A |
| Chamber control and balance of power | 3 | 23 | Tier A |
| Margins of victory | 529 | 6,064 | Tier B |
| Turnout | 46 | 373 | Tier B |
| Other statewide offices and state legislatures | 32 | 240 | Tier B |
| County winners | 19 | 235 | Tier B |
| Seat counts | 33 | 216 | Tier B, except contracts already settled |
| Ballot measures | 37 | 50 | Tier B, except one already settled |
| Combinations | 36 | 155 | Tier B when every leg is an election result, else listed |
| Exit-poll shares | 9 | 52 | Tier B, outcome is a survey figure |
| Primaries, already decided | 45 | 783 | Listed, not scored |
| Campaign events, odds markets, leadership and process | 51 | 431 | Listed, not scored |

[CSV](https://vultax.com/research/midterm-scorecard-2026/data.csv?dataset=universe-table), [JSON](https://vultax.com/research/midterm-scorecard-2026/data.json?dataset=universe-table)

<a id="clocks"></a>
## Two clocks and a hash

The forecast that is scored is the order-book midpoint of every contract at 23:59:59 UTC on 2 November 2026, the night before the vote. A second checkpoint at the same hour on 27 October measures what the final week added. Captures run hourly from 25 October and every five minutes around both instants; the checkpoint reading is the latest capture that finished before the instant whose order-book requests answered for at least 99% of the manifest's tokens; a token the venue holds no order book for is an answered request and becomes a contract without a quote. A capture that finished after the instant is never used, whatever it shows, and no reading is carried forward.

The manifest's SHA-256 begins 5b607bde and is printed in full below. It covers the canonical JSON of the events and contract rows without the capture time, so anyone holding the file can recompute it. Prices are not part of the manifest. Contracts Polymarket lists after the freeze are recorded by each capture's re-sweep and scored in a separately versioned supplement, never merged into version 1.

### The clocks: what is on record and what is still to come

- Manifest frozen, Sat 17 Oct, 03:34 UTC: recorded. Sweep of the public catalogue finished; 13,186 contracts, SHA-256 recorded.
- Protocol published, Sat 17 Oct 2026: recorded. This page, the rules file and the scoring code, each hashed.
- Week-out checkpoint, Tue 27 Oct, 23:59 UTC: scheduled. Secondary clock: order-book midpoints for every contract.
- Primary checkpoint, Mon 2 Nov, 23:59 UTC: scheduled. The forecast that is scored.
- Election day, Tue 3 Nov 2026, polls close 23:00 to 06:00 UTC, 01:00 to 08:00 Tallinn: the event. Results are read from state election authorities; Polymarket's payouts are kept as a second record.

Sources: Polymarket's public Gamma and CLOB endpoints for the captures; state election authorities for results. A checkpoint counts only when a saved capture exists; a missed capture stays missed and is not rebuilt from later prices. The marks are not to scale.

manifest-v1.json, field manifest_sha256:

```
5b607bded8bd47c8f41ec083f54d6319d7178027c7914c64ab77f069c4a79dca
```

SHA-256 of the canonical JSON of {events, rows} with captured_at removed from every row; keys sorted at every depth. Frozen 17 October 2026, 03:34:08 UTC.

<a id="scoring-rule"></a>
## The scoring rule, declared now

Each contract gets a Brier score, the squared gap between its checkpoint price and what happened. The price is the midpoint of the best bid and best ask of the Yes order book; a contract with no bid or no ask has no price, stays in every table and is counted as missing. A spread wider than 10¢ keeps its price with a flag, and Tier A is reported with and without those rows.

Means are reported two ways: over contracts, and over races with every race weighted equally, because a race with twelve contracts is still one result. For every race the highest-priced contract is its favourite, and a table shows, per 10¢ band, how many favourites there were and how many won. Calibration bins of 10¢ report count, mean price and share resolved Yes. Two baselines use the same contracts and clocks: a constant 50¢, and the 27 October price. Intervals come from a bootstrap that resamples races, not contracts, 2,000 times from a fixed seed. No comparison with polls, forecasters or another venue is made, because none has a matched, rights-cleared benchmark. One election is one election: the text will say how little independent information it supplies.

From rules-v1.json, frozen 17 October 2026. A change after publication appears only as a dated correction on this page.

| Rule | Declared value |
| --- | --- |
| Primary metric | Brier score per contract, (p − o)² |
| Price field | Midpoint of best bid and best ask, Yes token order book, checkpoint capture |
| Missing price | No bid or no ask: row kept, counted as missing, not scored |
| Wide quote | Spread over 10¢: scored and flagged; Tier A shown with and without |
| Aggregation | Contract mean and race mean (equal weight per race); multi-outcome Brier as a secondary table |
| Placeholders | Lettered stand-in outcomes scored in all-contracts tables, excluded from Tier A means |
| Baselines | Constant 50¢ (Brier 0.25) and the 27 October price, same contracts |
| Uncertainty | Cluster bootstrap over races, 2,000 resamples, seed 20261103, 90% interval |
| Secondary metric | Log loss with prices clipped to 1¢ and 99¢ |
| Not done | No normalisation of multi-outcome prices in the primary analysis; no poll or venue comparison; no fees, profit or strategy |

[CSV](https://vultax.com/research/midterm-scorecard-2026/data.csv?dataset=scoring-rule-table), [JSON](https://vultax.com/research/midterm-scorecard-2026/data.json?dataset=scoring-rule-table)

<a id="outcomes"></a>
## Two outcome records, and what stays unscored

Every contract gets two outcome records that are never merged. The official record is the result published by the state or territorial election authority, first as an unofficial count and later as certified totals, with its URL and retrieval time; an Associated Press call is logged as an interim status, not as the official record. The venue record is Polymarket's own payout, read from its public market record with its resolution date and any dispute. The official record decides the score wherever it can; a disagreement between the two is flagged and listed, and a question no election authority answers is scored on the venue record and marked as such.

Voided or split resolutions leave every mean and are counted. A contract without a result at a scoring run is pending: shown with its price, left out of that run's means, filled in a later dated run that never rewrites an earlier one. The first run is planned for 4 to 6 November 2026 and will be labelled by status; certifications, recounts and the Georgia-style runoffs come in later runs. A contract whose rules changed between the freeze and a checkpoint is scored on the frozen text and listed.

<a id="check-it"></a>
## Check it

Download the [frozen manifest as CSV](https://vultax.com/datasets/midterm-scorecard-2026/manifest-v1.csv) (35 MB, one row per contract with its rule text) or [as gzipped JSON](https://vultax.com/datasets/midterm-scorecard-2026/manifest-v1.json.gz) (events and rows, with the hash rule inside), the [Gamma fields seen at the freeze](https://vultax.com/datasets/midterm-scorecard-2026/freeze-snapshot-v1.json), the [rules file](https://vultax.com/datasets/midterm-scorecard-2026/rules-v1.json), the [methods note](https://vultax.com/datasets/midterm-scorecard-2026/METHODS.md), the [coverage report](https://vultax.com/datasets/midterm-scorecard-2026/coverage-v1.json) and the [code](https://vultax.com/datasets/midterm-scorecard-2026/code/index.html) for the sweep, the captures and the scoring run. The [file list](https://vultax.com/datasets/midterm-scorecard-2026/manifest.json) carries a SHA-256 for every published file.

After the election this page adds the scored tables, the per-contract rows with both outcome records, the capture receipts and a dated corrections list. The result is not known and is not on this page. Related Vultax work: the monthly [Polymarket efficiency series](https://vultax.com/research/efficiency-series) and the study of [how long Polymarket takes to settle](https://vultax.com/research/how-long-polymarket-takes-to-settle-markets), which is why pending contracts are expected after 3 November.

## Revision notes

- 2026-10-17: Pre-registration published before the election: frozen manifest (SHA-256 beginning 5b607bde), two checkpoints, the scoring rule and the code. The result is not known and is not on this page.

## Sources and methodology

- [Polymarket Gamma API, events under the midterms tag](https://gamma-api.polymarket.com/events?tag_slug=midterms&closed=false&limit=100) — The public catalogue swept for the manifest, open and closed events, with offset and keyset paging.
- [Polymarket API documentation](https://docs.polymarket.com/) — Order books, midpoints and the public rate limits the captures stay inside.
- [Frozen manifest, rules, code and file hashes](https://vultax.com/datasets/midterm-scorecard-2026/manifest.json) — SHA-256 for every published file; the manifest's own hash is inside manifest-v1.json.
- [State election offices](https://www.nass.org/can-I-vote) — Where official results are read for the first outcome record.
