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
14 teams · K=0.025 · league avg 1.281 goals/team/match · home advantage +0.137 log-units (~15%) · 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 |
|---|---|---|---|---|---|---|---|
| Lask Linz | 0.359 | 0.144 | 1680 | 1572 | 1.83 | 1.11 | 131 |
| Sturm Graz | 0.230 | 0.230 | 1615 | 1615 | 1.61 | 1.02 | 128 |
| Red Bull Salzburg | 0.225 | 0.112 | 1612 | 1556 | 1.60 | 1.15 | 128 |
| Austria Vienna | 0.066 | 0.009 | 1533 | 1505 | 1.37 | 1.27 | 133 |
| Grazer AK | -0.003 | 0.022 | 1498 | 1511 | 1.28 | 1.25 | 64 |
| Wolfsberger AC | -0.024 | 0.042 | 1488 | 1521 | 1.25 | 1.23 | 131 |
| Rapid Vienna | -0.049 | 0.087 | 1476 | 1543 | 1.22 | 1.17 | 132 |
| TSV Hartberg | -0.049 | 0.098 | 1475 | 1549 | 1.22 | 1.16 | 131 |
| FC BW Linz | -0.089 | -0.063 | 1456 | 1468 | 1.17 | 1.36 | 96 |
| Ried | -0.126 | -0.008 | 1437 | 1496 | 1.13 | 1.29 | 67 |
| WSG Wattens | -0.128 | -0.197 | 1436 | 1402 | 1.13 | 1.56 | 128 |
| Austria Klagenfurt | -0.131 | -0.329 | 1434 | 1336 | 1.12 | 1.78 | 96 |
| Austria Lustenau | -0.146 | -0.097 | 1427 | 1452 | 1.11 | 1.41 | 67 |
| SCR Altach | -0.208 | 0.025 | 1396 | 1512 | 1.04 | 1.25 | 128 |
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 — Austria - Bundesliga (130)
Switch leagues with the tabs above the ratings table; newest match first.
| Date | Match | Score | P(over) | Actual | Call |
|---|---|---|---|---|---|
| 2026-09-18 | Rapid Vienna v WSG Wattens | 3-0 | 83% | over | ✓ |
| 2026-09-13 | Austria Vienna v Austria Lustenau | 2-1 | 76% | over | ✓ |
| 2026-09-13 | WSG Wattens v TSV Hartberg | 2-2 | 75% | over | ✓ |
| 2026-09-13 | Sturm Graz v Lask Linz | 2-1 | 79% | over | ✓ |
| 2026-09-12 | SCR Altach v Grazer AK | 1-2 | 72% | over | ✓ |
| 2026-09-12 | Wolfsberger AC v Rapid Vienna | 0-3 | 77% | over | ✓ |
| 2026-09-11 | Ried v Red Bull Salzburg | 1-1 | 80% | over | ✓ |
| 2026-09-02 | Austria Vienna v WSG Wattens | 0-1 | 80% | under | ✗ |
| 2026-09-02 | Red Bull Salzburg v Rapid Vienna | 5-1 | 79% | over | ✓ |
| 2026-09-01 | Wolfsberger AC v Lask Linz | 1-3 | 78% | over | ✓ |
| 2026-08-30 | Rapid Vienna v Sturm Graz | 3-1 | 74% | over | ✓ |
| 2026-08-30 | TSV Hartberg v Ried | 3-2 | 70% | over | ✓ |
| 2026-08-30 | Red Bull Salzburg v Austria Vienna | 4-1 | 78% | over | ✓ |
| 2026-08-29 | Grazer AK v Wolfsberger AC | 0-0 | 77% | under | ✗ |
| 2026-08-29 | Lask Linz v SCR Altach | 3-0 | 79% | over | ✓ |
| 2026-08-28 | Austria Lustenau v WSG Wattens | 0-4 | 77% | over | ✓ |
| 2026-08-22 | SCR Altach v TSV Hartberg | 1-2 | 66% | over | ✓ |
| 2026-08-22 | Sturm Graz v Austria Lustenau | 1-1 | 76% | over | ✓ |
| 2026-08-21 | Ried v Grazer AK | 1-0 | 78% | under | ✗ |
| 2026-08-16 | TSV Hartberg v Austria Vienna | 0-2 | 73% | over | ✓ |
| 2026-08-16 | WSG Wattens v Red Bull Salzburg | 0-3 | 79% | over | ✓ |
| 2026-08-16 | Rapid Vienna v Grazer AK | 8-0 | 73% | over | ✓ |
| 2026-08-15 | Austria Lustenau v Wolfsberger AC | 2-1 | 74% | over | ✓ |
| 2026-08-15 | Sturm Graz v SCR Altach | 1-0 | 73% | under | ✗ |
| 2026-08-14 | Lask Linz v Ried | 4-1 | 80% | over | ✓ |
| 2026-08-09 | Wolfsberger AC v Red Bull Salzburg | 1-1 | 76% | over | ✓ |
| 2026-08-09 | Ried v Rapid Vienna | 1-2 | 70% | over | ✓ |
| 2026-08-09 | Austria Vienna v Lask Linz | 0-2 | 81% | over | ✓ |
| 2026-08-08 | Grazer AK v Austria Lustenau | 2-1 | 75% | over | ✓ |
| 2026-08-08 | TSV Hartberg v Sturm Graz | 0-2 | 72% | over | ✓ |
| 2026-08-07 | SCR Altach v WSG Wattens | 3-1 | 72% | over | ✓ |
| 2026-08-02 | Wolfsberger AC v Austria Vienna | 3-0 | 76% | over | ✓ |
| 2026-08-02 | Austria Lustenau v Ried | 1-1 | 73% | over | ✓ |
| 2026-08-02 | Rapid Vienna v SCR Altach | 1-0 | 70% | under | ✗ |
| 2026-08-01 | WSG Wattens v Sturm Graz | 1-1 | 78% | over | ✓ |
| 2026-08-01 | Red Bull Salzburg v TSV Hartberg | 1-0 | 76% | under | ✗ |
| 2026-07-31 | Lask Linz v Grazer AK | 3-0 | 80% | over | ✓ |
| 2026-05-25 | Rapid Vienna v Ried | 3-0 | 69% | over | ✓ |
| 2026-05-22 | Ried v Rapid Vienna | 2-1 | 68% | over | ✓ |
| 2026-05-19 | Ried v Wolfsberger AC | 2-1 | 70% | over | ✓ |
| 2026-05-17 | Red Bull Salzburg v TSV Hartberg | 1-3 | 75% | over | ✓ |
| 2026-05-17 | Austria Vienna v Lask Linz | 0-3 | 82% | over | ✓ |
| 2026-05-17 | Sturm Graz v Rapid Vienna | 2-0 | 74% | over | ✓ |
| 2026-05-16 | SCR Altach v Ried | 2-0 | 66% | over | ✓ |
| 2026-05-16 | Wolfsberger AC v WSG Wattens | 2-0 | 78% | over | ✓ |
| 2026-05-16 | FC BW Linz v Grazer AK | 0-3 | 74% | over | ✓ |
| 2026-05-10 | Rapid Vienna v Austria Vienna | 0-2 | 75% | over | ✓ |
| 2026-05-10 | Lask Linz v Red Bull Salzburg | 2-1 | 83% | over | ✓ |
| 2026-05-10 | TSV Hartberg v Sturm Graz | 2-4 | 67% | over | ✓ |
| 2026-05-09 | Ried v Wolfsberger AC | 0-1 | 73% | under | ✗ |
| 2026-05-09 | WSG Wattens v FC BW Linz | 1-1 | 78% | over | ✓ |
| 2026-05-09 | Grazer AK v SCR Altach | 2-2 | 68% | over | ✓ |
| 2026-05-04 | SCR Altach v Wolfsberger AC | 1-4 | 65% | over | ✓ |
| 2026-05-04 | Lask Linz v Rapid Vienna | 3-1 | 78% | over | ✓ |
| 2026-05-03 | Austria Vienna v TSV Hartberg | 1-0 | 73% | under | ✗ |
| 2026-05-03 | Red Bull Salzburg v Sturm Graz | 1-1 | 77% | over | ✓ |
| 2026-05-02 | Ried v FC BW Linz | 2-0 | 74% | over | ✓ |
| 2026-05-02 | Grazer AK v WSG Wattens | 4-0 | 76% | over | ✓ |
| 2026-04-26 | Rapid Vienna v Red Bull Salzburg | 1-0 | 77% | under | ✗ |
| 2026-04-26 | TSV Hartberg v Lask Linz | 1-5 | 71% | over | ✓ |
| 2026-04-26 | Sturm Graz v Austria Vienna | 1-1 | 80% | over | ✓ |
| 2026-04-25 | Wolfsberger AC v Grazer AK | 1-0 | 73% | under | ✗ |
| 2026-04-25 | WSG Wattens v Ried | 1-0 | 78% | under | ✗ |
| 2026-04-24 | FC BW Linz v SCR Altach | 3-0 | 67% | over | ✓ |
| 2026-04-22 | Red Bull Salzburg v Austria Vienna | 3-1 | 83% | over | ✓ |
| 2026-04-22 | Rapid Vienna v TSV Hartberg | 0-2 | 65% | over | ✓ |
| 2026-04-22 | Sturm Graz v Lask Linz | 1-1 | 79% | over | ✓ |
| 2026-04-21 | SCR Altach v WSG Wattens | 0-0 | 74% | under | ✗ |
| 2026-04-21 | FC BW Linz v Wolfsberger AC | 3-0 | 74% | over | ✓ |
| 2026-04-21 | Ried v Grazer AK | 2-1 | 72% | over | ✓ |
| 2026-04-19 | Austria Vienna v Red Bull Salzburg | 1-3 | 81% | over | ✓ |
| 2026-04-19 | TSV Hartberg v Rapid Vienna | 2-2 | 62% | over | ✓ |
| 2026-04-19 | Lask Linz v Sturm Graz | 1-1 | 80% | over | ✓ |
| 2026-04-18 | Wolfsberger AC v FC BW Linz | 0-0 | 78% | under | ✗ |
| 2026-04-18 | WSG Wattens v SCR Altach | 2-2 | 72% | over | ✓ |
| 2026-04-17 | Grazer AK v Ried | 1-1 | 73% | over | ✓ |
| 2026-04-12 | Sturm Graz v TSV Hartberg | 0-0 | 72% | under | ✗ |
| 2026-04-12 | Austria Vienna v Rapid Vienna | 1-1 | 75% | over | ✓ |
| 2026-04-11 | SCR Altach v Grazer AK | 1-0 | 68% | under | ✗ |
| 2026-04-11 | Wolfsberger AC v Ried | 0-0 | 79% | under | ✗ |
| 2026-04-11 | FC BW Linz v WSG Wattens | 5-0 | 78% | over | ✓ |
| 2026-04-10 | Red Bull Salzburg v Lask Linz | 2-3 | 80% | over | ✓ |
| 2026-04-05 | Lask Linz v Austria Vienna | 4-1 | 79% | over | ✓ |
| 2026-04-05 | TSV Hartberg v Red Bull Salzburg | 1-2 | 69% | over | ✓ |
| 2026-04-05 | Rapid Vienna v Sturm Graz | 0-2 | 75% | over | ✓ |
| 2026-04-04 | WSG Wattens v Wolfsberger AC | 3-1 | 79% | over | ✓ |
| 2026-04-04 | Grazer AK v FC BW Linz | 2-1 | 75% | over | ✓ |
| 2026-04-03 | Ried v SCR Altach | 3-2 | 65% | over | ✓ |
| 2026-03-22 | TSV Hartberg v Austria Vienna | 0-1 | 72% | under | ✗ |
| 2026-03-22 | Rapid Vienna v Lask Linz | 4-2 | 70% | over | ✓ |
| 2026-03-21 | Wolfsberger AC v SCR Altach | 1-1 | 69% | over | ✓ |
| 2026-03-21 | FC BW Linz v Ried | 3-2 | 71% | over | ✓ |
| 2026-03-21 | WSG Wattens v Grazer AK | 1-5 | 73% | over | ✓ |
| 2026-03-20 | Sturm Graz v Red Bull Salzburg | 1-1 | 81% | over | ✓ |
| 2026-03-15 | Red Bull Salzburg v Rapid Vienna | 0-1 | 76% | under | ✗ |
| 2026-03-15 | Austria Vienna v Sturm Graz | 2-5 | 76% | over | ✓ |
| 2026-03-14 | SCR Altach v FC BW Linz | 3-1 | 63% | over | ✓ |
| 2026-03-14 | Ried v WSG Wattens | 2-1 | 72% | over | ✓ |
| 2026-03-14 | Grazer AK v Wolfsberger AC | 2-0 | 76% | over | ✓ |
| 2026-03-13 | Lask Linz v TSV Hartberg | 0-0 | 72% | under | ✗ |
| 2026-03-08 | Sturm Graz v SCR Altach | 2-0 | 68% | over | ✓ |
| 2026-03-08 | Rapid Vienna v Red Bull Salzburg | 1-0 | 77% | under | ✗ |
| 2026-03-08 | Lask Linz v Wolfsberger AC | 3-1 | 77% | over | ✓ |
| 2026-03-08 | Ried v Austria Vienna | 0-2 | 74% | over | ✓ |
| 2026-03-08 | TSV Hartberg v FC BW Linz | 1-1 | 70% | over | ✓ |
| 2026-03-08 | WSG Wattens v Grazer AK | 2-0 | 74% | over | ✓ |
| 2026-03-01 | Red Bull Salzburg v TSV Hartberg | 0-0 | 80% | under | ✗ |
| 2026-03-01 | Austria Vienna v Lask Linz | 2-2 | 75% | over | ✓ |
| 2026-03-01 | SCR Altach v Rapid Vienna | 1-1 | 63% | over | ✓ |
| 2026-03-01 | Wolfsberger AC v Sturm Graz | 2-2 | 77% | over | ✓ |
| 2026-03-01 | FC BW Linz v WSG Wattens | 2-3 | 70% | over | ✓ |
| 2026-03-01 | Grazer AK v Ried | 2-1 | 70% | over | ✓ |
| 2026-02-22 | Sturm Graz v FC BW Linz | 1-0 | 77% | under | ✗ |
| 2026-02-22 | WSG Wattens v Ried | 1-1 | 72% | over | ✓ |
| 2026-02-22 | Lask Linz v Red Bull Salzburg | 1-5 | 77% | over | ✓ |
| 2026-02-21 | SCR Altach v Austria Vienna | 2-1 | 65% | over | ✓ |
| 2026-02-21 | Rapid Vienna v Wolfsberger AC | 2-0 | 74% | over | ✓ |
| 2026-02-21 | TSV Hartberg v Grazer AK | 1-0 | 74% | under | ✗ |
| 2026-02-15 | FC BW Linz v Wolfsberger AC | 2-1 | 74% | over | ✓ |
| 2026-02-15 | Grazer AK v Red Bull Salzburg | 1-1 | 81% | over | ✓ |
| 2026-02-15 | Austria Vienna v Rapid Vienna | 2-0 | 74% | over | ✓ |
| 2026-02-14 | Ried v Lask Linz | 1-1 | 71% | over | ✓ |
| 2026-02-14 | TSV Hartberg v SCR Altach | 0-0 | 67% | under | ✗ |
| 2026-02-14 | WSG Wattens v Sturm Graz | 1-0 | 78% | under | ✗ |
| 2026-02-08 | SCR Altach v FC BW Linz | 1-0 | 66% | under | ✗ |
| 2026-02-08 | Wolfsberger AC v Grazer AK | 2-2 | 77% | over | ✓ |
| 2026-02-08 | Sturm Graz v Ried | 1-0 | 79% | under | ✗ |
| 2026-02-07 | Rapid Vienna v TSV Hartberg | 1-1 | 74% | over | ✓ |
| 2026-02-07 | Lask Linz v WSG Wattens | 1-0 | 77% | under | ✗ |
| 2026-02-06 | Red Bull Salzburg v Austria Vienna | 0-2 | 82% | over | ✓ |