Skip to main content
Glama

Prediction Calibration

prediction_calibration
Read-onlyIdempotent

REALIZED win rate by shown price and minutes elapsed for short-horizon crypto up/down markets, net of taker fee — read from our own settled-outcomes archive, not from live prices. Answers the one question no venue will: "a side shown at 82 with five minutes left, how often did it ACTUALLY win?" Returns a grid of (price bucket x minute elapsed) -> n, realized_win_rate_pp, mean_shown_price_pp, calibration_gap_pp (realized minus shown — zero means the book is calibrated), breakeven_win_rate_pp (the shown price plus the taker fee that was actually in force for that market), and net_edge_pp (realized minus breakeven, which is what a taker would have kept). WHY AN ARCHIVE EXISTS AT ALL: a settled 15-minute window is exactly what these venues stop serving. Measured 2026-10-22, a polymarket.com window drops out of the default market listing within minutes of closing (its trade tape and resolution stay retrievable by a closed-market lookup, which the collector now uses), and the other venues serve settled windows only briefly or thinly. So this tool reads a local archive collected window-by-window as they settle. THE THREE VENUES ARE NEVER POOLED. polymarket.com settles on a whole-window Chainlink BTC/USD 60s TWAP; polymarket-us and Kalshi settle on a CF Benchmarks BRTI endpoint average. A whole-window average and an endpoint average are different random variables, so venue:"all" returns one grid PER VENUE and venues_pooled is always false. EVERY RATE CARRIES ITS 95% INTERVAL, AND EVERY EDGE SAYS WHETHER IT SURVIVES IT. Each cell gives realized_win_rate_ci95_lo/hi_pp (Wilson, so it never reports an impossible win rate above 100), the same interval carried onto net_edge_ci95_lo/hi_pp, and net_edge_distinguishable_from_zero. READ THAT BOOLEAN BEFORE net_edge_pp: at these sample sizes most cells are false, meaning the interval straddles zero and a net_edge_pp of +4pp is NOT evidence of an edge. For scale, at a 90% win rate even n=300 gives a 95% half-width of ~3.4pp while net edges here run +2 to +4pp — so a comfortable-looking sample still cannot call a small edge real. verdict says it per cell in plain words, and the first note says how many cells survived. A THIN CELL WITHHOLDS ITS RATE ENTIRELY. Any bucket holding fewer than 30 settled windows reports status "thin" with realized_win_rate_pp and every interval null rather than printing a rate from a sample too small to mean anything — a 2-sample "100% win rate" is the most misleading thing this tool could say. ALWAYS READ coverage BEFORE THE GRID: it gives the first and last window held, windows_total vs windows_settled, every UTC day inside the span with no windows at all, and the longest run of consecutive missing windows. A grid over a store with a three-day hole looks entirely normal and is measuring a different population. mean_fill_price_pp and fill_vs_shown_pp are populated for polymarket.com only — it is the one venue of the three that publishes a trade tape for these markets, so it is the only place realized FILL can be compared with the shown price instead of assumed equal to it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
assetNobtc (default) | eth | sol | xrp | bnb. Coverage differs by venue: polymarket and polymarket-us carry btc/eth/sol/xrp, Kalshi carries btc/eth/bnb.
venueNopolymarket | polymarket-us | kalshi | all (default polymarket). "all" returns one grid per venue, never a merged one.
minuteNoMinutes elapsed since window open, 0-based. Omit for the full grid; pass 5 for the "five minutes in" row only, which is also the cheapest query.
horizonNo15m (default). 5m | 1h | 1d are accepted but only 15m is collected today, so another value returns coverage.windows_total 0 rather than an error.
bucket_ppNoPrice-bucket width in percentage points: 5 | 10 (default) | 20 | 25 | 50. Must divide 100, so the last bucket is never narrower than the rest.
side_conventionNo"favorite" (default) folds each window onto whichever side was the favorite — the frame published claims about early favorites use. "yes" keeps the venue own YES/Up side.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.