methodology
pdata aggregates over 400,000 open prediction markets (October 2026) across 8 platforms — Polymarket, Kalshi, Manifold, Myriad, Limitless, Predict, Opinion, and Gemini — into a single browsable surface. Every figure displayed is sourced from each platform's own public API and is reproducible.
what we display
24-hour volume is the venue-reported figure wherever the venue publishes one: Polymarket, Kalshi, Manifold, Myriad, Opinion and Gemini. Limitless's API has no 24h field and Predict's is missing for most markets, so for those two we recompute it from our own snapshots: Σ max(0, Δvolume) over the trailing 24h. Where a venue reports 24h volume only for a whole event — Manifold multiple-choice questions, Opinion's categorical markets — the per-answer figures come from snapshots the same way. Opinion's categorical event figure counts each trade twice, so we halve it, and a Kalshi event's figure is our sum of its markets.
No unit conversion across sources. Polymarket and Kalshi count shares and contracts, each paying $1 at resolution — the same figure their own dashboards show with a $ sign. Limitless and Myriad volumes are share counts too, as measured on one market each in October 2026. Predict, Opinion and Gemini figures are passed through as each reports them. Manifold counts play-money mana (M$) and is rendered in mana — Manifold is excluded from the homepage volume stack chart for currency reasons. The per-venue detail, with what we could and could not verify, is in how eight venues count volume.
the data flow
Each platform's adapter polls its upstream API on its own cadence, waiting 10–60 minutes between cycles depending on the source. Raw events and markets are normalised into a common schema and written to Postgres. When a market's price or volume has changed, a snapshot of it is recorded, at most once every 30 minutes per market. Rolling 24h figures — probability deltas, biggest movers, the homepage stack chart — derive from those snapshots and refresh every cycle.
derived metrics
- ·Δprob (24h): current probability minus the probability at the oldest snapshot recorded within the trailing 24 hours. NULL when there is no snapshot in that window (a market frozen for 24h or more) or the market has been closed for >24h.
- ·Biggest movers: ranked by
|Δprob|descending, gated by minimum 24h volume to filter thin-book noise. Per-source quotas keep a single venue from dominating. The rails follow the markets page's filters, so price-derivative markets are hidden there by default, like everywhere else on /markets. - ·In-focus grid (homepage): one notable market per platform-strip × category cell, scored by
|Δprob| × volume_24hr. A small hand-maintained title-pattern blocklist removes engagement-bait shapes — the only place pdata exercises explicit editorial judgment. - ·Price derivative: a boolean flag set by ~18 regex rules detecting asset-price markets (
BTC above $X,Will KOSPI open above N?,<asset> Up or Down, etc.). Drives the Prices filter on /markets, which hides them until ticked, and the curation of the homepage. - ·Normalised volume: 24h volume on a 0–100 log scale within each source,
100 × ln(v+1)² / ln(cap+1)², where the cap is the source's largest 24h volume (its second largest when the largest is more than 5× it). It compares magnitude across sources whose raw units differ. NULL when the underlying volume is NULL or 0.
caveats
- ·Manifold volumes are mana, not USD. Excluded from the USD volume stack chart.
- ·Gemini exposes volume only at the event level — per-contract rows show no 24h volume figure.
- ·Opinion only reports 24h volume at the event (parent) level — child markets carry no
volume24hfield. We synthesize per-market v24 from our own snapshot deltas, so a child row can read $0 even when its event row is non-zero. The two figures come from different paths in Opinion's backend and don't always agree, soSUM(child v24) ≠ event v24for Opinion is by design. - ·Manifold multiple-choice events have the same shape: the API gives a 24h volume on the parent but only cumulative volume per answer. We keep the parent number and integrate per-answer v24 from snapshots, so
SUM(answers.v24)can come in lower than the parent v24 by design. - ·~93% of Predict markets reference a Polymarket condition ID; the same question often appears on both. Each row on pdata is per-source — duplicates are intentional, not a merge bug.
- ·Predict and Opinion are auth-gated; pdata holds the API keys server-side. Coverage depends on the keys remaining valid.
- ·Curation excludes: Limitless markets and price-derivative formats (asset-price questions,
Up or Down,above/below $N) are filtered out of the homepage in-focus grid. On /markets, price-derivative markets are hidden by default and shown by ticking the Prices filter; Limitless is listed like any other source.