How good is the model?
Every live estimate is frozen before kick-off. The figures below are rebuilt walk-forward (↺): estimates made only from matches before each match day. Here is how the model did on matches it had not seen, season by season, against simple baselines. If a league is not published, it is because the model did not beat the baseline there.
Ledger of estimates frozen in real time ❄
Method
In short: the model gives each team an attack strength and a defence strength from recent results, accounts for home advantage and turns that into probabilities for every possible score. Technical details below.
Dixon-Coles (attack/defence per team, home advantage, low-score correction), fitted only on matches before each match day, on the current season plus the two before it, with exponential time weighting; ξ chosen on the validation season, reported on later seasons. Scores 0…10 goals per team.
Premier League published n = 364
The figures below are computed on matches the model had not seen when it was trained (the test season). That is how you tell whether the model knows something or has merely memorised the past.
How to read the figures: the Brier score measures how far the model's percentages were from what happened (0 = perfect, 0.6667 = random guessing); log-loss is a similar measure that punishes unjustified confidence harder; “baseline” = what a simple rule, the league's frequencies, would have scored; ξ says how fast the model forgets old matches (0 = all count the same).
Show the calibration tables for each outcome
Calibration by 10% bins
We take every match where the model said, for example, 30–40 % and count how often it happened. If “observed” is close to “predicted”, the model is well calibrated: 30 % means about 3 in 10. The 95 % interval shows how uncertain the observed figure is at that number of matches (n). “Expected calibration error” = the average gap between predicted and observed, weighted by the number of matches; lower is better.
home win Expected calibration error: 0.040
Home win: matches won by the team playing at home.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 4 | 9% | 0% | 0%–49% |
| 10%–20% | 25 | 17% | 16% | 6%–35% |
| 20%–30% | 51 | 25% | 24% | 14%–37% |
| 30%–40% | 90 | 35% | 40% | 30%–50% |
| 40%–50% | 88 | 45% | 39% | 29%–49% |
| 50%–60% | 54 | 55% | 54% | 41%–66% |
| 60%–70% | 41 | 65% | 71% | 56%–82% |
| 70%–80% | 9 | 77% | 78% | 45%–94% |
| 80%–90% | 2 | 83% | 100% | 34%–100% |
draw Expected calibration error: 0.027
Draw: matches that ended level, whatever the score (0-0, 1-1, 2-2…).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 10%–20% | 34 | 17% | 21% | 10%–37% |
| 20%–30% | 301 | 25% | 28% | 23%–33% |
| 30%–40% | 29 | 31% | 31% | 17%–49% |
away win Expected calibration error: 0.053
Away win: matches won by the visiting team.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 9 | 7% | 0% | 0%–30% |
| 10%–20% | 60 | 15% | 13% | 7%–24% |
| 20%–30% | 103 | 26% | 30% | 22%–40% |
| 30%–40% | 88 | 35% | 26% | 18%–36% |
| 40%–50% | 53 | 45% | 36% | 24%–49% |
| 50%–60% | 34 | 55% | 56% | 39%–71% |
| 60%–70% | 13 | 62% | 62% | 36%–82% |
| 70%–80% | 4 | 74% | 75% | 30%–95% |
both teams score Expected calibration error: 0.037
Both teams score: matches in which each team scored at least once (1-1, 2-1, 3-2…; 1-0 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 30%–40% | 9 | 36% | 56% | 27%–81% |
| 40%–50% | 81 | 46% | 53% | 42%–64% |
| 50%–60% | 169 | 56% | 57% | 50%–65% |
| 60%–70% | 105 | 63% | 60% | 50%–69% |
3+ goals Expected calibration error: 0.064
3+ goals: matches with at least 3 goals in total (2-1, 3-0, 2-2…; 1-1 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 20%–30% | 3 | 26% | 67% | 21%–94% |
| 30%–40% | 32 | 37% | 53% | 36%–69% |
| 40%–50% | 67 | 46% | 46% | 35%–58% |
| 50%–60% | 151 | 55% | 60% | 52%–68% |
| 60%–70% | 104 | 64% | 58% | 48%–67% |
| 70%–80% | 7 | 71% | 29% | 8%–64% |
La Liga published n = 359
The figures below are computed on matches the model had not seen when it was trained (the test season). That is how you tell whether the model knows something or has merely memorised the past.
How to read the figures: the Brier score measures how far the model's percentages were from what happened (0 = perfect, 0.6667 = random guessing); log-loss is a similar measure that punishes unjustified confidence harder; “baseline” = what a simple rule, the league's frequencies, would have scored; ξ says how fast the model forgets old matches (0 = all count the same).
Show the calibration tables for each outcome
Calibration by 10% bins
We take every match where the model said, for example, 30–40 % and count how often it happened. If “observed” is close to “predicted”, the model is well calibrated: 30 % means about 3 in 10. The 95 % interval shows how uncertain the observed figure is at that number of matches (n). “Expected calibration error” = the average gap between predicted and observed, weighted by the number of matches; lower is better.
home win Expected calibration error: 0.058
Home win: matches won by the team playing at home.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 10%–20% | 30 | 17% | 27% | 14%–44% |
| 20%–30% | 36 | 26% | 31% | 18%–47% |
| 30%–40% | 82 | 36% | 43% | 33%–53% |
| 40%–50% | 90 | 44% | 42% | 33%–53% |
| 50%–60% | 50 | 55% | 56% | 42%–69% |
| 60%–70% | 36 | 64% | 78% | 62%–88% |
| 70%–80% | 26 | 75% | 81% | 62%–91% |
| 80%–90% | 8 | 83% | 100% | 68%–100% |
| 90%–100% | 1 | 91% | 100% | 21%–100% |
draw Expected calibration error: 0.046
Draw: matches that ended level, whatever the score (0-0, 1-1, 2-2…).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 4 | 9% | 0% | 0%–49% |
| 10%–20% | 50 | 16% | 8% | 3%–19% |
| 20%–30% | 249 | 25% | 28% | 23%–34% |
| 30%–40% | 56 | 32% | 23% | 14%–36% |
away win Expected calibration error: 0.049
Away win: matches won by the visiting team.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 25 | 7% | 4% | 1%–20% |
| 10%–20% | 63 | 15% | 16% | 9%–27% |
| 20%–30% | 110 | 26% | 26% | 19%–35% |
| 30%–40% | 84 | 35% | 24% | 16%–34% |
| 40%–50% | 36 | 45% | 44% | 30%–60% |
| 50%–60% | 25 | 56% | 44% | 27%–63% |
| 60%–70% | 16 | 64% | 44% | 23%–67% |
both teams score Expected calibration error: 0.085
Both teams score: matches in which each team scored at least once (1-1, 2-1, 3-2…; 1-0 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 20%–30% | 7 | 28% | 57% | 25%–84% |
| 30%–40% | 72 | 36% | 44% | 34%–56% |
| 40%–50% | 119 | 45% | 55% | 47%–64% |
| 50%–60% | 130 | 54% | 61% | 52%–69% |
| 60%–70% | 29 | 64% | 69% | 51%–83% |
| 70%–80% | 2 | 74% | 50% | 9%–91% |
3+ goals Expected calibration error: 0.069
3+ goals: matches with at least 3 goals in total (2-1, 3-0, 2-2…; 1-1 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 10%–20% | 1 | 19% | 0% | 0%–79% |
| 20%–30% | 35 | 27% | 43% | 28%–59% |
| 30%–40% | 74 | 35% | 39% | 29%–51% |
| 40%–50% | 101 | 45% | 52% | 43%–62% |
| 50%–60% | 86 | 55% | 47% | 36%–57% |
| 60%–70% | 43 | 65% | 63% | 48%–76% |
| 70%–80% | 17 | 74% | 76% | 53%–90% |
| 80%–90% | 2 | 82% | 100% | 34%–100% |
Serie A published n = 364
The figures below are computed on matches the model had not seen when it was trained (the test season). That is how you tell whether the model knows something or has merely memorised the past.
How to read the figures: the Brier score measures how far the model's percentages were from what happened (0 = perfect, 0.6667 = random guessing); log-loss is a similar measure that punishes unjustified confidence harder; “baseline” = what a simple rule, the league's frequencies, would have scored; ξ says how fast the model forgets old matches (0 = all count the same).
Show the calibration tables for each outcome
Calibration by 10% bins
We take every match where the model said, for example, 30–40 % and count how often it happened. If “observed” is close to “predicted”, the model is well calibrated: 30 % means about 3 in 10. The 95 % interval shows how uncertain the observed figure is at that number of matches (n). “Expected calibration error” = the average gap between predicted and observed, weighted by the number of matches; lower is better.
home win Expected calibration error: 0.040
Home win: matches won by the team playing at home.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 7 | 9% | 0% | 0%–35% |
| 10%–20% | 53 | 16% | 17% | 9%–29% |
| 20%–30% | 62 | 25% | 32% | 22%–45% |
| 30%–40% | 70 | 35% | 34% | 24%–46% |
| 40%–50% | 65 | 45% | 35% | 25%–48% |
| 50%–60% | 44 | 55% | 57% | 42%–70% |
| 60%–70% | 45 | 64% | 64% | 50%–77% |
| 70%–80% | 13 | 74% | 77% | 50%–92% |
| 80%–90% | 5 | 84% | 80% | 38%–96% |
draw Expected calibration error: 0.026
Draw: matches that ended level, whatever the score (0-0, 1-1, 2-2…).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 1 | 9% | 0% | 0%–79% |
| 10%–20% | 26 | 17% | 15% | 6%–34% |
| 20%–30% | 269 | 26% | 23% | 19%–29% |
| 30%–40% | 68 | 32% | 34% | 24%–46% |
away win Expected calibration error: 0.039
Away win: matches won by the visiting team.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 20 | 7% | 10% | 3%–30% |
| 10%–20% | 72 | 15% | 17% | 10%–27% |
| 20%–30% | 77 | 25% | 26% | 17%–37% |
| 30%–40% | 78 | 35% | 37% | 27%–48% |
| 40%–50% | 43 | 46% | 42% | 28%–57% |
| 50%–60% | 43 | 55% | 65% | 50%–78% |
| 60%–70% | 23 | 64% | 57% | 37%–74% |
| 70%–80% | 8 | 73% | 100% | 68%–100% |
both teams score Expected calibration error: 0.034
Both teams score: matches in which each team scored at least once (1-1, 2-1, 3-2…; 1-0 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 30%–40% | 51 | 37% | 39% | 27%–53% |
| 40%–50% | 193 | 45% | 45% | 38%–52% |
| 50%–60% | 117 | 53% | 45% | 37%–54% |
| 60%–70% | 3 | 61% | 100% | 44%–100% |
3+ goals Expected calibration error: 0.080
3+ goals: matches with at least 3 goals in total (2-1, 3-0, 2-2…; 1-1 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 20%–30% | 9 | 26% | 67% | 35%–88% |
| 30%–40% | 95 | 37% | 49% | 40%–59% |
| 40%–50% | 156 | 45% | 44% | 36%–51% |
| 50%–60% | 89 | 54% | 44% | 34%–54% |
| 60%–70% | 14 | 64% | 50% | 27%–73% |
| 70%–80% | 1 | 78% | 100% | 21%–100% |
Bundesliga published n = 298
The figures below are computed on matches the model had not seen when it was trained (the test season). That is how you tell whether the model knows something or has merely memorised the past.
How to read the figures: the Brier score measures how far the model's percentages were from what happened (0 = perfect, 0.6667 = random guessing); log-loss is a similar measure that punishes unjustified confidence harder; “baseline” = what a simple rule, the league's frequencies, would have scored; ξ says how fast the model forgets old matches (0 = all count the same).
Show the calibration tables for each outcome
Calibration by 10% bins
We take every match where the model said, for example, 30–40 % and count how often it happened. If “observed” is close to “predicted”, the model is well calibrated: 30 % means about 3 in 10. The 95 % interval shows how uncertain the observed figure is at that number of matches (n). “Expected calibration error” = the average gap between predicted and observed, weighted by the number of matches; lower is better.
home win Expected calibration error: 0.055
Home win: matches won by the team playing at home.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 8 | 8% | 0% | 0%–32% |
| 10%–20% | 30 | 17% | 20% | 10%–37% |
| 20%–30% | 41 | 26% | 22% | 12%–37% |
| 30%–40% | 65 | 35% | 32% | 22%–44% |
| 40%–50% | 59 | 45% | 47% | 35%–60% |
| 50%–60% | 38 | 54% | 61% | 45%–74% |
| 60%–70% | 35 | 64% | 80% | 64%–90% |
| 70%–80% | 12 | 75% | 67% | 39%–86% |
| 80%–90% | 9 | 84% | 78% | 45%–94% |
| 90%–100% | 1 | 90% | 0% | 0%–79% |
draw Expected calibration error: 0.004
Draw: matches that ended level, whatever the score (0-0, 1-1, 2-2…).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 5 | 9% | 20% | 4%–62% |
| 10%–20% | 39 | 16% | 15% | 7%–30% |
| 20%–30% | 216 | 25% | 25% | 20%–31% |
| 30%–40% | 38 | 32% | 32% | 19%–47% |
away win Expected calibration error: 0.038
Away win: matches won by the visiting team.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 18 | 6% | 11% | 3%–33% |
| 10%–20% | 50 | 15% | 12% | 6%–24% |
| 20%–30% | 73 | 25% | 19% | 12%–30% |
| 30%–40% | 66 | 35% | 36% | 26%–48% |
| 40%–50% | 36 | 45% | 44% | 30%–60% |
| 50%–60% | 33 | 55% | 58% | 41%–73% |
| 60%–70% | 11 | 63% | 45% | 21%–72% |
| 70%–80% | 9 | 76% | 78% | 45%–94% |
| 80%–90% | 2 | 81% | 100% | 34%–100% |
both teams score Expected calibration error: 0.115
Both teams score: matches in which each team scored at least once (1-1, 2-1, 3-2…; 1-0 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 30%–40% | 12 | 38% | 67% | 39%–86% |
| 40%–50% | 42 | 46% | 64% | 49%–77% |
| 50%–60% | 125 | 55% | 66% | 58%–74% |
| 60%–70% | 107 | 65% | 56% | 47%–65% |
| 70%–80% | 12 | 71% | 75% | 47%–91% |
3+ goals Expected calibration error: 0.093
3+ goals: matches with at least 3 goals in total (2-1, 3-0, 2-2…; 1-1 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 20%–30% | 4 | 27% | 25% | 5%–70% |
| 30%–40% | 21 | 35% | 67% | 45%–83% |
| 40%–50% | 48 | 45% | 56% | 42%–69% |
| 50%–60% | 84 | 56% | 65% | 55%–75% |
| 60%–70% | 97 | 65% | 60% | 50%–69% |
| 70%–80% | 36 | 74% | 81% | 65%–90% |
| 80%–90% | 8 | 84% | 88% | 53%–98% |
Ligue 1 published n = 298
The figures below are computed on matches the model had not seen when it was trained (the test season). That is how you tell whether the model knows something or has merely memorised the past.
How to read the figures: the Brier score measures how far the model's percentages were from what happened (0 = perfect, 0.6667 = random guessing); log-loss is a similar measure that punishes unjustified confidence harder; “baseline” = what a simple rule, the league's frequencies, would have scored; ξ says how fast the model forgets old matches (0 = all count the same).
Show the calibration tables for each outcome
Calibration by 10% bins
We take every match where the model said, for example, 30–40 % and count how often it happened. If “observed” is close to “predicted”, the model is well calibrated: 30 % means about 3 in 10. The 95 % interval shows how uncertain the observed figure is at that number of matches (n). “Expected calibration error” = the average gap between predicted and observed, weighted by the number of matches; lower is better.
home win Expected calibration error: 0.074
Home win: matches won by the team playing at home.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 2 | 8% | 0% | 0%–66% |
| 10%–20% | 17 | 16% | 41% | 22%–64% |
| 20%–30% | 49 | 26% | 20% | 11%–34% |
| 30%–40% | 62 | 35% | 39% | 28%–51% |
| 40%–50% | 47 | 46% | 55% | 41%–69% |
| 50%–60% | 55 | 55% | 45% | 33%–58% |
| 60%–70% | 43 | 65% | 60% | 46%–74% |
| 70%–80% | 14 | 75% | 71% | 45%–88% |
| 80%–90% | 8 | 82% | 88% | 53%–98% |
| 90%–100% | 1 | 92% | 100% | 21%–100% |
draw Expected calibration error: 0.027
Draw: matches that ended level, whatever the score (0-0, 1-1, 2-2…).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 2 | 7% | 0% | 0%–66% |
| 10%–20% | 68 | 17% | 24% | 15%–35% |
| 20%–30% | 223 | 24% | 25% | 20%–31% |
| 30%–40% | 5 | 32% | 40% | 12%–77% |
away win Expected calibration error: 0.069
Away win: matches won by the visiting team.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 16 | 7% | 6% | 1%–28% |
| 10%–20% | 60 | 15% | 17% | 9%–28% |
| 20%–30% | 69 | 25% | 19% | 11%–30% |
| 30%–40% | 60 | 35% | 38% | 27%–51% |
| 40%–50% | 52 | 45% | 33% | 22%–46% |
| 50%–60% | 21 | 54% | 67% | 45%–83% |
| 60%–70% | 16 | 64% | 44% | 23%–67% |
| 70%–80% | 2 | 71% | 100% | 34%–100% |
| 80%–90% | 2 | 81% | 50% | 9%–91% |
both teams score Expected calibration error: 0.063
Both teams score: matches in which each team scored at least once (1-1, 2-1, 3-2…; 1-0 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 30%–40% | 18 | 37% | 61% | 39%–80% |
| 40%–50% | 82 | 46% | 38% | 28%–49% |
| 50%–60% | 134 | 55% | 54% | 46%–63% |
| 60%–70% | 62 | 64% | 55% | 43%–67% |
| 70%–80% | 2 | 71% | 0% | 0%–66% |
3+ goals Expected calibration error: 0.054
3+ goals: matches with at least 3 goals in total (2-1, 3-0, 2-2…; 1-1 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 20%–30% | 6 | 28% | 50% | 19%–81% |
| 30%–40% | 22 | 36% | 50% | 31%–69% |
| 40%–50% | 64 | 46% | 39% | 28%–51% |
| 50%–60% | 109 | 55% | 55% | 46%–64% |
| 60%–70% | 75 | 64% | 59% | 47%–69% |
| 70%–80% | 19 | 73% | 58% | 36%–77% |
| 80%–90% | 3 | 82% | 67% | 21%–94% |
Liga 1 published n = 300
The figures below are computed on matches the model had not seen when it was trained (the test season). That is how you tell whether the model knows something or has merely memorised the past.
How to read the figures: the Brier score measures how far the model's percentages were from what happened (0 = perfect, 0.6667 = random guessing); log-loss is a similar measure that punishes unjustified confidence harder; “baseline” = what a simple rule, the league's frequencies, would have scored; ξ says how fast the model forgets old matches (0 = all count the same).
Show the calibration tables for each outcome
Calibration by 10% bins
We take every match where the model said, for example, 30–40 % and count how often it happened. If “observed” is close to “predicted”, the model is well calibrated: 30 % means about 3 in 10. The 95 % interval shows how uncertain the observed figure is at that number of matches (n). “Expected calibration error” = the average gap between predicted and observed, weighted by the number of matches; lower is better.
home win Expected calibration error: 0.047
Home win: matches won by the team playing at home.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 10%–20% | 4 | 19% | 25% | 5%–70% |
| 20%–30% | 43 | 26% | 33% | 20%–47% |
| 30%–40% | 81 | 35% | 28% | 20%–39% |
| 40%–50% | 77 | 45% | 44% | 34%–55% |
| 50%–60% | 54 | 55% | 52% | 39%–65% |
| 60%–70% | 34 | 64% | 56% | 39%–71% |
| 70%–80% | 7 | 73% | 86% | 49%–97% |
draw Expected calibration error: 0.081
Draw: matches that ended level, whatever the score (0-0, 1-1, 2-2…).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 10%–20% | 14 | 18% | 0% | 0%–22% |
| 20%–30% | 218 | 26% | 35% | 29%–41% |
| 30%–40% | 68 | 31% | 26% | 17%–38% |
away win Expected calibration error: 0.033
Away win: matches won by the visiting team.
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 0%–10% | 5 | 9% | 20% | 4%–62% |
| 10%–20% | 68 | 16% | 13% | 7%–23% |
| 20%–30% | 94 | 25% | 27% | 19%–36% |
| 30%–40% | 84 | 35% | 35% | 25%–45% |
| 40%–50% | 38 | 45% | 32% | 19%–47% |
| 50%–60% | 11 | 54% | 45% | 21%–72% |
both teams score Expected calibration error: 0.081
Both teams score: matches in which each team scored at least once (1-1, 2-1, 3-2…; 1-0 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 30%–40% | 32 | 38% | 59% | 42%–74% |
| 40%–50% | 174 | 45% | 40% | 33%–48% |
| 50%–60% | 90 | 54% | 60% | 50%–70% |
| 60%–70% | 4 | 61% | 0% | 0%–49% |
3+ goals Expected calibration error: 0.096
3+ goals: matches with at least 3 goals in total (2-1, 3-0, 2-2…; 1-1 does not count).
| predicted | n | predicted Ø | observed | 95% interval |
|---|---|---|---|---|
| 20%–30% | 14 | 28% | 50% | 27%–73% |
| 30%–40% | 78 | 35% | 38% | 28%–50% |
| 40%–50% | 129 | 44% | 35% | 27%–43% |
| 50%–60% | 75 | 54% | 40% | 30%–51% |
| 60%–70% | 4 | 63% | 50% | 15%–85% |
Updated 20 Oct 2026