Inspiration

Prediction markets are supposed to be the smartest signal available — thousands of people putting real money on outcomes. But are they actually well-calibrated for football? We decided to find out.

What we built

OddsMap fuses three data sources — 30 years of World Cup historical outcomes, Polymarket crypto-native odds, and Kalshi regulated US market odds — and runs them through a calibration engine to find where markets are systematically wrong.

We built a full pipeline on Zerve: data ingestion, calibration analysis, a feature model, and a 50,000-run Monte Carlo tournament simulation. The results are served through a live interactive Streamlit dashboard.

What we found

  • CAF and AFC teams are undervalued at 0.36× and 0.80× — markets consistently underprice African and Asian teams relative to their historical performance
  • Croatia has a +536% edge — the market prices them at 0.5% to win, our model says 3.2% based on two consecutive finals and strong xG overperformance
  • Brazil and France are overvalued — brand-recognition bias inflates their odds by 78% and 60% respectively against what the calibration data supports
  • Argentina is fairly priced — the reigning champion premium has been absorbed into markets correctly

How we built it

Built entirely on Zerve using Python. Four notebook blocks: data pipeline (Polymarket API + Kalshi API + historical dataset), calibration analysis (Brier score, regional bias detection, overperformer scoring), prediction model (feature matrix + power-law probability sharpening), and a Streamlit deployment with Plotly charts.

Challenges

Polymarket returns binary match markets mixed with tournament winner markets — required filtering logic. Zerve's environment has a read-only filesystem so pip installs are blocked — worked around using only pre-installed packages. The simulation needed power-law sharpening to produce realistic probability distributions across 57 teams.

What we learned

Markets are good at pricing favourites but systematically bad at pricing teams from underrepresented confederations. The bias is not random — it compounds across tournaments and is measurable with 30 years of data.

Built With

Share this project:

Updates