How It Works

This app uses 40+ years of international football data and proven statistical models to forecast match outcomes with calibrated probabilities.

1

Elo Rating

Team Strength Ranking

Each team has a dynamic strength rating. After every match, both teams' Elo ratings update based on the expected vs. actual outcome — beating a stronger opponent earns more points.

Expected score: E_A = 1 / (1 + 10^((R_B − R_A) / 400))

R'A = RA + K × (SA − EA)

R_A, R_B = Elo ratings before the match

S_A = Actual result (1=win, 0.5=draw, 0=loss)

K = Sensitivity factor (40 for international football)

📌 Example: Germany (1950) vs Czechia (1650). Germany's expected score = 0.94 — they win, gaining only ~2 pts. If Czechia wins, they gain +37 pts!

2
🎲

Score Prediction

Dixon-Coles Bivariate Poisson Model

Each team's attack strength (α) and defensive effect on opponents (β) are estimated from historical data. The Poisson distribution then models every possible scoreline.

Home expected goals:

λ_H = exp(μ + αH + βA + γ)

Away expected goals:

λ_A = exp(μ + αA + βH)

Poisson probability of scoring exactly k goals:

P(X=k) = e^(−λ) · λ^k / k!

μ = League baseline goal rate

α_i = Team i attack parameter

β_j = Team j defensive parameter (opponent goals allowed)

γ = Home advantage factor

Dixon-Coles Correction

Standard Poisson underestimates low-scoring outcomes (0-0, 1-0, 0-1, 1-1). Dixon-Coles applies a correction factor ρ to these four results, improving calibration at low scores.

📌 Example: Brazil (λ=1.8) vs Argentina (λ=1.1) → Model computes 13.2% for 2-1, 10.8% for 1-0, and so on for all scorelines.

3
📊

Outcome Probabilities

Win / Draw / Loss

After computing probabilities for every scoreline (0-0 through 6-6), they are grouped into the three match outcomes.

P(home_win) = Σ P(X=i, Y=j) for i > j
P(draw) = Σ P(X=i, Y=i) for all i
P(away_win) = Σ P(X=i, Y=j) for i < j
These three probabilities always sum to exactly 1.00 — they are exhaustive and mutually exclusive

📌 Example: Summing all home-win scoreline probabilities gives 58%. All draw scorelines → 22%. Remainder → 20% away win. Bars on the site show these percentages.

4
🎯

Model Quality

Measured by Brier Score

The Brier Score measures both accuracy and calibration of probabilistic forecasts. Lower is better. The model is penalised heavily for being confidently wrong.

BS = (1/n) × Σ (pᵢ − oᵢ)²

pᵢ = Model's predicted probability (0–1)

oᵢ = Actual outcome indicator (1 if occurred, else 0)

n = Number of predictions evaluated

0.00

Perfect

0.10–0.25

Very Good

≈ 0.67

Random

📌 Example: Model gave France 90% but Morocco won → penalty = (0.9−0)² = 0.81. Model gave 55% and was wrong → (0.55−0)² = 0.30. Confidence punished more.

Data Pipeline

🗃️

40+ Years Match Data

Compute Elo

🎲

Dixon-Coles Model

📊

Scoreline Probs

🎯

Outcome Predictions

Predictions refresh before every match. After each result, Elo ratings are revised and fed into the next prediction cycle, keeping the model current.

Predictions are probabilistic estimates, not guarantees of outcome.

How It Works | Model90