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
16 teams · K=0.025 · league avg 1.389 goals/team/match · home advantage +0.118 log-units (~13%) · 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 |
|---|---|---|---|---|---|---|---|
| FC Copenhagen | 0.404 | 0.168 | 1702 | 1584 | 2.08 | 1.17 | 130 |
| FC Midtjylland | 0.374 | 0.240 | 1687 | 1620 | 2.02 | 1.09 | 129 |
| Aarhus | 0.267 | 0.313 | 1634 | 1657 | 1.81 | 1.02 | 128 |
| FC Nordsjaelland | 0.149 | 0.170 | 1575 | 1585 | 1.61 | 1.17 | 128 |
| Viborg | 0.099 | 0.009 | 1550 | 1504 | 1.53 | 1.38 | 129 |
| Sonderjyske | -0.010 | 0.001 | 1495 | 1500 | 1.37 | 1.39 | 64 |
| Brondby | -0.011 | 0.248 | 1495 | 1624 | 1.37 | 1.08 | 129 |
| Odense | -0.012 | -0.114 | 1494 | 1443 | 1.37 | 1.56 | 96 |
| FC Fredericia | -0.028 | -0.259 | 1486 | 1371 | 1.35 | 1.80 | 32 |
| AC Horsens | -0.081 | -0.085 | 1460 | 1457 | 1.28 | 1.51 | 32 |
| Silkeborg | -0.088 | -0.254 | 1456 | 1373 | 1.27 | 1.79 | 129 |
| Hvidovre | -0.133 | -0.105 | 1433 | 1448 | 1.22 | 1.54 | 32 |
| Aalborg | -0.162 | -0.229 | 1419 | 1385 | 1.18 | 1.75 | 64 |
| Randers FC | -0.222 | -0.029 | 1389 | 1486 | 1.11 | 1.43 | 130 |
| Vejle | -0.236 | -0.150 | 1382 | 1425 | 1.10 | 1.61 | 96 |
| Lyngby | -0.265 | 0.030 | 1367 | 1515 | 1.07 | 1.35 | 96 |
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 — Denmark - Superliga (134)
Switch leagues with the tabs above the ratings table; newest match first.
| Date | Match | Score | P(over) | Actual | Call |
|---|---|---|---|---|---|
| 2026-09-18 | Lyngby v Silkeborg | 0-4 | 74% | over | ✓ |
| 2026-09-14 | FC Midtjylland v Brondby | 4-1 | 78% | over | ✓ |
| 2026-09-13 | Lyngby v Sonderjyske | 1-1 | 77% | over | ✓ |
| 2026-09-13 | Silkeborg v Viborg | 1-1 | 79% | over | ✓ |
| 2026-09-13 | Randers FC v Odense | 1-2 | 74% | over | ✓ |
| 2026-09-13 | FC Nordsjaelland v Aarhus | 2-0 | 78% | over | ✓ |
| 2026-09-11 | FC Copenhagen v AC Horsens | 2-0 | 90% | over | ✓ |
| 2026-09-07 | FC Midtjylland v FC Nordsjaelland | 2-2 | 77% | over | ✓ |
| 2026-09-06 | Sonderjyske v AC Horsens | 2-5 | 80% | over | ✓ |
| 2026-09-06 | Odense v FC Copenhagen | 0-5 | 84% | over | ✓ |
| 2026-09-06 | Brondby v Randers FC | 0-3 | 72% | over | ✓ |
| 2026-09-05 | Aarhus v Silkeborg | 2-2 | 81% | over | ✓ |
| 2026-09-04 | Viborg v Lyngby | 0-2 | 76% | over | ✓ |
| 2026-09-03 | FC Copenhagen v FC Nordsjaelland | 2-0 | 84% | over | ✓ |
| 2026-09-02 | Aarhus v FC Midtjylland | 0-2 | 80% | over | ✓ |
| 2026-08-31 | FC Copenhagen v Sonderjyske | 3-1 | 87% | over | ✓ |
| 2026-08-30 | Lyngby v Odense | 1-1 | 74% | over | ✓ |
| 2026-08-30 | Silkeborg v FC Midtjylland | 1-1 | 83% | over | ✓ |
| 2026-08-30 | Randers FC v Aarhus | 2-1 | 75% | over | ✓ |
| 2026-08-30 | FC Nordsjaelland v Brondby | 3-1 | 72% | over | ✓ |
| 2026-08-28 | AC Horsens v Viborg | 2-3 | 77% | over | ✓ |
| 2026-08-24 | Brondby v Silkeborg | 3-1 | 77% | over | ✓ |
| 2026-08-23 | Sonderjyske v FC Nordsjaelland | 0-3 | 76% | over | ✓ |
| 2026-08-23 | FC Midtjylland v Randers FC | 1-0 | 81% | under | ✗ |
| 2026-08-23 | Aarhus v Odense | 2-2 | 79% | over | ✓ |
| 2026-08-23 | AC Horsens v Lyngby | 2-1 | 75% | over | ✓ |
| 2026-08-23 | Viborg v FC Copenhagen | 4-0 | 83% | over | ✓ |
| 2026-08-17 | Brondby v Sonderjyske | 3-2 | 72% | over | ✓ |
| 2026-08-16 | FC Nordsjaelland v Silkeborg | 1-0 | 80% | under | ✗ |
| 2026-08-16 | Odense v AC Horsens | 1-2 | 76% | over | ✓ |
| 2026-08-16 | Lyngby v FC Midtjylland | 1-1 | 81% | over | ✓ |
| 2026-08-16 | Randers FC v FC Copenhagen | 0-4 | 81% | over | ✓ |
| 2026-08-14 | Viborg v Aarhus | 2-1 | 77% | over | ✓ |
| 2026-08-10 | Silkeborg v Odense | 1-0 | 81% | under | ✗ |
| 2026-08-09 | Randers FC v Lyngby | 2-0 | 71% | over | ✓ |
| 2026-08-09 | AC Horsens v Brondby | 0-2 | 73% | over | ✓ |
| 2026-08-07 | Sonderjyske v Viborg | 0-0 | 78% | under | ✗ |
| 2026-08-03 | Odense v Sonderjyske | 1-0 | 81% | under | ✗ |
| 2026-08-02 | FC Midtjylland v AC Horsens | 2-1 | 84% | over | ✓ |
| 2026-08-02 | FC Nordsjaelland v Randers FC | 1-0 | 76% | under | ✗ |
| 2026-08-02 | Brondby v Viborg | 1-0 | 75% | under | ✗ |
| 2026-08-02 | Silkeborg v FC Copenhagen | 1-3 | 87% | over | ✓ |
| 2026-08-01 | Lyngby v Aarhus | 2-2 | 76% | over | ✓ |
| 2026-07-27 | Randers FC v Silkeborg | 1-1 | 79% | over | ✓ |
| 2026-07-26 | Sonderjyske v FC Midtjylland | 2-3 | 82% | over | ✓ |
| 2026-07-26 | FC Copenhagen v Lyngby | 3-2 | 81% | over | ✓ |
| 2026-07-26 | AC Horsens v FC Nordsjaelland | 1-1 | 79% | over | ✓ |
| 2026-07-25 | Aarhus v Brondby | 1-1 | 75% | over | ✓ |
| 2026-07-24 | Viborg v Odense | 1-0 | 83% | under | ✗ |
| 2026-05-21 | Brondby v FC Copenhagen | 1-3 | 77% | over | ✓ |
| 2026-05-17 | FC Copenhagen v Randers FC | 5-0 | 80% | over | ✓ |
| 2026-05-17 | Odense v Vejle | 0-1 | 83% | under | ✗ |
| 2026-05-17 | FC Fredericia v Silkeborg | 4-1 | 86% | over | ✓ |
| 2026-05-17 | Sonderjyske v FC Nordsjaelland | 1-4 | 76% | over | ✓ |
| 2026-05-17 | FC Midtjylland v Brondby | 2-3 | 74% | over | ✓ |
| 2026-05-17 | Aarhus v Viborg | 6-2 | 75% | over | ✓ |
| 2026-05-11 | Randers FC v Odense | 2-2 | 76% | over | ✓ |
| 2026-05-10 | Vejle v FC Fredericia | 2-0 | 84% | over | ✓ |
| 2026-05-10 | FC Nordsjaelland v FC Midtjylland | 0-0 | 83% | under | ✗ |
| 2026-05-10 | Silkeborg v FC Copenhagen | 0-4 | 86% | over | ✓ |
| 2026-05-10 | Brondby v Aarhus | 0-2 | 67% | over | ✓ |
| 2026-05-08 | Viborg v Sonderjyske | 0-1 | 80% | under | ✗ |
| 2026-05-04 | FC Midtjylland v Viborg | 3-3 | 82% | over | ✓ |
| 2026-05-03 | Randers FC v Vejle | 1-0 | 76% | under | ✗ |
| 2026-05-03 | Odense v Silkeborg | 2-3 | 83% | over | ✓ |
| 2026-05-03 | FC Fredericia v FC Copenhagen | 3-3 | 86% | over | ✓ |
| 2026-05-03 | Aarhus v Sonderjyske | 2-1 | 76% | over | ✓ |
| 2026-05-01 | Brondby v FC Nordsjaelland | 1-1 | 72% | over | ✓ |
| 2026-04-27 | FC Copenhagen v Vejle | 3-0 | 86% | over | ✓ |
| 2026-04-26 | FC Fredericia v Odense | 0-2 | 86% | over | ✓ |
| 2026-04-26 | Silkeborg v Randers FC | 2-0 | 76% | over | ✓ |
| 2026-04-26 | Sonderjyske v Brondby | 3-0 | 71% | over | ✓ |
| 2026-04-26 | Viborg v FC Nordsjaelland | 1-0 | 80% | under | ✗ |
| 2026-04-26 | Aarhus v FC Midtjylland | 0-0 | 81% | under | ✗ |
| 2026-04-23 | FC Nordsjaelland v Aarhus | 1-1 | 80% | over | ✓ |
| 2026-04-23 | Randers FC v FC Fredericia | 2-2 | 78% | over | ✓ |
| 2026-04-23 | Sonderjyske v FC Midtjylland | 1-2 | 84% | over | ✓ |
| 2026-04-22 | Vejle v Silkeborg | 1-2 | 83% | over | ✓ |
| 2026-04-22 | FC Copenhagen v Odense | 2-1 | 86% | over | ✓ |
| 2026-04-22 | Viborg v Brondby | 0-1 | 73% | under | ✗ |
| 2026-04-20 | FC Midtjylland v Aarhus | 2-1 | 82% | over | ✓ |
| 2026-04-19 | Odense v Randers FC | 3-1 | 75% | over | ✓ |
| 2026-04-19 | Silkeborg v FC Fredericia | 2-2 | 84% | over | ✓ |
| 2026-04-19 | FC Nordsjaelland v Viborg | 2-1 | 82% | over | ✓ |
| 2026-04-19 | Vejle v FC Copenhagen | 1-4 | 82% | over | ✓ |
| 2026-04-17 | Brondby v Sonderjyske | 6-0 | 67% | over | ✓ |
| 2026-04-13 | FC Fredericia v Vejle | 2-2 | 82% | over | ✓ |
| 2026-04-12 | Sonderjyske v Viborg | 0-2 | 78% | over | ✓ |
| 2026-04-12 | Silkeborg v Odense | 3-1 | 82% | over | ✓ |
| 2026-04-12 | Brondby v FC Midtjylland | 1-2 | 74% | over | ✓ |
| 2026-04-12 | Randers FC v FC Copenhagen | 1-2 | 74% | over | ✓ |
| 2026-04-10 | Aarhus v FC Nordsjaelland | 1-1 | 82% | over | ✓ |
| 2026-04-07 | FC Nordsjaelland v Brondby | 2-1 | 72% | over | ✓ |
| 2026-04-06 | Vejle v Randers FC | 1-1 | 73% | over | ✓ |
| 2026-04-06 | Odense v FC Fredericia | 1-0 | 87% | under | ✗ |
| 2026-04-06 | Viborg v Aarhus | 1-2 | 79% | over | ✓ |
| 2026-04-05 | FC Copenhagen v Silkeborg | 7-0 | 78% | over | ✓ |
| 2026-04-04 | FC Midtjylland v Sonderjyske | 2-2 | 82% | over | ✓ |
| 2026-03-22 | FC Nordsjaelland v Sonderjyske | 2-0 | 80% | over | ✓ |
| 2026-03-22 | Randers FC v Silkeborg | 0-3 | 72% | over | ✓ |
| 2026-03-22 | FC Copenhagen v FC Fredericia | 1-2 | 84% | over | ✓ |
| 2026-03-22 | Aarhus v Brondby | 0-0 | 72% | under | ✗ |
| 2026-03-22 | Viborg v FC Midtjylland | 1-1 | 86% | over | ✓ |
| 2026-03-20 | Vejle v Odense | 1-1 | 84% | over | ✓ |
| 2026-03-16 | Silkeborg v Vejle | 1-1 | 80% | over | ✓ |
| 2026-03-15 | FC Midtjylland v FC Nordsjaelland | 0-1 | 91% | under | ✗ |
| 2026-03-15 | Odense v FC Copenhagen | 2-1 | 82% | over | ✓ |
| 2026-03-15 | Sonderjyske v Aarhus | 1-1 | 79% | over | ✓ |
| 2026-03-15 | Brondby v Viborg | 0-1 | 75% | under | ✗ |
| 2026-03-13 | FC Fredericia v Randers FC | 0-3 | 77% | over | ✓ |
| 2026-03-01 | Vejle v Aarhus | 1-2 | 85% | over | ✓ |
| 2026-03-01 | Sonderjyske v Odense | 1-0 | 85% | under | ✗ |
| 2026-03-01 | FC Midtjylland v Brondby | 0-0 | 84% | under | ✗ |
| 2026-03-01 | FC Copenhagen v Randers FC | 1-2 | 71% | over | ✓ |
| 2026-03-01 | FC Fredericia v Silkeborg | 2-1 | 83% | over | ✓ |
| 2026-03-01 | Viborg v FC Nordsjaelland | 2-1 | 87% | over | ✓ |
| 2026-02-23 | Brondby v Sonderjyske | 0-0 | 77% | under | ✗ |
| 2026-02-22 | Randers FC v FC Fredericia | 1-2 | 78% | over | ✓ |
| 2026-02-22 | Silkeborg v FC Midtjylland | 0-4 | 88% | over | ✓ |
| 2026-02-22 | Aarhus v Viborg | 5-2 | 80% | over | ✓ |
| 2026-02-21 | Odense v FC Copenhagen | 2-2 | 82% | over | ✓ |
| 2026-02-20 | FC Nordsjaelland v Vejle | 3-3 | 85% | over | ✓ |
| 2026-02-16 | Sonderjyske v Silkeborg | 2-1 | 81% | over | ✓ |
| 2026-02-15 | FC Fredericia v Aarhus | 1-1 | 86% | over | ✓ |
| 2026-02-15 | Odense v FC Midtjylland | 1-4 | 91% | over | ✓ |
| 2026-02-15 | Viborg v Brondby | 1-0 | 79% | under | ✗ |
| 2026-02-14 | FC Copenhagen v FC Nordsjaelland | 1-2 | 82% | over | ✓ |
| 2026-02-13 | Randers FC v Vejle | 2-0 | 74% | over | ✓ |
| 2026-02-09 | Vejle v FC Fredericia | 2-3 | 83% | over | ✓ |
| 2026-02-09 | Aarhus v Odense | 2-1 | 85% | over | ✓ |
| 2026-02-08 | FC Nordsjaelland v Sonderjyske | 2-1 | 84% | over | ✓ |
| 2026-02-08 | Silkeborg v Viborg | 0-1 | 83% | under | ✗ |
| 2026-02-08 | FC Midtjylland v FC Copenhagen | 2-1 | 86% | over | ✓ |
| 2026-02-08 | Brondby v Randers FC | 0-0 | 74% | under | ✗ |