Model cards & calibration
These cards report the actual out-of-sample backtest metrics Golavo emits, one card per competition. They are generated from the schema-validated eval_summary*.json artifacts by scripts/build_model_cards.py — never hand-edited — so the numbers here match what CI validates. Log loss is primary. No model is a declared champion; forward evidence (the calibration record) is kept separate from these historical folds.
Men’s senior full internationals
Section titled “Men’s senior full internationals”- Scope: Men’s senior full internationals (forward seal→score surface plus these historical test folds).
- Source snapshot: martj42/international_results
ddd7249ac0c2, retrieved 2026-07-10 (CC0-1.0). - Folds: WC2022, EURO2024, WC2026 — strictly chronological; fitting and decay selection use only rows before each fold’s cutoff.
Competition report cards (positive skill means lower log loss than climatology):
FIFA World Cup report card (2022-11-20 to 2026-07-19):
| Model | Matches / folds | Log loss | Skill vs baseline (95% CI) | ECE | Fold rank |
|---|---|---|---|---|---|
| climatological (baseline) | 161 / 2 | 1.0636 | +0.0% (+0.0% to +0.0%) | 0.0310 | 5.0 (5–5) |
| Elo ordinal-logit | 161 / 2 | 0.9494 | +10.7% (+5.6% to +15.4%) | 0.1559 | 1.0 (1–1) |
| independent Poisson | 161 / 2 | 1.0027 | +5.7% (+0.7% to +10.6%) | 0.0972 | 3.0 (3–3) |
| time-decayed Dixon-Coles | 161 / 2 | 1.0000 | +6.0% (+0.6% to +10.9%) | 0.0920 | 2.0 (2–2) |
| bivariate Poisson | 161 / 2 | 1.0027 | +5.7% (+0.5% to +10.5%) | 0.0972 | 4.0 (4–4) |
Skill intervals use 2,000 seeded, fold-stratified match-bootstrap samples.
UEFA Euro report card (2024-06-14 to 2024-07-14):
| Model | Matches / folds | Log loss | Skill vs baseline (95% CI) | ECE | Fold rank |
|---|---|---|---|---|---|
| climatological (baseline) | 51 / 1 | 1.1422 | +0.0% (+0.0% to +0.0%) | 0.1377 | 5.0 (5–5) |
| Elo ordinal-logit | 51 / 1 | 1.0300 | +9.8% (+1.3% to +17.4%) | 0.0625 | 4.0 (4–4) |
| independent Poisson | 51 / 1 | 1.0228 | +10.5% (+3.4% to +17.2%) | 0.0887 | 2.0 (2–2) |
| time-decayed Dixon-Coles | 51 / 1 | 0.9973 | +12.7% (+4.5% to +19.8%) | 0.0890 | 1.0 (1–1) |
| bivariate Poisson | 51 / 1 | 1.0228 | +10.5% (+3.6% to +17.7%) | 0.0887 | 3.0 (3–3) |
Skill intervals use 2,000 seeded, fold-stratified match-bootstrap samples.
Log loss by fold (primary metric; lower is better; bold = best in fold):
| Model | WC2022 | EURO2024 | WC2026 |
|---|---|---|---|
| climatological (baseline) | 1.0742 | 1.1422 | 1.0565 |
| Elo ordinal-logit | 1.0157 | 1.0300 | 0.9055 |
| independent Poisson | 1.0677 | 1.0228 | 0.9598 |
| time-decayed Dixon-Coles | 1.0650 | 0.9973 | 0.9571 |
| bivariate Poisson | 1.0677 | 1.0228 | 0.9598 |
Every candidate beats the climatological baseline on log loss on every fold; the best model varies by fold and none is crowned a champion.
Calibration — most recent fold (WC2026):
| Model | Brier | ECE | RPS |
|---|---|---|---|
| climatological (baseline) | 0.6371 | 0.0158 | 0.2252 |
| Elo ordinal-logit | 0.5318 | 0.1603 | 0.1725 |
| independent Poisson | 0.5717 | 0.0876 | 0.1936 |
| time-decayed Dixon-Coles | 0.5706 | 0.1029 | 0.1925 |
| bivariate Poisson | 0.5717 | 0.0876 | 0.1936 |
Reliability — Elo ordinal-logit on WC2026 (Wilson 95% intervals; empty bins omitted):
| Confidence bin | n | Empirical | Wilson 95% |
|---|---|---|---|
| 0.3–0.4 | 17 | 0.529 | [0.31, 0.74] |
| 0.4–0.5 | 34 | 0.588 | [0.42, 0.74] |
| 0.5–0.6 | 28 | 0.786 | [0.60, 0.90] |
| 0.6–0.7 | 15 | 0.733 | [0.48, 0.89] |
| 0.7–0.8 | 3 | 0.667 | [0.21, 0.94] |
English Premier League
Section titled “English Premier League”- Scope: English Premier League (historical, completed seasons only — not live).
- Source snapshot: openfootball
a5dd38b3bcbe, retrieved 2026-07-11 (CC0-1.0). - Folds: EPL2022-23, EPL2023-24, EPL2024-25 — strictly chronological; fitting and decay selection use only rows before each fold’s cutoff.
Competition report cards (positive skill means lower log loss than climatology):
English Premier League report card (2022-08-01 to 2025-06-30):
| Model | Matches / folds | Log loss | Skill vs baseline (95% CI) | ECE | Fold rank |
|---|---|---|---|---|---|
| climatological (baseline) | 1140 / 3 | 1.0623 | +0.0% (+0.0% to +0.0%) | 0.0298 | 5.0 (5–5) |
| Elo ordinal-logit | 1140 / 3 | 0.9924 | +6.6% (+5.0% to +8.1%) | 0.0622 | 2.0 (1–4) |
| independent Poisson | 1140 / 3 | 1.0065 | +5.2% (+3.3% to +7.2%) | 0.0542 | 1.7 (1–2) |
| time-decayed Dixon-Coles | 1140 / 3 | 1.0104 | +4.9% (+2.9% to +6.9%) | 0.0528 | 3.7 (3–4) |
| bivariate Poisson | 1140 / 3 | 1.0065 | +5.2% (+3.3% to +7.2%) | 0.0542 | 2.7 (2–3) |
Skill intervals use 2,000 seeded, fold-stratified match-bootstrap samples.
Log loss by fold (primary metric; lower is better; bold = best in fold):
| Model | EPL2022-23 | EPL2023-24 | EPL2024-25 |
|---|---|---|---|
| climatological (baseline) | 1.0495 | 1.0551 | 1.0822 |
| Elo ordinal-logit | 1.0064 | 0.9634 | 1.0075 |
| independent Poisson | 1.0250 | 0.9494 | 1.0451 |
| time-decayed Dixon-Coles | 1.0272 | 0.9587 | 1.0452 |
| bivariate Poisson | 1.0250 | 0.9494 | 1.0451 |
Every candidate beats the climatological baseline on log loss on every fold; the best model varies by fold and none is crowned a champion.
Calibration — most recent fold (EPL2024-25):
| Model | Brier | ECE | RPS |
|---|---|---|---|
| climatological (baseline) | 0.6565 | 0.0437 | 0.2358 |
| Elo ordinal-logit | 0.6025 | 0.0362 | 0.2092 |
| independent Poisson | 0.6296 | 0.0601 | 0.2229 |
| time-decayed Dixon-Coles | 0.6292 | 0.0536 | 0.2228 |
| bivariate Poisson | 0.6296 | 0.0601 | 0.2229 |
Reliability — Elo ordinal-logit on EPL2024-25 (Wilson 95% intervals; empty bins omitted):
| Confidence bin | n | Empirical | Wilson 95% |
|---|---|---|---|
| 0.3–0.4 | 82 | 0.354 | [0.26, 0.46] |
| 0.4–0.5 | 160 | 0.475 | [0.40, 0.55] |
| 0.5–0.6 | 85 | 0.588 | [0.48, 0.69] |
| 0.6–0.7 | 42 | 0.643 | [0.49, 0.77] |
| 0.7–0.8 | 11 | 0.909 | [0.62, 0.98] |
La Liga
Section titled “La Liga”- Scope: La Liga (historical, completed seasons only — not live).
- Source snapshot: openfootball
a5dd38b3bcbe, retrieved 2026-07-11 (CC0-1.0). - Folds: LALIGA2021-22, LALIGA2022-23, LALIGA2023-24 — strictly chronological; fitting and decay selection use only rows before each fold’s cutoff.
Competition report cards (positive skill means lower log loss than climatology):
La Liga report card (2021-08-01 to 2024-06-30):
| Model | Matches / folds | Log loss | Skill vs baseline (95% CI) | ECE | Fold rank |
|---|---|---|---|---|---|
| climatological (baseline) | 1140 / 3 | 1.0699 | +0.0% (+0.0% to +0.0%) | 0.0232 | 5.0 (5–5) |
| Elo ordinal-logit | 1140 / 3 | 1.0032 | +6.2% (+4.7% to +7.8%) | 0.0555 | 3.3 (2–4) |
| independent Poisson | 1140 / 3 | 0.9898 | +7.5% (+5.5% to +9.5%) | 0.0451 | 2.0 (1–3) |
| time-decayed Dixon-Coles | 1140 / 3 | 0.9892 | +7.5% (+5.6% to +9.5%) | 0.0485 | 1.7 (1–3) |
| bivariate Poisson | 1140 / 3 | 0.9898 | +7.5% (+5.5% to +9.4%) | 0.0451 | 3.0 (2–4) |
Skill intervals use 2,000 seeded, fold-stratified match-bootstrap samples.
Log loss by fold (primary metric; lower is better; bold = best in fold):
| Model | LALIGA2021-22 | LALIGA2022-23 | LALIGA2023-24 |
|---|---|---|---|
| climatological (baseline) | 1.0811 | 1.0519 | 1.0767 |
| Elo ordinal-logit | 1.0058 | 1.0006 | 1.0030 |
| independent Poisson | 1.0089 | 0.9863 | 0.9743 |
| time-decayed Dixon-Coles | 1.0045 | 0.9936 | 0.9694 |
| bivariate Poisson | 1.0089 | 0.9863 | 0.9743 |
Every candidate beats the climatological baseline on log loss on every fold; the best model varies by fold and none is crowned a champion.
Calibration — most recent fold (LALIGA2023-24):
| Model | Brier | ECE | RPS |
|---|---|---|---|
| climatological (baseline) | 0.6512 | 0.0219 | 0.2240 |
| Elo ordinal-logit | 0.5986 | 0.0711 | 0.1991 |
| independent Poisson | 0.5795 | 0.0272 | 0.1904 |
| time-decayed Dixon-Coles | 0.5765 | 0.0458 | 0.1894 |
| bivariate Poisson | 0.5795 | 0.0272 | 0.1904 |
Reliability — time-decayed Dixon-Coles on LALIGA2023-24 (Wilson 95% intervals; empty bins omitted):
| Confidence bin | n | Empirical | Wilson 95% |
|---|---|---|---|
| 0.3–0.4 | 73 | 0.342 | [0.24, 0.46] |
| 0.4–0.5 | 132 | 0.508 | [0.42, 0.59] |
| 0.5–0.6 | 84 | 0.512 | [0.41, 0.62] |
| 0.6–0.7 | 53 | 0.660 | [0.53, 0.77] |
| 0.7–0.8 | 23 | 0.870 | [0.68, 0.95] |
| 0.8–0.9 | 15 | 0.867 | [0.62, 0.96] |
Bundesliga
Section titled “Bundesliga”- Scope: Bundesliga (historical, completed seasons only — not live).
- Source snapshot: openfootball
a5dd38b3bcbe, retrieved 2026-07-11 (CC0-1.0). - Folds: BUNDESLIGA2022-23, BUNDESLIGA2023-24, BUNDESLIGA2024-25 — strictly chronological; fitting and decay selection use only rows before each fold’s cutoff.
Competition report cards (positive skill means lower log loss than climatology):
Bundesliga report card (2022-08-01 to 2025-06-30):
| Model | Matches / folds | Log loss | Skill vs baseline (95% CI) | ECE | Fold rank |
|---|---|---|---|---|---|
| climatological (baseline) | 918 / 3 | 1.0751 | +0.0% (+0.0% to +0.0%) | 0.0346 | 5.0 (5–5) |
| Elo ordinal-logit | 918 / 3 | 1.0149 | +5.6% (+3.9% to +7.3%) | 0.0374 | 2.3 (1–3) |
| independent Poisson | 918 / 3 | 1.0160 | +5.5% (+3.4% to +7.6%) | 0.0569 | 1.7 (1–3) |
| time-decayed Dixon-Coles | 918 / 3 | 1.0198 | +5.1% (+3.1% to +7.1%) | 0.0588 | 3.3 (2–4) |
| bivariate Poisson | 918 / 3 | 1.0160 | +5.5% (+3.4% to +7.6%) | 0.0569 | 2.7 (2–4) |
Skill intervals use 2,000 seeded, fold-stratified match-bootstrap samples.
Log loss by fold (primary metric; lower is better; bold = best in fold):
| Model | BUNDESLIGA2022-23 | BUNDESLIGA2023-24 | BUNDESLIGA2024-25 |
|---|---|---|---|
| climatological (baseline) | 1.0569 | 1.0754 | 1.0930 |
| Elo ordinal-logit | 0.9947 | 1.0264 | 1.0237 |
| independent Poisson | 0.9931 | 1.0197 | 1.0353 |
| time-decayed Dixon-Coles | 0.9970 | 1.0287 | 1.0338 |
| bivariate Poisson | 0.9931 | 1.0197 | 1.0353 |
Every candidate beats the climatological baseline on log loss on every fold; the best model varies by fold and none is crowned a champion.
Calibration — most recent fold (BUNDESLIGA2024-25):
| Model | Brier | ECE | RPS |
|---|---|---|---|
| climatological (baseline) | 0.6643 | 0.0662 | 0.2379 |
| Elo ordinal-logit | 0.6140 | 0.0189 | 0.2130 |
| independent Poisson | 0.6217 | 0.0886 | 0.2174 |
| time-decayed Dixon-Coles | 0.6206 | 0.0837 | 0.2173 |
| bivariate Poisson | 0.6217 | 0.0886 | 0.2174 |
Reliability — Elo ordinal-logit on BUNDESLIGA2024-25 (Wilson 95% intervals; empty bins omitted):
| Confidence bin | n | Empirical | Wilson 95% |
|---|---|---|---|
| 0.3–0.4 | 59 | 0.390 | [0.28, 0.52] |
| 0.4–0.5 | 139 | 0.432 | [0.35, 0.51] |
| 0.5–0.6 | 73 | 0.548 | [0.43, 0.66] |
| 0.6–0.7 | 30 | 0.733 | [0.56, 0.86] |
| 0.7–0.8 | 5 | 0.800 | [0.38, 0.96] |
Serie A
Section titled “Serie A”- Scope: Serie A (historical, completed seasons only — not live).
- Source snapshot: openfootball
a5dd38b3bcbe, retrieved 2026-07-11 (CC0-1.0). - Folds: SERIEA2021-22, SERIEA2022-23, SERIEA2023-24 — strictly chronological; fitting and decay selection use only rows before each fold’s cutoff.
Competition report cards (positive skill means lower log loss than climatology):
Serie A report card (2021-08-01 to 2024-06-30):
| Model | Matches / folds | Log loss | Skill vs baseline (95% CI) | ECE | Fold rank |
|---|---|---|---|---|---|
| climatological (baseline) | 1140 / 3 | 1.0857 | +0.0% (+0.0% to +0.0%) | 0.0248 | 5.0 (5–5) |
| Elo ordinal-logit | 1140 / 3 | 1.0091 | +7.1% (+5.7% to +8.6%) | 0.0425 | 2.3 (1–4) |
| independent Poisson | 1140 / 3 | 1.0071 | +7.2% (+5.3% to +9.2%) | 0.0427 | 2.7 (2–3) |
| time-decayed Dixon-Coles | 1140 / 3 | 1.0040 | +7.5% (+5.6% to +9.4%) | 0.0453 | 1.3 (1–2) |
| bivariate Poisson | 1140 / 3 | 1.0071 | +7.2% (+5.2% to +9.2%) | 0.0427 | 3.7 (3–4) |
Skill intervals use 2,000 seeded, fold-stratified match-bootstrap samples.
Log loss by fold (primary metric; lower is better; bold = best in fold):
| Model | SERIEA2021-22 | SERIEA2022-23 | SERIEA2023-24 |
|---|---|---|---|
| climatological (baseline) | 1.0900 | 1.0792 | 1.0880 |
| Elo ordinal-logit | 1.0052 | 1.0040 | 1.0182 |
| independent Poisson | 1.0065 | 1.0120 | 1.0029 |
| time-decayed Dixon-Coles | 1.0045 | 1.0091 | 0.9985 |
| bivariate Poisson | 1.0065 | 1.0120 | 1.0029 |
Every candidate beats the climatological baseline on log loss on every fold; the best model varies by fold and none is crowned a champion.
Calibration — most recent fold (SERIEA2023-24):
| Model | Brier | ECE | RPS |
|---|---|---|---|
| climatological (baseline) | 0.6587 | 0.0144 | 0.2245 |
| Elo ordinal-logit | 0.6109 | 0.0337 | 0.2010 |
| independent Poisson | 0.6003 | 0.0279 | 0.1958 |
| time-decayed Dixon-Coles | 0.5989 | 0.0342 | 0.1957 |
| bivariate Poisson | 0.6003 | 0.0279 | 0.1958 |
Reliability — time-decayed Dixon-Coles on SERIEA2023-24 (Wilson 95% intervals; empty bins omitted):
| Confidence bin | n | Empirical | Wilson 95% |
|---|---|---|---|
| 0.3–0.4 | 65 | 0.385 | [0.28, 0.51] |
| 0.4–0.5 | 121 | 0.488 | [0.40, 0.58] |
| 0.5–0.6 | 95 | 0.495 | [0.40, 0.59] |
| 0.6–0.7 | 68 | 0.662 | [0.54, 0.76] |
| 0.7–0.8 | 30 | 0.700 | [0.52, 0.83] |
| 0.8–0.9 | 1 | 0.000 | [0.00, 0.79] |
Ligue 1
Section titled “Ligue 1”- Scope: Ligue 1 (historical, completed seasons only — not live).
- Source snapshot: openfootball
a5dd38b3bcbe, retrieved 2026-07-11 (CC0-1.0). - Folds: LIGUE1-2022-23, LIGUE1-2023-24, LIGUE1-2024-25 — strictly chronological; fitting and decay selection use only rows before each fold’s cutoff.
Competition report cards (positive skill means lower log loss than climatology):
Ligue 1 report card (2022-08-01 to 2025-06-30):
| Model | Matches / folds | Log loss | Skill vs baseline (95% CI) | ECE | Fold rank |
|---|---|---|---|---|---|
| climatological (baseline) | 992 / 3 | 1.0734 | +0.0% (+0.0% to +0.0%) | 0.0298 | 5.0 (5–5) |
| Elo ordinal-logit | 992 / 3 | 1.0198 | +5.0% (+3.4% to +6.5%) | 0.0485 | 3.0 (1–4) |
| independent Poisson | 992 / 3 | 1.0123 | +5.7% (+3.7% to +7.6%) | 0.0543 | 1.3 (1–2) |
| time-decayed Dixon-Coles | 992 / 3 | 1.0148 | +5.5% (+3.6% to +7.4%) | 0.0437 | 3.3 (3–4) |
| bivariate Poisson | 992 / 3 | 1.0123 | +5.7% (+3.9% to +7.6%) | 0.0543 | 2.3 (2–3) |
Skill intervals use 2,000 seeded, fold-stratified match-bootstrap samples.
Log loss by fold (primary metric; lower is better; bold = best in fold):
| Model | LIGUE1-2022-23 | LIGUE1-2023-24 | LIGUE1-2024-25 |
|---|---|---|---|
| climatological (baseline) | 1.0747 | 1.0917 | 1.0535 |
| Elo ordinal-logit | 1.0190 | 1.0445 | 0.9960 |
| independent Poisson | 1.0216 | 1.0337 | 0.9794 |
| time-decayed Dixon-Coles | 1.0229 | 1.0349 | 0.9844 |
| bivariate Poisson | 1.0216 | 1.0337 | 0.9794 |
Every candidate beats the climatological baseline on log loss on every fold; the best model varies by fold and none is crowned a champion.
Calibration — most recent fold (LIGUE1-2024-25):
| Model | Brier | ECE | RPS |
|---|---|---|---|
| climatological (baseline) | 0.6363 | 0.0302 | 0.2358 |
| Elo ordinal-logit | 0.5938 | 0.0671 | 0.2147 |
| independent Poisson | 0.5820 | 0.0591 | 0.2099 |
| time-decayed Dixon-Coles | 0.5853 | 0.0626 | 0.2103 |
| bivariate Poisson | 0.5820 | 0.0591 | 0.2099 |
Reliability — independent Poisson on LIGUE1-2024-25 (Wilson 95% intervals; empty bins omitted):
| Confidence bin | n | Empirical | Wilson 95% |
|---|---|---|---|
| 0.3–0.4 | 40 | 0.425 | [0.29, 0.58] |
| 0.4–0.5 | 143 | 0.483 | [0.40, 0.56] |
| 0.5–0.6 | 76 | 0.645 | [0.53, 0.74] |
| 0.6–0.7 | 35 | 0.714 | [0.55, 0.84] |
| 0.7–0.8 | 10 | 0.700 | [0.40, 0.89] |
| 0.8–0.9 | 2 | 1.000 | [0.34, 1.00] |
Promotion criteria for challengers
Section titled “Promotion criteria for challengers”A black-box challenger (e.g. gradient boosting on engineered features, including Dixon-Coles outputs) may be considered only after: (1) at least two full forward seasons of evaluation, (2) better RPS and log loss (paired bootstrap, p < 0.05), (3) no calibration regression, and (4) a feature-attribution audit. Until then it stays a lab exhibit, not a shipped model.
Full method, leakage controls, and references: Prediction methodology.