METHODOLOGY
Exactly how Predictions Soccer fetches soccer prediction-market prices from Kalshi and Polymarket, how matches are paired, and how 'best bets' are chosen.
Honest about what we do and don't do.
Data sources
Polymarket prices come from the public Gamma API (gamma-api.polymarket.com) β see the live
Polymarket sports markets. Kalshi prices come from the public Trade API (api.elections.kalshi.com) β browse the underlying
Kalshi markets. We poll both endpoints server-side every 12 seconds, cache the response, and serve it to your browser on a 15-second refresh.
How we price a market
For Polymarket we use the lastTradePrice, falling back to the first outcomePrice. For Kalshi we take the mid of yes_bid and
yes_ask when both are positive, otherwise the last trade price. A market with a price β€ 1Β’ is treated as illiquid and hidden β never displayed as "0Β’".
How we pair Kalshi and Polymarket
Each match is keyed by kickoff date plus a normalized version of both team names (lowercase, no punctuation, "FC/AFC/Club" stripped, longest two meaningful tokens). When the two books agree on date and teams, we attach Kalshi's home/draw/away prices to the same match row.
"Best bets" ranking
The "Best Bets" sections rank matches by the higher of the two home-win prices, after filtering out illiquid (β€1Β’) markets. That surfaces the games where the market has the strongest conviction β not the games most likely to be profitable bets.
What we don't do
- Make up missing data. If a book has no price, the cell is empty.
- Re-order matches based on affiliate payouts.
- Inject editorial picks above the prediction-market price.
- Track you across sites for advertising.
Corrections
Spot a wrong pairing or a stale price? The Kalshi and Polymarket APIs are the source of truth β if their prices change, ours do too on the next refresh. For pairing errors (same teams, different countries), reach out and we'll patch the normalizer.
Keep exploring
How Prediction Markets Work
Plain-English guide
About Predictions Soccer
What we do and don't do
Today's Predictions
Methodology in action
Match Winner Odds
Per-fixture 1X2
Sources
- Kalshi β soccer markets & rulebookLive contract prices and settlement rules for CFTC-regulated event contracts.
- Polymarket β sports marketsLive order books and market resolution rules.
- CFTC β event contractsUS regulator overseeing designated contract markets that list event contracts.
- FIFA β competitions & fixturesOfficial fixture, squad and tournament data used to label markets.
Frequently asked questions
How do you convert contract prices into probabilities?
A contract that settles at $1 trades between $0 and $1, so its price is read directly as an implied probability β 62c means a 62% market-implied chance.
How do you pair the same match across two venues?
Matches are matched on competition, kickoff time and both team names, then verified against the venues" own market titles before being shown side by side.
What happens when a market has no volume?
We hide it. An untraded quote is not a real price, and showing it would misrepresent the market.
How often is the data refreshed?
Roughly every 15 seconds while markets are open. Each page shows how long ago its data was updated.