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.

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

Attack (0 = league average)Defense ↑İstanbulspor -- attack -0.192 (1404 Elo), defense -0.195 (1403 Elo), 74 matchesTrabzonspor -- attack 0.246 (1623 Elo), defense 0.157 (1578 Elo), 143 matchesSivasspor -- attack -0.077 (1461 Elo), defense -0.051 (1474 Elo), 110 matchesGaziantep FK -- attack -0.077 (1462 Elo), defense -0.110 (1445 Elo), 143 matchesBeşiktaş -- attack 0.209 (1604 Elo), defense 0.235 (1617 Elo), 144 matchesBeşiktaşKayserispor -- attack -0.295 (1353 Elo), defense -0.139 (1431 Elo), 144 matchesGiresunspor -- attack -0.041 (1480 Elo), defense -0.033 (1483 Elo), 36 matchesAdana Demirspor -- attack -0.153 (1424 Elo), defense -0.379 (1311 Elo), 110 matchesFatih Karagümrük -- attack -0.193 (1404 Elo), defense 0.010 (1505 Elo), 108 matchesAlanyaspor -- attack -0.056 (1472 Elo), defense 0.119 (1560 Elo), 144 matchesAntalyaspor -- attack -0.248 (1376 Elo), defense -0.061 (1469 Elo), 144 matchesGalatasaray -- attack 0.471 (1735 Elo), defense 0.384 (1692 Elo), 144 matchesGalatasarayBaşakşehir -- attack 0.256 (1628 Elo), defense 0.240 (1620 Elo), 144 matchesBaşakşehirKasımpaşa -- attack -0.099 (1451 Elo), defense -0.012 (1494 Elo), 144 matchesFenerbahçe -- attack 0.538 (1769 Elo), defense 0.202 (1601 Elo), 144 matchesFenerbahçeÜmraniyespor -- attack -0.025 (1488 Elo), defense -0.058 (1471 Elo), 36 matchesAnkaragücü -- attack -0.073 (1463 Elo), defense 0.005 (1503 Elo), 74 matchesKonyaspor -- attack -0.063 (1468 Elo), defense 0.042 (1521 Elo), 144 matchesHatayspor -- attack -0.012 (1494 Elo), defense -0.232 (1384 Elo), 110 matchesPendikspor -- attack -0.087 (1457 Elo), defense -0.084 (1458 Elo), 38 matchesSamsunspor -- attack 0.071 (1536 Elo), defense 0.089 (1545 Elo), 108 matchesRizespor -- attack 0.077 (1538 Elo), defense -0.058 (1471 Elo), 108 matchesGöztepe -- attack -0.043 (1479 Elo), defense 0.218 (1609 Elo), 70 matchesEyüpspor -- attack -0.128 (1436 Elo), defense 0.057 (1529 Elo), 70 matchesBodrum FK -- attack -0.267 (1367 Elo), defense 0.122 (1561 Elo), 36 matchesGençlerbirliği S.K. -- attack -0.133 (1433 Elo), defense 0.069 (1534 Elo), 34 matchesKocaelispor -- attack -0.328 (1336 Elo), defense 0.182 (1591 Elo), 34 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
Fenerbahçe0.5380.202176916012.171.04144
Galatasaray0.4710.384173516922.030.86144
Başakşehir0.2560.240162816201.641.00144
Trabzonspor0.2460.157162315781.621.08143
Beşiktaş0.2090.235160416171.561.00144
Rizespor0.077-0.058153814711.371.34108
Samsunspor0.0710.089153615451.361.16108
Hatayspor-0.012-0.232149413841.251.60110
Ümraniyespor-0.025-0.058148814711.241.3436
Giresunspor-0.041-0.033148014831.221.3136
Göztepe-0.0430.218147916091.211.0270
Alanyaspor-0.0560.119147215601.201.12144
Konyaspor-0.0630.042146815211.191.22144
Ankaragücü-0.0730.005146315031.181.2674
Gaziantep FK-0.077-0.110146214451.171.41143
Sivasspor-0.077-0.051146114741.171.33110
Pendikspor-0.087-0.084145714581.161.3838
Kasımpaşa-0.099-0.012145114941.151.28144
Eyüpspor-0.1280.057143615291.121.2070
Gençlerbirliği S.K.-0.1330.069143315341.111.1834
Adana Demirspor-0.153-0.379142413111.091.85110
İstanbulspor-0.192-0.195140414031.051.5474
Fatih Karagümrük-0.1930.010140415051.041.26108
Antalyaspor-0.248-0.061137614690.991.35144
Bodrum FK-0.2670.122136715610.971.1236
Kayserispor-0.295-0.139135314310.941.46144
Kocaelispor-0.3280.182133615910.911.0634

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 — Turkey - Super Lig (199)

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

