Goal Elo

monitoring only -- not used by any card's picks

An 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.

21 teams · K=0.025 · league avg 1.240 goals/team/match · home advantage +0.267 log-units (~31%) · seasons 2022, 2023, 2024, 2025 · generated 2026-09-19 10:32 UTC

Attack (0 = league average)Defense ↑Livingston -- attack -0.216 (1392 Elo), defense -0.286 (1357 Elo), 118 matchesRangers -- attack 0.529 (1764 Elo), defense 0.154 (1577 Elo), 152 matchesRangersKilmarnock -- attack 0.022 (1511 Elo), defense -0.167 (1417 Elo), 152 matchesDundee Utd -- attack -0.132 (1434 Elo), defense -0.077 (1462 Elo), 114 matchesHeart Of Midlothian -- attack 0.173 (1586 Elo), defense 0.360 (1680 Elo), 152 matchesHeart Of MidlothianRoss County -- attack -0.188 (1406 Elo), defense -0.137 (1431 Elo), 120 matchesST Johnstone -- attack -0.251 (1374 Elo), defense -0.082 (1459 Elo), 114 matchesHibernian -- attack 0.110 (1555 Elo), defense 0.226 (1613 Elo), 152 matchesST Mirren -- attack -0.345 (1328 Elo), defense 0.040 (1520 Elo), 154 matchesMotherwell -- attack 0.109 (1555 Elo), defense 0.266 (1633 Elo), 152 matchesMotherwellCeltic -- attack 0.452 (1726 Elo), defense 0.283 (1642 Elo), 152 matchesCelticAberdeen -- attack -0.198 (1401 Elo), defense -0.060 (1470 Elo), 152 matchesPartick -- attack -0.045 (1477 Elo), defense 0.025 (1513 Elo), 18 matchesQueen's Park -- attack -0.000 (1500 Elo), defense -0.043 (1479 Elo), 2 matchesAyr Utd -- attack -0.054 (1473 Elo), defense -0.018 (1491 Elo), 4 matchesDundee -- attack -0.082 (1459 Elo), defense -0.145 (1427 Elo), 114 matchesAirdrie United -- attack 0.003 (1501 Elo), defense -0.008 (1496 Elo), 2 matchesRaith Rovers -- attack -0.030 (1485 Elo), defense -0.041 (1479 Elo), 4 matchesFalkirk -- attack 0.021 (1511 Elo), defense -0.141 (1429 Elo), 38 matchesDunfermline -- attack -0.063 (1469 Elo), defense 0.060 (1530 Elo), 4 matchesArbroath -- attack -0.069 (1465 Elo), defense 0.046 (1523 Elo), 2 matches

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.

TeamAttackDefenseAtk EloDef EloGF vs avg defenseGA vs avg attackMatches
Rangers0.5290.154176415772.101.06152
Celtic0.4520.283172616421.950.93152
Heart Of Midlothian0.1730.360158616801.470.87152
Hibernian0.1100.226155516131.380.99152
Motherwell0.1090.266155516331.380.95152
Kilmarnock0.022-0.167151114171.271.47152
Falkirk0.021-0.141151114291.271.4338
Airdrie United0.003-0.008150114961.241.252
Queen's Park-0.000-0.043150014791.241.292
Raith Rovers-0.030-0.041148514791.201.294
Partick-0.0450.025147715131.191.2118
Ayr Utd-0.054-0.018147314911.181.264
Dunfermline-0.0630.060146915301.171.174
Arbroath-0.0690.046146515231.161.192
Dundee-0.082-0.145145914271.141.43114
Dundee Utd-0.132-0.077143414621.091.34114
Ross County-0.188-0.137140614311.031.42120
Aberdeen-0.198-0.060140114701.021.32152
Livingston-0.216-0.286139213571.001.65118
ST Johnstone-0.251-0.082137414590.961.35114
ST Mirren-0.3450.040132815200.881.19154

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.

7,770
Matches scored
75.8%
Actual over-1.5 rate
0.182
Model Brier score
-0.5%
Skill vs baseline

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

