Polymarket Lens

Calibration, mispricing, and the epistemics of prediction markets

Prediction markets trade on the proposition that crowds can forecast the future. Polymarket, the largest crypto-native prediction market, has now resolved over — markets with real money on the line. This page asks two questions: How accurate are those predictions? And where do the mispricing opportunities live? All data is fetched live from Polymarket's public API.

§1Calibration: Are the Markets Accurate?

A market is well-calibrated if events it prices at 30% actually happen ~30% of the time. The chart below groups all resolved markets into probability bins, then plots the predicted probability (market price ~1 month before resolution) against the actual outcome rate. Points on the diagonal = perfect calibration.

Each point = one probability decile. n = number of resolved markets in that bin. Dashed line = perfect calibration. Data: Polymarket Gamma API, resolved markets with ≥$5K volume.
Markets Analyzed
—
Brier Score
—
Directional Accuracy
—
Mean Surprise
—
Per-bin breakdown
Predicted Binn Actual Yes RateGap

§2Where the Market Was Wrong

These are the resolved markets with the largest gap between predicted probability and actual outcome — the moments where the crowd was most surprised. For a trader looking for mispricing patterns: these are the failure modes.

Fetching resolved markets…

Pattern Analysis

Analyzing patterns…

§3Active Mispricing Opportunities (Live Spreads)

The bid-ask spread is the market's uncertainty tax. Wide spreads = disagreement = opportunity. Tight spreads = consensus = priced in. Below are the widest and tightest active spreads on Polymarket right now.

Widest spreads (disagreement)

Loading spread data…

Tightest spreads (consensus)

§4Methodology

All data is fetched client-side from Polymarket's public Gamma API and CLOB API. No backend, no API keys.

Calibration method

For each resolved market, the pre-resolution probability is reconstructed using the oneMonthPriceChange field: predicted = finalPrice − oneMonthPriceChange, where finalPrice = 1 (resolved Yes) or 0 (resolved No). This gives the market's probability estimate ~1 month before resolution, avoiding the trivial case where the price has already converged to 0 or 1. Markets with < $5K volume are excluded for quality.

Brier score

Brier = (1/n) Σ (pᵢ − oᵢ)², where pᵢ = predicted probability, oᵢ = outcome (0 or 1). Lower is better. 0.25 ≈ random chance.

Spread data

Spreads are the spread field from the Gamma markets endpoint, representing the current bid-ask gap. Wider = more disagreement / lower liquidity.

Limitations

The oneMonthPriceChange proxy may not perfectly reflect the market's probability at a fixed point before resolution — it captures the price delta over a trailing month, which may include the resolution event itself for recently closed markets. Markets with no meaningful price change are excluded (they add no calibration signal). Multi-outcome events (e.g. "Who will win the election?") are decomposed into individual binary markets.