Goal Elo
monitoring only -- not used by any card's picksAn attack/defense Elo variant tracking goal-scoring and goal-conceding strength independently of win/loss. Each team's Attack and Defense sit on a log scale where 0 is exactly league average; ratings update after every match from the gap between actual and expected goals. See scripts/goal_elo/goal_elo.py for the model.
Ratings
24 teams · K=0.025 · league avg 1.269 goals/team/match · home advantage +0.189 log-units (~21%) · seasons 2022, 2023, 2024, 2025 · generated 2026-09-19 10:32 UTC
Dot size = matches played (a small dot is a partial-season sample -- promoted/relegated sides). Color is combined attack+defense strength, green (strong) to red (weak). Labeled: top 3 by attack, top 3 by defense.
| Team | Attack | Defense | Atk Elo | Def Elo | GF vs avg defense | GA vs avg attack | Matches |
|---|---|---|---|---|---|---|---|
| Hammarby FF | 0.327 | 0.314 | 1663 | 1657 | 1.76 | 0.93 | 120 |
| Djurgardens IF | 0.283 | 0.225 | 1641 | 1613 | 1.68 | 1.01 | 120 |
| Sirius | 0.282 | -0.120 | 1641 | 1440 | 1.68 | 1.43 | 120 |
| Mjallby AIF | 0.203 | 0.510 | 1602 | 1755 | 1.55 | 0.76 | 120 |
| Malmo FF | 0.143 | 0.221 | 1572 | 1611 | 1.46 | 1.02 | 120 |
| BK Hacken | 0.076 | -0.080 | 1538 | 1460 | 1.37 | 1.37 | 120 |
| Gais | 0.055 | 0.250 | 1527 | 1625 | 1.34 | 0.99 | 60 |
| IF Elfsborg | 0.039 | -0.171 | 1519 | 1414 | 1.32 | 1.51 | 120 |
| IF Brommapojkarna | -0.005 | -0.115 | 1497 | 1443 | 1.26 | 1.42 | 92 |
| Landskrona BoIS | -0.007 | -0.012 | 1497 | 1494 | 1.26 | 1.28 | 2 |
| Orgryte IS | -0.015 | 0.064 | 1493 | 1532 | 1.25 | 1.19 | 2 |
| IFK Goteborg | -0.026 | 0.252 | 1487 | 1626 | 1.24 | 0.99 | 120 |
| AIK Stockholm | -0.034 | 0.168 | 1483 | 1584 | 1.23 | 1.07 | 120 |
| Utsikten | -0.039 | -0.045 | 1481 | 1477 | 1.22 | 1.33 | 2 |
| Kalmar FF | -0.056 | -0.084 | 1472 | 1458 | 1.20 | 1.38 | 90 |
| GIF Sundsvall | -0.072 | -0.196 | 1464 | 1402 | 1.18 | 1.54 | 30 |
| IFK Varnamo | -0.080 | -0.397 | 1460 | 1301 | 1.17 | 1.89 | 122 |
| Varbergs BoIS FC | -0.114 | -0.214 | 1443 | 1393 | 1.13 | 1.57 | 62 |
| Helsingborg | -0.115 | -0.064 | 1442 | 1468 | 1.13 | 1.35 | 30 |
| IFK Norrkoping | -0.123 | -0.209 | 1438 | 1395 | 1.12 | 1.56 | 122 |
| Degerfors IF | -0.150 | -0.092 | 1425 | 1454 | 1.09 | 1.39 | 90 |
| Vasteras SK FK | -0.161 | 0.017 | 1420 | 1509 | 1.08 | 1.25 | 30 |
| Osters IF | -0.164 | -0.118 | 1418 | 1441 | 1.08 | 1.43 | 32 |
| Halmstad | -0.326 | -0.022 | 1337 | 1489 | 0.92 | 1.30 | 90 |
Atk/Def Elo = 1500 + raw × 500 -- a cosmetic rescale for familiarity, not a real unit conversion. Chess Elo's 400-point gap has a specific meaning (10:1 win odds) that goal-scoring rate has no equivalent of. The Attack/Defense columns are what the model actually computes with.
2026 over 1.5 check
P(total goals ≥ 2) for every completed match since 2026-01-01 across all 38 tracked leagues -- the mu_home + mu_away → Poisson total construction, same as over-15-card's own math, just fed by Goal Elo's ratings instead. Each prediction used only ratings built from strictly earlier matches, compared against a baseline that knows just the league's average scoring rate and home advantage, no team identity at all.
Honest read: over 1.5 is a low bar in football (the baseline alone already expects it 76% of the time), so knowing which specific teams are playing barely moves the needle here -- skill sits close to 0% pooled, unlike the real, consistent edge Attack/Defense showed on raw expected goals. The model is well calibrated (see below), it just isn't adding much information a viewer didn't already have from the league's baseline rate.
Reliability
Matches bucketed by predicted P(over 1.5); dot = actual over-1.5 rate in that bucket (size = sample). On the dashed line means perfectly calibrated.
Skill vs no-team-identity baseline
1 − (model Brier / baseline Brier). 0% = no better than ignoring which teams are playing; a negative bar means Attack/Defense info actually hurt on that league's calls.
Biggest surprises
Lowest probability the model gave to what actually happened.
- VfL Wolfsburg 0-1 Bayern München (Germany - Bundesliga, 2026-05-09)model said 96% over
- CF Montreal 0-1 Inter Miami (USA - MLS, 2026-07-25)model said 93% over
- Club Brugge KV 1-0 Cercle Brugge (Belgium - Jupiler Pro League, 2026-08-23)model said 92% over
- Barcelona 1-0 Celta Vigo (Spain - La Liga, 2026-04-22)model said 92% over
- FC Schalke 04 0-0 Bayern München (Germany - Bundesliga, 2026-09-05)model said 92% over
- Sirius 0-1 Malmo FF (Sweden - Allsvenskan, 2026-08-31)model said 91% over
- FC Midtjylland 0-1 FC Nordsjaelland (Denmark - Superliga, 2026-03-15)model said 91% over
- Always Ready 1-0 Oriente Petrolero (Bolivia - Primera Division, 2026-04-22)model said 91% over
- Newcastle Jets 1-0 Macarthur (Australia - A-League, 2026-02-22)model said 90% over
- Al-Fateh 0-1 Al-Hilal Saudi FC (Saudi Arabia - Pro League, 2026-03-14)model said 90% over
All predictions — Sweden - Allsvenskan (168)
Switch leagues with the tabs above the ratings table; newest match first.
| Date | Match | Score | P(over) | Actual | Call |
|---|---|---|---|---|---|
| 2026-09-16 | AIK Stockholm v Mjallby AIF | 1-1 | 75% | over | ✓ |
| 2026-09-14 | Djurgardens IF v Gais | 2-0 | 72% | over | ✓ |
| 2026-09-14 | Sirius v Degerfors IF | 2-0 | 85% | over | ✓ |
| 2026-09-13 | Hammarby FF v IF Brommapojkarna | 3-1 | 85% | over | ✓ |
| 2026-09-13 | IF Elfsborg v Kalmar FF | 1-0 | 73% | under | ✗ |
| 2026-09-13 | Malmo FF v Orgryte IS | 4-1 | 82% | over | ✓ |
| 2026-09-12 | AIK Stockholm v Vasteras SK FK | 1-4 | 75% | over | ✓ |
| 2026-09-12 | IFK Goteborg v Halmstad | 2-1 | 74% | over | ✓ |
| 2026-09-11 | BK Hacken v Mjallby AIF | 1-1 | 78% | over | ✓ |
| 2026-09-07 | Kalmar FF v Djurgardens IF | 0-1 | 80% | under | ✗ |
| 2026-09-07 | Malmo FF v AIK Stockholm | 0-0 | 79% | under | ✗ |
| 2026-09-07 | Mjallby AIF v IFK Goteborg | 1-4 | 78% | over | ✓ |
| 2026-09-06 | Orgryte IS v Hammarby FF | 1-1 | 86% | over | ✓ |
| 2026-09-06 | IF Brommapojkarna v IF Elfsborg | 2-1 | 77% | over | ✓ |
| 2026-09-05 | Gais v BK Hacken | 0-0 | 74% | under | ✗ |
| 2026-09-05 | Degerfors IF v Halmstad | 2-0 | 65% | over | ✓ |
| 2026-09-05 | Vasteras SK FK v Sirius | 0-1 | 87% | under | ✗ |
| 2026-09-03 | Mjallby AIF v Djurgardens IF | 0-2 | 79% | over | ✓ |
| 2026-08-31 | Djurgardens IF v Mjallby AIF | 4-0 | 78% | over | ✓ |
| 2026-08-31 | Sirius v Malmo FF | 0-1 | 91% | under | ✗ |
| 2026-08-31 | Gais v IF Brommapojkarna | 4-0 | 70% | over | ✓ |
| 2026-08-30 | AIK Stockholm v Hammarby FF | 3-2 | 79% | over | ✓ |
| 2026-08-30 | IFK Goteborg v Orgryte IS | 1-0 | 84% | under | ✗ |
| 2026-08-29 | BK Hacken v Vasteras SK FK | 1-3 | 81% | over | ✓ |
| 2026-08-29 | IF Elfsborg v Degerfors IF | 2-0 | 73% | over | ✓ |
| 2026-08-29 | Halmstad v Kalmar FF | 1-0 | 69% | under | ✗ |
| 2026-08-24 | Malmo FF v Djurgardens IF | 0-3 | 84% | over | ✓ |
| 2026-08-23 | IFK Goteborg v IF Elfsborg | 1-1 | 79% | over | ✓ |
| 2026-08-23 | Vasteras SK FK v Kalmar FF | 0-0 | 79% | under | ✗ |
| 2026-08-23 | Hammarby FF v Gais | 2-0 | 74% | over | ✓ |
| 2026-08-23 | IF Brommapojkarna v Degerfors IF | 2-0 | 76% | over | ✓ |
| 2026-08-22 | Orgryte IS v Halmstad | 1-1 | 77% | over | ✓ |
| 2026-08-21 | Sirius v BK Hacken | 0-3 | 92% | over | ✓ |
| 2026-08-17 | BK Hacken v Halmstad | 1-0 | 80% | under | ✗ |
| 2026-08-16 | Djurgardens IF v AIK Stockholm | 1-3 | 80% | over | ✓ |
| 2026-08-16 | IF Brommapojkarna v Orgryte IS | 3-1 | 83% | over | ✓ |
| 2026-08-16 | Degerfors IF v IFK Goteborg | 3-0 | 76% | over | ✓ |
| 2026-08-16 | Kalmar FF v Hammarby FF | 0-4 | 80% | over | ✓ |
| 2026-08-16 | Gais v Malmo FF | 0-1 | 76% | under | ✗ |
| 2026-08-15 | Mjallby AIF v Sirius | 4-3 | 83% | over | ✓ |
| 2026-08-14 | IF Elfsborg v Vasteras SK FK | 3-0 | 78% | over | ✓ |
| 2026-08-10 | Sirius v IF Brommapojkarna | 2-2 | 90% | over | ✓ |
| 2026-08-10 | Vasteras SK FK v Djurgardens IF | 1-0 | 84% | under | ✗ |
| 2026-08-09 | Hammarby FF v BK Hacken | 3-0 | 86% | over | ✓ |
| 2026-08-09 | Malmo FF v Degerfors IF | 1-2 | 82% | over | ✓ |
| 2026-08-09 | IFK Goteborg v Kalmar FF | 3-2 | 77% | over | ✓ |
| 2026-08-09 | Halmstad v Gais | 0-2 | 67% | over | ✓ |
| 2026-08-08 | Orgryte IS v AIK Stockholm | 3-4 | 74% | over | ✓ |
| 2026-08-08 | Mjallby AIF v IF Elfsborg | 0-1 | 75% | under | ✗ |
| 2026-08-03 | Djurgardens IF v Vasteras SK FK | 6-0 | 82% | over | ✓ |
| 2026-08-03 | Halmstad v Sirius | 0-2 | 88% | over | ✓ |
| 2026-08-02 | IFK Goteborg v Degerfors IF | 2-0 | 77% | over | ✓ |
| 2026-08-02 | IF Brommapojkarna v Malmo FF | 1-2 | 83% | over | ✓ |
| 2026-08-02 | AIK Stockholm v Orgryte IS | 0-3 | 77% | over | ✓ |
| 2026-08-01 | BK Hacken v Kalmar FF | 1-1 | 83% | over | ✓ |
| 2026-07-27 | BK Hacken v AIK Stockholm | 0-0 | 82% | under | ✗ |
| 2026-07-26 | Sirius v IFK Goteborg | 4-1 | 91% | over | ✓ |
| 2026-07-26 | IF Brommapojkarna v Hammarby FF | 1-1 | 82% | over | ✓ |
| 2026-07-26 | Malmo FF v IF Elfsborg | 1-2 | 84% | over | ✓ |
| 2026-07-26 | Gais v Halmstad | 1-1 | 73% | over | ✓ |
| 2026-07-25 | Degerfors IF v Djurgardens IF | 0-1 | 80% | under | ✗ |
| 2026-07-25 | Kalmar FF v Mjallby AIF | 2-1 | 72% | over | ✓ |
| 2026-07-24 | Vasteras SK FK v Orgryte IS | 2-0 | 82% | over | ✓ |
| 2026-07-20 | Kalmar FF v Malmo FF | 2-2 | 81% | over | ✓ |
| 2026-07-20 | Orgryte IS v Djurgardens IF | 0-0 | 88% | under | ✗ |
| 2026-07-19 | Hammarby FF v Degerfors IF | 4-0 | 82% | over | ✓ |
| 2026-07-19 | IF Elfsborg v Sirius | 1-3 | 87% | over | ✓ |
| 2026-07-19 | Halmstad v BK Hacken | 0-2 | 83% | over | ✓ |
| 2026-07-18 | AIK Stockholm v Gais | 2-0 | 68% | over | ✓ |
| 2026-07-17 | IFK Goteborg v IF Brommapojkarna | 2-1 | 80% | over | ✓ |
| 2026-07-17 | Mjallby AIF v Vasteras SK FK | 0-0 | 81% | under | ✗ |
| 2026-07-13 | Djurgardens IF v Halmstad | 3-0 | 86% | over | ✓ |
| 2026-07-12 | Hammarby FF v Kalmar FF | 2-0 | 83% | over | ✓ |
| 2026-07-12 | Malmo FF v IFK Goteborg | 4-0 | 84% | over | ✓ |
| 2026-07-12 | Vasteras SK FK v Degerfors IF | 2-0 | 80% | over | ✓ |
| 2026-07-12 | IF Brommapojkarna v Sirius | 1-2 | 89% | over | ✓ |
| 2026-07-12 | Gais v IF Elfsborg | 1-0 | 74% | under | ✗ |
| 2026-07-11 | Mjallby AIF v AIK Stockholm | 1-2 | 74% | over | ✓ |
| 2026-07-11 | Orgryte IS v BK Hacken | 4-3 | 85% | over | ✓ |
| 2026-07-06 | BK Hacken v Djurgardens IF | 2-4 | 85% | over | ✓ |
| 2026-07-06 | IF Brommapojkarna v Gais | 1-1 | 75% | over | ✓ |
| 2026-07-05 | IFK Goteborg v AIK Stockholm | 1-2 | 75% | over | ✓ |
| 2026-07-05 | Kalmar FF v Orgryte IS | 3-0 | 79% | over | ✓ |
| 2026-07-05 | IF Elfsborg v Hammarby FF | 1-2 | 81% | over | ✓ |
| 2026-07-04 | Halmstad v Vasteras SK FK | 1-3 | 77% | over | ✓ |
| 2026-07-04 | Degerfors IF v Malmo FF | 0-1 | 82% | under | ✗ |
| 2026-07-03 | Sirius v Mjallby AIF | 4-4 | 80% | over | ✓ |
| 2026-05-31 | BK Hacken v Hammarby FF | 3-2 | 82% | over | ✓ |
| 2026-05-31 | Degerfors IF v IF Brommapojkarna | 2-2 | 77% | over | ✓ |
| 2026-05-31 | Vasteras SK FK v IFK Goteborg | 4-5 | 74% | over | ✓ |
| 2026-05-30 | Malmo FF v Halmstad | 5-2 | 77% | over | ✓ |
| 2026-05-30 | AIK Stockholm v Sirius | 0-3 | 83% | over | ✓ |
| 2026-05-30 | Gais v Kalmar FF | 3-0 | 73% | over | ✓ |
| 2026-05-29 | Orgryte IS v IF Elfsborg | 2-2 | 79% | over | ✓ |
| 2026-05-25 | IFK Goteborg v Mjallby AIF | 1-1 | 69% | over | ✓ |
| 2026-05-25 | IF Elfsborg v BK Hacken | 1-1 | 82% | over | ✓ |
| 2026-05-24 | Hammarby FF v AIK Stockholm | 1-2 | 79% | over | ✓ |
| 2026-05-24 | Sirius v Gais | 2-1 | 82% | over | ✓ |
| 2026-05-24 | Malmo FF v Vasteras SK FK | 2-3 | 79% | over | ✓ |
| 2026-05-23 | Kalmar FF v Degerfors IF | 2-1 | 75% | over | ✓ |
| 2026-05-23 | Halmstad v Orgryte IS | 2-0 | 74% | over | ✓ |
| 2026-05-22 | Djurgardens IF v IF Brommapojkarna | 1-2 | 86% | over | ✓ |
| 2026-05-21 | IF Elfsborg v Mjallby AIF | 1-1 | 73% | over | ✓ |
| 2026-05-20 | Gais v Hammarby FF | 2-0 | 75% | over | ✓ |
| 2026-05-19 | Orgryte IS v IFK Goteborg | 2-3 | 74% | over | ✓ |
| 2026-05-18 | Djurgardens IF v Sirius | 2-3 | 88% | over | ✓ |
| 2026-05-17 | Hammarby FF v Malmo FF | 4-1 | 80% | over | ✓ |
| 2026-05-17 | IF Brommapojkarna v Kalmar FF | 1-0 | 80% | under | ✗ |
| 2026-05-17 | Mjallby AIF v BK Hacken | 0-1 | 81% | under | ✗ |
| 2026-05-17 | Vasteras SK FK v AIK Stockholm | 1-1 | 73% | over | ✓ |
| 2026-05-16 | Halmstad v IF Elfsborg | 1-1 | 73% | over | ✓ |
| 2026-05-16 | Gais v Degerfors IF | 1-1 | 74% | over | ✓ |
| 2026-05-11 | Sirius v Orgryte IS | 2-0 | 89% | over | ✓ |
| 2026-05-10 | Kalmar FF v Halmstad | 2-0 | 74% | over | ✓ |
| 2026-05-10 | AIK Stockholm v Djurgardens IF | 2-4 | 74% | over | ✓ |
| 2026-05-10 | BK Hacken v Malmo FF | 3-2 | 81% | over | ✓ |
| 2026-05-09 | IFK Goteborg v Hammarby FF | 0-1 | 78% | under | ✗ |
| 2026-05-09 | Degerfors IF v Mjallby AIF | 1-4 | 70% | over | ✓ |
| 2026-05-09 | Vasteras SK FK v Gais | 0-1 | 74% | under | ✗ |
| 2026-05-08 | IF Elfsborg v IF Brommapojkarna | 2-0 | 83% | over | ✓ |
| 2026-05-04 | Djurgardens IF v IFK Goteborg | 6-0 | 73% | over | ✓ |
| 2026-05-04 | Halmstad v IF Brommapojkarna | 1-3 | 74% | over | ✓ |
| 2026-05-03 | Hammarby FF v Vasteras SK FK | 3-0 | 83% | over | ✓ |
| 2026-05-03 | Malmo FF v Mjallby AIF | 2-3 | 68% | over | ✓ |
| 2026-05-03 | IF Elfsborg v AIK Stockholm | 1-1 | 76% | over | ✓ |
| 2026-05-03 | Gais v Orgryte IS | 4-0 | 76% | over | ✓ |
| 2026-05-02 | Sirius v Kalmar FF | 3-2 | 86% | over | ✓ |
| 2026-05-02 | Degerfors IF v BK Hacken | 1-1 | 80% | over | ✓ |
| 2026-04-27 | BK Hacken v Sirius | 2-2 | 88% | over | ✓ |
| 2026-04-27 | Kalmar FF v IF Elfsborg | 2-1 | 79% | over | ✓ |
| 2026-04-27 | AIK Stockholm v Malmo FF | 0-1 | 73% | under | ✗ |
| 2026-04-27 | Orgryte IS v Degerfors IF | 1-1 | 77% | over | ✓ |
| 2026-04-27 | Mjallby AIF v Halmstad | 2-0 | 69% | over | ✓ |
| 2026-04-26 | Djurgardens IF v Hammarby FF | 1-1 | 80% | over | ✓ |
| 2026-04-26 | IFK Goteborg v Gais | 2-2 | 66% | over | ✓ |
| 2026-04-26 | IF Brommapojkarna v Vasteras SK FK | 1-2 | 80% | over | ✓ |
| 2026-04-23 | Kalmar FF v IFK Goteborg | 1-1 | 71% | over | ✓ |
| 2026-04-23 | Malmo FF v Sirius | 2-3 | 82% | over | ✓ |
| 2026-04-23 | Gais v Mjallby AIF | 0-0 | 68% | under | ✗ |
| 2026-04-23 | Degerfors IF v AIK Stockholm | 2-1 | 71% | over | ✓ |
| 2026-04-22 | Hammarby FF v Halmstad | 1-1 | 83% | over | ✓ |
| 2026-04-22 | IF Elfsborg v Djurgardens IF | 2-1 | 80% | over | ✓ |
| 2026-04-22 | Orgryte IS v IF Brommapojkarna | 1-2 | 82% | over | ✓ |
| 2026-04-22 | Vasteras SK FK v BK Hacken | 3-3 | 78% | over | ✓ |
| 2026-04-19 | AIK Stockholm v Kalmar FF | 1-0 | 76% | under | ✗ |
| 2026-04-19 | BK Hacken v Gais | 2-1 | 76% | over | ✓ |
| 2026-04-18 | Hammarby FF v Orgryte IS | 8-1 | 76% | over | ✓ |
| 2026-04-18 | Sirius v Vasteras SK FK | 4-1 | 81% | over | ✓ |
| 2026-04-18 | Halmstad v IFK Goteborg | 1-1 | 66% | over | ✓ |
| 2026-04-18 | Mjallby AIF v IF Brommapojkarna | 3-0 | 77% | over | ✓ |
| 2026-04-17 | Djurgardens IF v Malmo FF | 0-1 | 78% | under | ✗ |
| 2026-04-17 | Degerfors IF v IF Elfsborg | 0-1 | 80% | under | ✗ |
| 2026-04-13 | Sirius v Hammarby FF | 2-0 | 84% | over | ✓ |
| 2026-04-13 | IF Brommapojkarna v AIK Stockholm | 2-2 | 76% | over | ✓ |
| 2026-04-12 | Djurgardens IF v Kalmar FF | 3-2 | 79% | over | ✓ |
| 2026-04-12 | Halmstad v Degerfors IF | 0-3 | 71% | over | ✓ |
| 2026-04-12 | Malmo FF v Gais | 3-1 | 71% | over | ✓ |
| 2026-04-11 | IFK Goteborg v BK Hacken | 0-2 | 75% | over | ✓ |
| 2026-04-11 | Mjallby AIF v Orgryte IS | 0-2 | 72% | over | ✓ |
| 2026-04-11 | Vasteras SK FK v IF Elfsborg | 2-2 | 76% | over | ✓ |
| 2026-04-06 | BK Hacken v IF Brommapojkarna | 2-2 | 81% | over | ✓ |
| 2026-04-06 | IF Elfsborg v IFK Goteborg | 2-0 | 76% | over | ✓ |
| 2026-04-06 | Gais v Djurgardens IF | 0-1 | 74% | under | ✗ |
| 2026-04-05 | Kalmar FF v Vasteras SK FK | 0-1 | 75% | under | ✗ |
| 2026-04-05 | AIK Stockholm v Halmstad | 2-1 | 70% | over | ✓ |
| 2026-04-05 | Orgryte IS v Malmo FF | 1-1 | 74% | over | ✓ |
| 2026-04-04 | Hammarby FF v Mjallby AIF | 3-0 | 72% | over | ✓ |
| 2026-04-04 | Degerfors IF v Sirius | 0-3 | 82% | over | ✓ |