DateMatchScoreP(over)ActualCall
2026-09-18Kasımpaşa v Konyaspor0-073%under
2026-09-14Gaziantep FK v Fenerbahçe0-085%under
2026-09-13Gençlerbirliği S.K. v Kasımpaşa1-271%over
2026-09-13Galatasaray v Kocaelispor1-078%under
2026-09-13Amed v Başakşehir5-079%over
2026-09-12Eyüpspor v Rizespor0-273%over
2026-09-12Samsunspor v Çorum FK1-580%over
2026-09-12Konyaspor v Trabzonspor1-079%under
2026-09-12Alanyaspor v Göztepe2-273%over
2026-09-11Beşiktaş v Erzurumspor FK3-080%over
2026-09-07Göztepe v Gaziantep FK2-476%over
2026-09-07Rizespor v Alanyaspor0-174%under
2026-09-06Kasımpaşa v Amed2-274%over
2026-09-06Çorum FK v Eyüpspor3-076%over
2026-09-06Trabzonspor v Gençlerbirliği S.K.5-075%over
2026-09-06Kocaelispor v Samsunspor1-069%under
2026-09-05Erzurumspor FK v Konyaspor1-077%under
2026-09-05Fenerbahçe v Beşiktaş1-285%over
2026-09-04Başakşehir v Galatasaray2-381%over
2026-08-31Beşiktaş v Çorum FK6-276%over
2026-08-31Amed v Trabzonspor2-178%over
2026-08-30Eyüpspor v Alanyaspor2-168%over
2026-08-30Başakşehir v Kasımpaşa1-177%over
2026-08-30Samsunspor v Fenerbahçe0-285%over
2026-08-29Konyaspor v Kocaelispor1-267%over
2026-08-29Galatasaray v Göztepe3-280%over
2026-08-29Gaziantep FK v Rizespor1-277%over
2026-08-28Gençlerbirliği S.K. v Erzurumspor FK1-175%over
2026-08-24Kocaelispor v Amed2-068%over
2026-08-23Trabzonspor v Başakşehir2-179%over
2026-08-23Eyüpspor v Gaziantep FK0-174%under
2026-08-23Göztepe v Gençlerbirliği S.K.0-173%under
2026-08-23Alanyaspor v Beşiktaş1-073%under
2026-08-22Rizespor v Samsunspor0-280%over
2026-08-22Çorum FK v Kasımpaşa0-177%under
2026-08-22Fenerbahçe v Konyaspor4-283%over
2026-08-21Erzurumspor FK v Galatasaray0-480%over
2026-08-17Samsunspor v Göztepe3-373%over
2026-08-16Başakşehir v Kocaelispor2-072%over
2026-08-16Beşiktaş v Eyüpspor1-076%under
2026-08-16Amed v Erzurumspor FK3-078%over
2026-08-15Konyaspor v Rizespor0-178%under
2026-08-15Kasımpaşa v Trabzonspor1-178%over
2026-08-15Gençlerbirliği S.K. v Fenerbahçe2-180%over
2026-08-15Gaziantep FK v Alanyaspor1-175%over
2026-08-14Galatasaray v Çorum FK2-283%over
2026-05-17Kayserispor v Konyaspor2-171%over
2026-05-17Fenerbahçe v Eyüpspor3-385%over
2026-05-17Trabzonspor v Gençlerbirliği S.K.0-380%over
2026-05-17Kasımpaşa v Galatasaray1-084%under
2026-05-17Antalyaspor v Kocaelispor1-061%under
2026-05-16Fatih Karagümrük v Alanyaspor2-167%over
2026-05-16Gaziantep FK v Başakşehir1-280%over
2026-05-16Samsunspor v Göztepe3-070%over
2026-05-15Rizespor v Beşiktaş2-279%over
2026-05-09Beşiktaş v Trabzonspor1-279%over
2026-05-09Başakşehir v Samsunspor3-079%over
2026-05-09Konyaspor v Fenerbahçe0-382%over
2026-05-09Galatasaray v Antalyaspor4-285%over
2026-05-09Göztepe v Gaziantep FK2-174%over
2026-05-09Alanyaspor v Kayserispor3-170%over
2026-05-09Gençlerbirliği S.K. v Kasımpaşa3-269%over
2026-05-09Eyüpspor v Rizespor4-072%over
2026-05-09Kocaelispor v Fatih Karagümrük0-162%under
2026-05-03Kayserispor v Eyüpspor1-165%over
2026-05-03Kasımpaşa v Kocaelispor1-164%over
2026-05-03Antalyaspor v Alanyaspor0-069%under
2026-05-03Fatih Karagümrük v Gençlerbirliği S.K.1-068%under
2026-05-02Fenerbahçe v Başakşehir3-184%over
2026-05-02Trabzonspor v Göztepe1-175%over
2026-05-02Samsunspor v Galatasaray4-179%over
2026-05-01Rizespor v Konyaspor3-274%over
2026-05-01Gaziantep FK v Beşiktaş0-279%over
2026-04-27Alanyaspor v Samsunspor2-368%over
2026-04-27Beşiktaş v Fatih Karagümrük0-082%under
2026-04-27Konyaspor v Trabzonspor2-176%over
2026-04-26Gençlerbirliği S.K. v Kocaelispor1-061%under
2026-04-26Galatasaray v Fenerbahçe3-085%over
2026-04-25Eyüpspor v Gaziantep FK3-071%over
2026-04-25Kayserispor v Rizespor2-075%over
2026-04-25Göztepe v Antalyaspor2-071%over
2026-04-24Başakşehir v Kasımpaşa4-077%over
2026-04-20Gaziantep FK v Kayserispor3-075%over
2026-04-19Kasımpaşa v Alanyaspor1-071%under
2026-04-19Samsunspor v Beşiktaş2-175%over
2026-04-19Trabzonspor v Başakşehir1-181%over
2026-04-18Fatih Karagümrük v Eyüpspor1-268%over
2026-04-18Kocaelispor v Göztepe1-160%over
2026-04-18Gençlerbirliği S.K. v Galatasaray1-278%over
2026-04-17Fenerbahçe v Rizespor2-287%over
2026-04-17Antalyaspor v Konyaspor0-270%over
2026-04-13Rizespor v Gaziantep FK2-180%over
2026-04-13Eyüpspor v Samsunspor1-265%over
2026-04-12Konyaspor v Fatih Karagümrük3-071%over
2026-04-12Göztepe v Kasımpaşa3-366%over
2026-04-12Galatasaray v Kocaelispor1-180%over
2026-04-11Başakşehir v Gençlerbirliği S.K.3-075%over
2026-04-11Alanyaspor v Trabzonspor1-177%over
2026-04-11Kayserispor v Fenerbahçe0-482%over
2026-04-10Beşiktaş v Antalyaspor4-277%over
2026-04-09Rizespor v Samsunspor4-171%over
2026-04-08Göztepe v Galatasaray1-370%over
2026-04-06Kocaelispor v Başakşehir0-071%under
2026-04-05Fatih Karagümrük v Rizespor2-173%over
2026-04-05Samsunspor v Konyaspor2-265%over
2026-04-05Antalyaspor v Eyüpspor3-062%over
2026-04-05Fenerbahçe v Beşiktaş1-085%under
2026-04-04Gençlerbirliği S.K. v Göztepe0-262%over
2026-04-04Kasımpaşa v Kayserispor2-069%over
2026-04-04Gaziantep FK v Alanyaspor1-175%over
2026-04-04Trabzonspor v Galatasaray2-182%over
2026-03-19Kayserispor v Fatih Karagümrük1-072%under
2026-03-19Beşiktaş v Kasımpaşa2-178%over
2026-03-19Konyaspor v Gençlerbirliği S.K.1-069%under
2026-03-18Alanyaspor v Kocaelispor5-061%over
2026-03-18Başakşehir v Antalyaspor0-081%under
2026-03-18Eyüpspor v Trabzonspor0-176%under
2026-03-17Fenerbahçe v Gaziantep FK4-188%over
2026-03-15Kasımpaşa v Eyüpspor1-068%under
2026-03-15Gençlerbirliği S.K. v Beşiktaş0-275%over
2026-03-15Samsunspor v Kayserispor2-168%over
2026-03-14Kocaelispor v Konyaspor1-262%over
2026-03-14Galatasaray v Başakşehir3-084%over
2026-03-14Göztepe v Alanyaspor2-260%over
2026-03-14Trabzonspor v Rizespor1-085%under
2026-03-13Antalyaspor v Gaziantep FK1-471%over
2026-03-13Fatih Karagümrük v Fenerbahçe2-087%over
2026-03-09Eyüpspor v Kocaelispor0-161%under
2026-03-09Alanyaspor v Gençlerbirliği S.K.0-070%under
2026-03-09Kayserispor v Trabzonspor1-380%over
2026-03-08Rizespor v Antalyaspor1-076%under
2026-03-08Gaziantep FK v Fatih Karagümrük1-177%over
2026-03-08Konyaspor v Kasımpaşa1-170%over
2026-03-08Fenerbahçe v Samsunspor3-281%over
2026-03-07Başakşehir v Göztepe2-170%over
2026-03-07Beşiktaş v Galatasaray0-182%under
2026-03-01Gençlerbirliği S.K. v Kayserispor0-075%under
2026-03-01Antalyaspor v Fenerbahçe2-282%over
2026-03-01Samsunspor v Gaziantep FK0-072%under
2026-02-28Kasımpaşa v Rizespor0-376%over
2026-02-28Kocaelispor v Beşiktaş0-172%under
2026-02-28Galatasaray v Alanyaspor3-181%over
2026-02-28Göztepe v Eyüpspor0-066%under
2026-02-27Başakşehir v Konyaspor2-079%over
2026-02-27Trabzonspor v Fatih Karagümrük3-186%over
2026-02-23Fenerbahçe v Kasımpaşa1-189%over
2026-02-22Kayserispor v Antalyaspor1-071%under
2026-02-22Gaziantep FK v Trabzonspor1-284%over
2026-02-22Beşiktaş v Göztepe4-069%over
2026-02-22Fatih Karagümrük v Samsunspor0-073%under
2026-02-21Eyüpspor v Gençlerbirliği S.K.1-074%under
2026-02-21Alanyaspor v Başakşehir1-275%over
2026-02-21Konyaspor v Galatasaray2-081%over
2026-02-20Rizespor v Kocaelispor2-070%over
2026-02-16Kasımpaşa v Fatih Karagümrük3-274%over
2026-02-15Kocaelispor v Gaziantep FK3-069%over
2026-02-15Göztepe v Kayserispor0-073%under
2026-02-15Başakşehir v Beşiktaş2-381%over
2026-02-14Gençlerbirliği S.K. v Rizespor2-278%over
2026-02-14Alanyaspor v Konyaspor2-167%over
2026-02-14Trabzonspor v Fenerbahçe2-386%over
2026-02-13Galatasaray v Eyüpspor5-183%over
2026-02-13Antalyaspor v Samsunspor3-166%over
2026-02-09Kayserispor v Kocaelispor1-266%over
2026-02-09Fenerbahçe v Gençlerbirliği S.K.3-187%over
2026-02-09Gaziantep FK v Kasımpaşa2-175%over
2026-02-08Eyüpspor v Başakşehir1-274%over
2026-02-08Konyaspor v Göztepe0-068%under
2026-02-08Rizespor v Galatasaray0-382%over
2026-02-08Beşiktaş v Alanyaspor2-272%over
2026-02-07Fatih Karagümrük v Antalyaspor1-074%under
2026-02-07Samsunspor v Trabzonspor0-375%over
2026-02-02Kocaelispor v Fenerbahçe0-276%over
2026-02-01Gençlerbirliği S.K. v Gaziantep FK2-177%over
2026-02-01Galatasaray v Kayserispor4-086%over
2026-01-31Alanyaspor v Eyüpspor1-363%over
2026-01-31Başakşehir v Rizespor2-281%over
2026-01-31Beşiktaş v Konyaspor2-178%over
2026-01-31Göztepe v Fatih Karagümrük2-175%over
2026-01-30Kasımpaşa v Samsunspor0-168%under
2026-01-30Antalyaspor v Trabzonspor1-180%over
2026-01-26Eyüpspor v Beşiktaş2-269%over
2026-01-25Gaziantep FK v Konyaspor1-177%over
2026-01-25Antalyaspor v Gençlerbirliği S.K.2-173%over
2026-01-25Rizespor v Alanyaspor1-169%over
2026-01-25Fenerbahçe v Göztepe1-180%over
2026-01-24Kayserispor v Başakşehir0-378%over
2026-01-24Samsunspor v Kocaelispor0-066%under
2026-01-24Fatih Karagümrük v Galatasaray1-381%over
2026-01-23Trabzonspor v Kasımpaşa2-183%over
2026-01-19Konyaspor v Eyüpspor1-168%over
2026-01-19Beşiktaş v Kayserispor1-082%under
2026-01-19Göztepe v Rizespor3-171%over
2026-01-18Kasımpaşa v Antalyaspor0-076%under
2026-01-18Gençlerbirliği S.K. v Samsunspor1-173%over
2026-01-18Kocaelispor v Trabzonspor1-275%over
2026-01-18Alanyaspor v Fenerbahçe2-374%over
2026-01-17Başakşehir v Fatih Karagümrük2-182%over
2026-01-17Galatasaray v Gaziantep FK1-187%over