0%0%25%25%50%50%75%75%100%100%Predicted P(over 1.5)Actual over-1.5 rateperfect calibrationpredicted ~50%, actually over 1.5 51% of the time (n=45)predicted ~55%, actually over 1.5 67% of the time (n=177)predicted ~60%, actually over 1.5 65% of the time (n=428)predicted ~65%, actually over 1.5 71% of the time (n=967)predicted ~70%, actually over 1.5 74% of the time (n=1564)predicted ~75%, actually over 1.5 76% of the time (n=1858)predicted ~80%, actually over 1.5 79% of the time (n=1593)predicted ~85%, actually over 1.5 84% of the time (n=835)predicted ~90%, actually over 1.5 87% of the time (n=243)predicted ~95%, actually over 1.5 95% of the time (n=44)

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

Peru - Primera Division
5.0%
Bolivia - Primera Division
3.8%
South Africa - Premier Soccer League
3.2%
Turkey - Super Lig
2.2%
Portugal - Primeira Liga
2.1%
Ecuador - Liga Pro
1.8%
Russia - Premier League
1.1%
China - Super League
1.1%
USA - MLS
1.0%
Australia - A-League
0.9%
Brazil - Serie A
0.4%
Argentina - Liga Profesional
0.3%
Colombia - Primera A
0.1%
Costa Rica - Primera Division
0.0%
Chile - Primera Division
-0.2%
Norway - Eliteserien
-0.2%
France - Ligue 1
-0.3%
Greece - Super League
-0.5%
Guatemala - Liga Nacional
-0.6%
Spain - La Liga
-0.6%
Italy - Serie A
-1.1%
Netherlands - Eredivisie
-1.3%
El Salvador - Primera Division
-1.3%
Uruguay - Primera Division
-1.4%
Honduras - Liga Nacional
-1.6%
Sweden - Allsvenskan
-1.9%
Denmark - Superliga
-2.1%
Mexico - Liga MX
-2.4%
Paraguay - Division Profesional (Apertura)
-2.4%
Saudi Arabia - Pro League
-2.6%
England - Premier League
-2.7%
India - Indian Super League
-2.9%
Austria - Bundesliga
-2.9%
Scotland - Premiership
-3.0%
Venezuela - Primera Division
-3.3%
Japan - J1 League
-3.5%
Belgium - Jupiler Pro League
-4.1%
Germany - Bundesliga
-4.7%

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 — Scotland - Premiership (154)

Switch leagues with the tabs above the ratings table; newest match first.

