Skip to content
forecastspot

How we calculate the numbers

Short version: everything is converted to a probability, bookmaker margins are removed, and played matches are judged on prices from before kick-off.

Prediction-market prices

A Polymarket or Kalshi share pays $1 if the outcome happens, so a price of 38¢ reads as a 38% chance. Each match has three markets — home win, draw, away win. We show the market price and, in the header, the average of the two platforms.

Bookmaker odds and “fair” prices

Bookmaker odds include a margin: convert a 1X2 price set to probabilities and they add up to 102–110%, not 100%. To compare like with like we remove that margin proportionally for each bookmaker and average the result. That is the “fair” line you see next to the prediction markets. The individual bookmaker rows show the real odds you would be offered.

Odds formats

Use the selector in the header to switch between decimal, fractional, American odds and plain probability. It only changes how numbers are displayed; the underlying data is the same.

Closing prices

Once a match kicks off, prices start reacting to the game and finish at 0 or 100 when the market settles. So for played matches we show closing prices: each source’s last snapshot taken before kick-off. “How the markets called it” on a result page compares those closing prices with what actually happened.

Update times

When a page exists

A match page appears when Polymarket or Kalshi lists the game, usually one to two weeks before kick-off. The league calendar shows the rest of the season as plain text until then — we don’t publish empty pages for games nobody is pricing yet.

What we leave out

Found a number that looks wrong? Tell us at [email protected].

Last updated October 2026.