Skip to main content
A market priced at 30¢ says Yes happens about 30% of the time. Calibration checks that claim against settled markets: of every market priced in a band some days before it closed, how many resolved Yes? This page explains the endpoint, where each venue’s prices come from, and how to read a band. You need it before trusting a strategy, which is a calibration band turned into a rule.

The endpoint

Bands with no markets are left out, which is why the Polymarket response below has gaps.

Reading a band

The gap between yes_rate and avg_price_usd is the band’s edge, in the same units:
  • yes_rate above avg_price_usd: Yes resolved more often than it was priced, so Yes was cheap. Kalshi sports at 10¢ to 20¢ resolved Yes 20% of the time against an average price of 15¢.
  • yes_rate below avg_price_usd: Yes was rich, so No was cheap. The same venue’s 80¢ to 90¢ band resolved Yes 74% of the time against 84¢.
Read markets before yes_rate. A rate on 4 markets means nothing; a rate on 2,904 means something about the past.

Where the prices come from

Every settled market that resolved Yes or No and has daily candles is included; markets that settled to a scalar value or were voided are not. For each horizon, the price is taken from the latest daily candle ending at or before the market’s close minus that many days: Prices of exactly 0 or 1 are dropped. venue=all pools both venues’ markets into one average; it is not an average of the two venues’ rates. A market’s category is the venue’s own category mapped onto the shared list, or read from its title when the venue gives none.
Kalshi history covers tens of thousands of settled markets (83,189 across both venues at the one-day horizon when this page was written); Polymarket’s covers 158. Most Polymarket bands are too small to mean anything, and there is no minimum bucket size: a band with one market is returned. This is history, not a forecast.

Freshness

The table is rebuilt from scratch at the end of every backfill run that added markets, candles or settlements, and the endpoint’s response is cached for ten minutes. refreshed_at is the same for every bucket.
  • Strategies: a band turned into a rule, with a confidence range and the markets that fit it now.
  • History: the candles and settled markets behind the table.
  • Venues: how each venue’s history differs.