DateMatchScoreP(over)ActualCall
2026-09-15Hibernian v Kilmarnock0-184%under
2026-09-15Motherwell v Aberdeen0-473%over
2026-09-15Falkirk v Heart Of Midlothian2-177%over
2026-09-09Rangers v ST Mirren1-078%under
2026-09-09ST Johnstone v Celtic0-180%under
2026-09-06Heart Of Midlothian v Dundee2-178%over
2026-09-06ST Johnstone v Hibernian2-175%over
2026-09-05Aberdeen v Kilmarnock0-081%under
2026-09-05Rangers v Motherwell1-081%under
2026-09-05Dundee Utd v Falkirk1-177%over
2026-09-05ST Mirren v Celtic1-275%over
2026-09-03Hibernian v Heart Of Midlothian1-374%over
2026-09-02Celtic v Aberdeen3-082%over
2026-09-02Kilmarnock v ST Mirren0-180%under
2026-09-02Dundee v ST Johnstone1-176%over
2026-09-02Motherwell v Dundee Utd3-077%over
2026-09-02Falkirk v Rangers1-282%over
2026-08-30Aberdeen v Rangers0-181%under
2026-08-30ST Mirren v Motherwell3-365%over
2026-08-30Dundee v Hibernian1-274%over
2026-08-29Celtic v Falkirk2-185%over
2026-08-29Kilmarnock v Dundee Utd0-483%over
2026-08-29Heart Of Midlothian v ST Johnstone2-179%over
2026-08-22Dundee Utd v Dundee0-276%over
2026-08-09Kilmarnock v Celtic1-585%over
2026-08-09Heart Of Midlothian v Dundee Utd4-076%over
2026-08-09Motherwell v Falkirk0-080%under
2026-08-09Rangers v Hibernian1-283%over
2026-08-08ST Mirren v ST Johnstone1-071%under
2026-08-08Dundee v Aberdeen2-075%over
2026-08-03Celtic v Dundee1-085%under
2026-08-02ST Johnstone v Kilmarnock4-378%over
2026-08-02Hibernian v Motherwell1-273%over
2026-08-01Falkirk v ST Mirren0-275%over
2026-08-01Aberdeen v Heart Of Midlothian2-172%over
2026-07-31Dundee Utd v Rangers1-183%over
2026-05-25ST Mirren v Partick1-068%under
2026-05-21Partick v ST Mirren1-171%over
2026-05-17ST Mirren v Dundee Utd1-168%over
2026-05-17Dundee v Aberdeen3-273%over
2026-05-17Livingston v Kilmarnock1-481%over
2026-05-16Celtic v Heart Of Midlothian3-176%over
2026-05-16Hibernian v Motherwell0-173%under
2026-05-16Falkirk v Rangers2-586%over
2026-05-15Partick v Dunfermline2-174%over
2026-05-13Heart Of Midlothian v Falkirk3-078%over
2026-05-13Motherwell v Celtic2-375%over
2026-05-13Rangers v Hibernian1-284%over
2026-05-12Kilmarnock v Dundee3-180%over
2026-05-12Aberdeen v ST Mirren0-266%over
2026-05-12Dundee Utd v Livingston0-082%under
2026-05-12Dunfermline v Partick1-175%over
2026-05-10Celtic v Rangers3-185%over
2026-05-09ST Mirren v Kilmarnock0-372%over
2026-05-09Aberdeen v Dundee Utd2-075%over
2026-05-09Dundee v Livingston3-080%over
2026-05-09Falkirk v Hibernian1-376%over
2026-05-09Motherwell v Heart Of Midlothian1-168%over
2026-05-08Arbroath v Dunfermline0-075%under
2026-05-05Dunfermline v Arbroath1-078%under
2026-05-04Heart Of Midlothian v Rangers2-179%over
2026-05-03Hibernian v Celtic1-276%over
2026-05-02Kilmarnock v Dundee Utd3-081%over
2026-05-02Dundee v ST Mirren1-071%under
2026-05-02Falkirk v Motherwell1-077%under
2026-05-01Livingston v Aberdeen2-274%over
2026-04-26Dundee Utd v Dundee3-080%over
2026-04-26Rangers v Motherwell2-382%over
2026-04-26Hibernian v Heart Of Midlothian1-269%over
2026-04-25ST Mirren v Livingston0-274%over
2026-04-25Aberdeen v Kilmarnock1-078%under
2026-04-25Celtic v Falkirk3-183%over
2026-04-12Falkirk v Rangers3-678%over
2026-04-11Celtic v ST Mirren1-081%under
2026-04-11Kilmarnock v Dundee2-280%over
2026-04-11Aberdeen v Hibernian2-072%over
2026-04-11Heart Of Midlothian v Motherwell3-166%over
2026-04-11Dundee Utd v Livingston3-280%over
2026-04-05Livingston v Heart Of Midlothian2-272%over
2026-04-05Dundee v Celtic1-281%over
2026-04-04Hibernian v Kilmarnock3-083%over
2026-04-04ST Mirren v Aberdeen2-069%over
2026-04-04Motherwell v Falkirk2-369%over
2026-04-04Rangers v Dundee Utd4-283%over
2026-03-22Dundee Utd v Celtic2-081%over
2026-03-21Kilmarnock v Livingston2-082%over
2026-03-21Heart Of Midlothian v Dundee1-077%under
2026-03-21Motherwell v Hibernian0-072%under
2026-03-21Falkirk v ST Mirren1-270%over
2026-03-21Rangers v Aberdeen4-179%over
2026-03-15ST Mirren v Rangers0-177%under
2026-03-15Dundee v Dundee Utd2-276%over
2026-03-14Celtic v Motherwell3-175%over
2026-03-14Hibernian v Livingston0-087%under
2026-03-14Aberdeen v Falkirk1-169%over
2026-03-14Kilmarnock v Heart Of Midlothian1-080%under
2026-03-07Dundee v Motherwell2-173%over
2026-03-04Aberdeen v Celtic1-277%over
2026-03-03Dundee Utd v ST Mirren2-171%over
2026-03-01Rangers v Celtic2-279%over
2026-02-28Dundee v Hibernian3-376%over
2026-02-28Heart Of Midlothian v Aberdeen1-076%under
2026-02-28Livingston v ST Mirren1-176%over
2026-02-28Motherwell v Dundee Utd2-075%over
2026-02-28Falkirk v Kilmarnock5-178%over
2026-02-24Dundee Utd v Aberdeen0-076%under
2026-02-22Celtic v Hibernian1-280%over
2026-02-22Livingston v Rangers2-284%over
2026-02-21Aberdeen v Dundee2-371%over
2026-02-21Heart Of Midlothian v Falkirk1-073%under
2026-02-21Dundee Utd v Kilmarnock1-183%over
2026-02-21ST Mirren v Motherwell0-564%over
2026-02-15Kilmarnock v Celtic2-384%over
2026-02-15Motherwell v Aberdeen2-071%over
2026-02-15Rangers v Heart Of Midlothian4-270%over
2026-02-14Hibernian v ST Mirren2-075%over
2026-02-14Dundee v Livingston2-277%over
2026-02-14Falkirk v Dundee Utd2-372%over
2026-02-11Celtic v Livingston2-191%over
2026-02-11Kilmarnock v ST Mirren4-369%over
2026-02-11Falkirk v Dundee1-071%under
2026-02-11Motherwell v Rangers1-167%over
2026-02-10Heart Of Midlothian v Hibernian1-075%under
2026-02-04Hibernian v Dundee Utd3-279%over
2026-02-04Livingston v Falkirk1-275%over
2026-02-04Rangers v Kilmarnock5-180%over
2026-02-03ST Mirren v Heart Of Midlothian1-068%under
2026-02-01Hibernian v Rangers0-075%under
2026-02-01Celtic v Falkirk2-079%over
2026-01-31Kilmarnock v Aberdeen3-072%over
2026-01-31ST Mirren v Dundee0-070%under
2026-01-31Livingston v Motherwell0-276%over
2026-01-31Dundee Utd v Heart Of Midlothian0-372%over
2026-01-25Heart Of Midlothian v Celtic2-274%over
2026-01-25Rangers v Dundee3-079%over
2026-01-24Aberdeen v Livingston6-272%over
2026-01-24Motherwell v Kilmarnock4-072%over
2026-01-24Falkirk v Hibernian4-171%over
2026-01-20Livingston v ST Mirren1-171%over
2026-01-14Heart Of Midlothian v ST Mirren2-073%over
2026-01-14Falkirk v Celtic0-175%under
2026-01-11Dundee v Heart Of Midlothian0-175%under
2026-01-11Aberdeen v Rangers0-269%over
2026-01-10Celtic v Dundee Utd4-081%over
2026-01-10Hibernian v Motherwell1-171%over
2026-01-10ST Mirren v Falkirk0-267%over
2026-01-10Livingston v Kilmarnock1-176%over
2026-01-06Rangers v Aberdeen2-074%over
2026-01-03Celtic v Rangers1-376%over
2026-01-03Kilmarnock v Hibernian1-375%over
2026-01-03Heart Of Midlothian v Livingston1-085%under
2026-01-03Motherwell v ST Mirren2-067%over
2026-01-03Dundee Utd v Dundee0-177%under
2026-01-03Falkirk v Aberdeen1-068%under