← DataHistorical
The settled past,
scored.
1.7M+ resolved Kalshi and Polymarket contracts since Jan 2026. 326K of those carry a t-24h forward price — the input you actually want for Brier scoring. Pre-aggregated calibration scorecards by venue and category. Per-market 7-day price history available live via REST.
{
"calibration": {
"brierScore": 0.187,
"hitRate": 0.738,
"sampleSize": 2695,
"t24hCoverage": 0.045
},
"byVenue": [ kalshi, polymarket ],
"byCategory": [ 9 categories ],
"byPriceBucket": [ 10 buckets ]
}1.7M+
Settled outcomes
326K
Brier-eligible
0.187
Marketwide Brier
73.8%
Hit-rate
Facets
What history actually contains.
Settled outcomes
Every prediction-market contract that has resolved on Kalshi or Polymarket with non-trivial volume since the SimpleFunctions coverage window opened in Jan 2026.
1.7M+
rows
venue · ticker · category · predicted_price · resolved_outcome · resolved_at · volumeBrier-eligible (t-24h)
Subset where we captured the YES price 24 hours before resolution — the rigorous input for forward Brier scoring. Polymarket coverage is highest; Kalshi backfill is in progress.
326K
rows
+ predicted_price_t24hCalibration scorecards
Pre-aggregated Brier, log-loss, and hit-rate by venue, category, and price bucket. The same metrics rendered live on /calibration, dumped monthly for offline modelling.
~1,200
scorecard rows
period · venue · category · brier · hit_rate · sample · price_bucketPer-market history
Rolling 7-day price + indicator history on every active market via REST. Polled every minute by SimpleFunctions infra; trim further down-sample.
7d
rolling window
ticker · captured_at · price · volume · indicators{}SimpleFunctions Index history
Fifteen-minute rows for the four SimpleFunctions Index values — Disagreement, GeoRisk, Breadth, and Activity — exported daily as flat JSONL.
180+
days
date · index_id · value · components{} · z_scoreSurface map
Choose the historical surface.
Backtests, calibration checks, and single-ticker inspection do not need the same object. These existing surfaces keep file exports, rendered scorecards, and rolling API history separate.
settled-markets JSONLMonthly JSONL partitions for resolved Kalshi and Polymarket contracts with final price, t-24h price, outcome, category, venue, and ticker.02Calibration file exportscalibration-scorecards JSONMonthly Brier and log-loss scorecards with a 14-day delay after month end, useful for reproducible model evaluation.03Live calibration/calibrationThe current rendered calibration view for quick sanity checks before building an offline scoring pipeline.04Rolling ticker history/api/public/market/{ticker}/historySeven-day rolling price and indicator history per active market, sized for live screens and short-window backtests.05Index-level historysf-index-history JSONLFifteen-minute SimpleFunctions Index rows exported as flat JSONL for regime detection and macro overlays.Calibration
How well prediction markets actually forecast.
Marketwide Brier of 0.187 across the t-24h sample, hit-rate 73.8%. The settlement-time baseline of 0.169 / 82.9% is shown for reference but is not a forecast — it's the price at which the market died, after the outcome became obvious.
0.187
Brier · t-24h
73.8%
Hit-rate · t-24h
0.169
Brier · settlement (baseline)
60K
Settlement-baseline sample
API
Per-market price history.
Every active market exposes a rolling 7-day price + indicator history at /api/public/market/{ticker}/history. Polled minutely, decimated for transport. Longer windows ship on the daily archive on /data/download.
GET /api/public/market/{ticker}/history?windowDays=7
{
"ticker": "KXFED-26JUN18-T3.50",
"windowDays": 7,
"indicatorHistory": [
{ "ts": "2026-05-03T12:00:00Z",
"price": 47, "iy": 412, "cri": 1.6 },
...
],
"regimeHistory": [
{ "ts": "...", "regime": "taker" },
...
]
}FAQ
Frequently asked.
How far back does the SimpleFunctions historical coverage go?
The settled-markets and indicator archives begin Jan 2026 — when SimpleFunctions began capturing forward prices on a fixed cadence. Older Polymarket subgraph data is partially backfilled where the upstream API still serves it. The coverage window is documented per-row via captured_at.
How do I evaluate a forecast model against this data?
Use the Settled Markets dataset and join on ticker. predicted_price_t24h is the rigorous input for forward Brier scoring (the price 24h before resolution); predicted_price is the settlement-time price kept as a fallback. /calibration renders the same Brier and hit-rate metrics live so you can sanity-check your pipeline.
Can I get more than 7 days of price history per market?
Per-market history beyond 7 days ships on the daily archive — full indicator-history dumps available on the contracted tier, point-in-time exports available for research collaboration.
Why are some categories under-represented?
Volume gating: only contracts with > $10K volume enter the historical archive, because anything thinner is dominated by maker noise rather than information. Sports and crypto-ladder contracts dominate the row count by sheer volume; macro and election contracts dominate the Brier-eligible subset because they sit in the order book longer.
Is the data point-in-time consistent?
predicted_price_t24h and predicted_price are point-in-time (timestamped on capture). Calibration scorecards aggregate within each export — so an older scorecard is a frozen view of the world as of its export date. The /calibration view always renders the most recent aggregation.
Adjacent surfaces
Bulk downloads →
All five datasets in JSON / JSONL.
Real-time feeds →
World state, RSS, MCP — live, no signup.
Indicators →
Twelve quantitative metrics on every market.
Calibration view →
Brier and hit-rate rendered live.
SimpleFunctions Index →
Daily disagreement / geo-risk / breadth time series.
Research papers →
How we compute the indicators and indices.