How it is built

Methodology and reproduction

What the index measures

Existing public trackers score forecast accuracy: whether the crowd's prices were well-calibrated (Brier, log loss). This index measures something orthogonal that nobody publishes as a dated series: resolution integrity. When a market's proposed answer went to Polymarket's UMA optimistic oracle, how often was that answer contested before it settled, how many rounds did the fight run, and how much money was riding on the contested market.

Precise metric definitions

  • A market is disputed if and only if its UMA resolution timeline contains a disputed state.
  • Dispute depth is the count of disputed entries in the timeline. A timeline of proposed, disputed, proposed, disputed is a market contested twice.
  • The count dispute rate for a month is disputed markets divided by traded markets that carried a UMA resolution, per resolution month.
  • The volume-weighted rate is disputed traded volume divided by total traded volume carrying a UMA status, per resolution month. This is the honest headline: the count rate is dragged down over time by automated scaffold markets that trade little and are essentially never disputed.

The traded denominator

Both metrics are reported over traded markets only, markets with nonzero on-chain volume from the chain-validated resolution map. Polymarket's catalog is dominated by automated, never-traded scaffold markets that would otherwise swamp the signal, so untraded scaffold is excluded by design.

Data lineage

The dispute signal is the Polymarket Gamma umaResolutionStatuses timeline, pulled keyless for every closed market by date-sharded paging with recursive window-splitting. Gamma caps the page at 100 regardless of the requested limit and returns a 422 past roughly 2500 offset, so the pull shards by end-date window and recurses down to daily windows when a window still hits the offset cap. The traded denominator and volume figures come from the WS-1 chain-validated resolution map joined to per-token traded volume.

The Gamma timeline is a venue REST feed. It is used for the free index because it is keyless-reproducible and chain-anchored (below), and for no other field. It is the one sanctioned venue-REST input; everything else stays chain-sourced.

Chain anchor

Polymarket routes resolutions through several UMA CTF adapters. Each adapter's live optimistic oracle was resolved on-chain by reading its optimisticOracle() getter with a keyless eth_call. The observed adapters route to two live Polygon oracles:

0x2c0367a9db231ddebd88a94b4f6461a6e47c58b1 current binary and neg-risk adapters 0xee3afe347d5c74317041e2618c49534daf887c24 OptimisticOracleV2, older adapters

Anyone can reproduce that mapping in seconds. On top of it, Gamma-flagged disputes are matched to on-chain DisputePrice logs on those oracles, keying on the fact that a dispute log's ancillary data hashes to the market's CTF question id. That log-level match is throughput-bound on keyless getLogs (public Polygon endpoints return empty pages on large ranges), so it runs as a bounded sample rather than over the full history, and becomes exhaustive the moment a keyed getLogs endpoint is available. The adapter-to-oracle topology is the primary chain anchor and is fully verified today; the log-level match is stated honestly as a bounded sample.

Window and caveats

  • The series begins 2025-03, when Polymarket first exposed the UMA status timeline; earlier markets resolved through the original optimistic oracle with an empty timeline.
  • The last complete month is the edition month minus three, because markets ending recently have largely not finished resolving; trailing incomplete months are omitted.
  • Each edition is a snapshot as of its generation date. Late resolutions revise recent months, so a regeneration of an older edition will not byte-match; the committed files at each dated permalink are canonical, and the manifest hashes are what they attest.

Base rates and the model test

Aggregating every UMA-resolved traded market by category and by settlement size produces a base-rate table for how often each kind of market is contested. We pre-registered an out-of-sample test (train 2025-03 to 2025-12, test 2026-01 to 2026-04) of whether a listing-time model on question wording could beat these base rates. It could not: the base-rate table won on out-of-sample AUC, precision-recall AUC, and calibration. We therefore publish the base-rate table, not a model.

Reproduction

Every number is re-derivable from the keyless Gamma pull plus the published queries. The reproduction pack, published under the project's public GitHub organization at launch, carries the keyless backfill script, the aggregation SQL as runnable DuckDB queries, the chain-anchor eth_call snippet, and the field allowlist. Code is MIT; data is CC BY 4.0.