← Back to projects

Sports analytics

AFCON predictions

Monte Carlo simulations nailed the contenders' odds while the group stages were still chaotic (I predicted the Senegal win a month before the final!). Elo ratings and form features fed a LightGBM ensemble, and refreshed live because we're impatient.

Competition build January 2026 Match forecasting

Marwa Bouabid

Why this project?

This project is a passion project. I am from Morocco and we hosted AFCON this year. Attending matches during the break was a once in a lifetime experience. I wanted to learn how to use Monte Carlo Simulations and Airflow, so I decided to go for this. Turns out I learned much more...

LightGBM Monte Carlo Elo ratings Live ingest Airflow

Project summary

We built a match-by-match forecasting engine using rolling team strength and fatigue factors, ingesting historical match results, live fixture updates, and geospatial data for travel metrics. Our Monte Carlo engine churned out percentage odds for every contender, tracking their rise (and fall) as matches concluded.

Airflow handled the daily data pulls and reruns, keeping the dashboard fresh. We tracked Brier scores and applied isotonic calibration because uncalibrated probabilities are just guesses in a suit.

Highlights

  • Monte Carlo sims gave us early, accurate probabilities for top teams, even when the group stage looked like a coin toss.
  • Mashed up pre-tournament Elo, recency-weighted form, and travel distance into a compact, high-signal feature set.
  • Airflow kept our ingest and scoring pipelines on a tight leash, ensuring viewers saw up-to-the-minute odds.
  • A calibration pass boosted reliability by 8% on held-out fixtures. Trust, but verify.
  • The dashboard lets viewers slice odds by phase and compare our math against bookmaker benchmarks.

Business problem

Broadcasters and analysts need trustworthy, real-time odds to brief audiences without relying on betting markets. We solved that.

Results

Findings: Our early odds closely mirrored the final outcomes. Calibration curbed overconfidence, and SHAP values revealed that travel fatigue is a real buzzkill for teams.

Tech stack

  • Python
  • LightGBM
  • Airflow
  • Streamlit
  • SHAP

Analytics & methods

  • Feature selection
  • Brier score tracking
  • Isotonic calibration
  • SHAP explainers

Download a PDF with all references used for this project.

Download references