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.

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

Attack (0 = league average)Defense ↑SOL DE America -- attack -0.012 (1494 Elo), defense -0.171 (1415 Elo), 44 matchesNacional Asuncion -- attack -0.007 (1496 Elo), defense -0.027 (1487 Elo), 88 matchesOlimpia -- attack 0.034 (1517 Elo), defense 0.154 (1577 Elo), 88 matchesOlimpiaGeneral Caballero -- attack -0.166 (1417 Elo), defense -0.031 (1485 Elo), 88 matchesResistencia -- attack -0.114 (1443 Elo), defense -0.099 (1451 Elo), 44 matchesTacuary -- attack -0.056 (1472 Elo), defense -0.165 (1417 Elo), 66 matches12 de Octubre -- attack -0.075 (1462 Elo), defense -0.078 (1461 Elo), 22 matchesLibertad Asuncion -- attack 0.224 (1612 Elo), defense 0.356 (1678 Elo), 88 matchesLibertad AsuncionGuairena FC -- attack -0.127 (1437 Elo), defense -0.022 (1489 Elo), 44 matchesClub Guarani -- attack 0.078 (1539 Elo), defense 0.066 (1533 Elo), 88 matchesCerro Porteno -- attack 0.290 (1645 Elo), defense 0.271 (1635 Elo), 88 matchesCerro PortenoSportivo Ameliano -- attack -0.118 (1441 Elo), defense 0.142 (1571 Elo), 88 matchesSportivo Trinidense -- attack 0.101 (1550 Elo), defense 0.102 (1551 Elo), 66 matchesSportivo TrinidenseSportivo Luqueno -- attack -0.246 (1377 Elo), defense 0.084 (1542 Elo), 66 matches2 de Mayo -- attack -0.179 (1410 Elo), defense 0.031 (1515 Elo), 44 matchesAtlético Tembetary -- attack -0.166 (1417 Elo), defense -0.087 (1457 Elo), 22 matchesDeportivo Recoleta -- attack 0.056 (1528 Elo), defense -0.042 (1479 Elo), 22 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
Cerro Porteno0.2900.271164516351.610.9288
Libertad Asuncion0.2240.356161216781.510.8588
Sportivo Trinidense0.1010.102155015511.331.0966
Club Guarani0.0780.066153915331.301.1388
Deportivo Recoleta0.056-0.042152814791.281.2622
Olimpia0.0340.154151715771.251.0388
Nacional Asuncion-0.007-0.027149614871.201.2488
SOL DE America-0.012-0.171149414151.191.4344
Tacuary-0.056-0.165147214171.141.4266
12 de Octubre-0.075-0.078146214611.121.3022
Resistencia-0.114-0.099144314511.081.3344
Sportivo Ameliano-0.1180.142144115711.071.0588
Guairena FC-0.127-0.022143714891.061.2344
General Caballero-0.166-0.031141714851.021.2488
Atlético Tembetary-0.166-0.087141714571.021.3222
2 de Mayo-0.1790.031141015151.011.1744
Sportivo Luqueno-0.2460.084137715420.941.1166

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 — Paraguay - Division Profesional (Apertura) (131)

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

DateMatchScoreP(over)ActualCall
2026-05-24Nacional Asuncion v Libertad Asuncion2-171%over
2026-05-24Cerro Porteno v Rubio NU2-065%over
2026-05-24Sportivo Ameliano v Sportivo Trinidense1-266%over
2026-05-23Sportivo Luqueno v Olimpia1-268%over
2026-05-23Deportivo Recoleta v Club Guarani2-176%over
2026-05-222 de Mayo v Club Sp. San Lorenzo0-169%under
2026-05-17Club Sp. San Lorenzo v Sportivo Luqueno0-072%under
2026-05-16Club Guarani v Sportivo Ameliano1-064%under
2026-05-15Olimpia v Deportivo Recoleta3-275%over
2026-05-15Rubio NU v Nacional Asuncion1-164%over
2026-05-15Sportivo Trinidense v Cerro Porteno3-168%over
2026-05-14Libertad Asuncion v 2 de Mayo0-077%under
2026-05-11Sportivo Ameliano v Deportivo Recoleta3-270%over
2026-05-11Cerro Porteno v Club Guarani0-070%under
2026-05-10Club Sp. San Lorenzo v Olimpia1-076%under
2026-05-10Sportivo Luqueno v Libertad Asuncion2-372%over
2026-05-092 de Mayo v Rubio NU2-064%over
2026-05-09Nacional Asuncion v Sportivo Trinidense2-169%over
2026-05-03Olimpia v Sportivo Ameliano1-163%over
2026-05-03Deportivo Recoleta v Cerro Porteno2-176%over
2026-05-03Club Guarani v Nacional Asuncion0-171%under
2026-05-02Rubio NU v Sportivo Luqueno0-065%under
2026-05-01Sportivo Trinidense v 2 de Mayo1-272%over
2026-05-01Libertad Asuncion v Club Sp. San Lorenzo5-076%over
2026-04-262 de Mayo v Club Guarani2-270%over
2026-04-26Club Sp. San Lorenzo v Rubio NU0-169%under
2026-04-25Sportivo Luqueno v Sportivo Trinidense2-169%over
2026-04-25Libertad Asuncion v Olimpia3-266%over
2026-04-24Nacional Asuncion v Deportivo Recoleta2-175%over
2026-04-24Cerro Porteno v Sportivo Ameliano1-165%over
2026-04-21Rubio NU v Libertad Asuncion3-066%over
2026-04-20Sportivo Ameliano v Nacional Asuncion1-164%over
2026-04-18Club Guarani v Sportivo Luqueno2-169%over
2026-04-18Deportivo Recoleta v 2 de Mayo5-072%over
2026-04-17Sportivo Trinidense v Club Sp. San Lorenzo2-174%over
2026-04-12Rubio NU v Olimpia0-265%over
2026-04-12Libertad Asuncion v Sportivo Trinidense1-168%over
2026-04-11Sportivo Luqueno v Deportivo Recoleta2-172%over
2026-04-11Nacional Asuncion v Cerro Porteno0-074%under
2026-04-102 de Mayo v Sportivo Ameliano1-261%over
2026-04-10Club Sp. San Lorenzo v Club Guarani1-076%under
2026-04-06Sportivo Trinidense v Rubio NU4-063%over
2026-04-05Sportivo Ameliano v Sportivo Luqueno2-261%over
2026-04-05Club Guarani v Libertad Asuncion1-071%under
2026-04-04Olimpia v Nacional Asuncion3-068%over
2026-04-04Cerro Porteno v 2 de Mayo3-071%over
2026-04-04Deportivo Recoleta v Club Sp. San Lorenzo4-274%over
2026-04-01Rubio NU v Club Guarani0-266%over
2026-04-01Sportivo Trinidense v Olimpia2-163%over
2026-03-312 de Mayo v Nacional Asuncion1-169%over
2026-03-31Sportivo Luqueno v Cerro Porteno2-367%over
2026-03-31Club Sp. San Lorenzo v Sportivo Ameliano1-264%over
2026-03-30Libertad Asuncion v Deportivo Recoleta1-074%under
2026-03-29Club Guarani v Sportivo Trinidense0-072%under
2026-03-28Olimpia v 2 de Mayo4-160%over
2026-03-28Cerro Porteno v Club Sp. San Lorenzo2-075%over
2026-03-27Nacional Asuncion v Sportivo Luqueno3-264%over
2026-03-27Sportivo Ameliano v Libertad Asuncion2-063%over
2026-03-26Deportivo Recoleta v Rubio NU1-069%under
2026-03-25Club Guarani v 2 de Mayo1-169%over
2026-03-23Sportivo Trinidense v Deportivo Recoleta3-269%over
2026-03-23Rubio NU v Sportivo Ameliano1-256%over
2026-03-22Club Sp. San Lorenzo v Nacional Asuncion0-076%under
2026-03-22Sportivo Luqueno v 2 de Mayo0-258%over
2026-03-21Club Guarani v Olimpia0-268%over
2026-03-21Libertad Asuncion v Cerro Porteno2-367%over
2026-03-19Sportivo Trinidense v Sportivo Ameliano1-158%over
2026-03-18Rubio NU v Cerro Porteno2-065%over
2026-03-18Club Guarani v Deportivo Recoleta3-173%over
2026-03-18Libertad Asuncion v Nacional Asuncion2-171%over
2026-03-17Club Sp. San Lorenzo v 2 de Mayo1-169%over
2026-03-17Olimpia v Sportivo Luqueno1-060%under
2026-03-15Nacional Asuncion v Rubio NU1-069%under
2026-03-15Sportivo Ameliano v Club Guarani0-067%under
2026-03-14Deportivo Recoleta v Olimpia0-167%under
2026-03-14Cerro Porteno v Sportivo Trinidense2-165%over
2026-03-13Sportivo Luqueno v Club Sp. San Lorenzo1-169%over
2026-03-132 de Mayo v Libertad Asuncion0-266%over
2026-03-09Sportivo Trinidense v Nacional Asuncion1-169%over
2026-03-09Deportivo Recoleta v Sportivo Ameliano1-165%over
2026-03-08Olimpia v Club Sp. San Lorenzo1-173%over
2026-03-08Rubio NU v 2 de Mayo0-164%under
2026-03-07Club Guarani v Cerro Porteno0-272%over
2026-03-07Libertad Asuncion v Sportivo Luqueno1-068%under
2026-03-02Sportivo Luqueno v Rubio NU0-164%under
2026-03-02Club Sp. San Lorenzo v Libertad Asuncion0-769%over
2026-03-01Nacional Asuncion v Club Guarani1-177%over
2026-03-01Cerro Porteno v Deportivo Recoleta2-071%over
2026-02-28Sportivo Ameliano v Olimpia0-160%under
2026-02-282 de Mayo v Sportivo Trinidense1-065%under
2026-02-26Rubio NU v Club Sp. San Lorenzo2-070%over
2026-02-26Deportivo Recoleta v Nacional Asuncion2-273%over
2026-02-25Sportivo Ameliano v Cerro Porteno0-163%under
2026-02-25Olimpia v Libertad Asuncion1-065%under
2026-02-25Sportivo Trinidense v Sportivo Luqueno1-164%over
2026-02-23Sportivo Luqueno v Club Guarani3-268%over
2026-02-21Cerro Porteno v Olimpia0-169%under
2026-02-20Libertad Asuncion v Rubio NU0-169%under
2026-02-202 de Mayo v Deportivo Recoleta0-171%under
2026-02-19Club Sp. San Lorenzo v Sportivo Trinidense1-170%over
2026-02-19Nacional Asuncion v Sportivo Ameliano1-167%over
2026-02-15Sportivo Trinidense v Libertad Asuncion1-068%under
2026-02-15Cerro Porteno v Nacional Asuncion0-274%over
2026-02-14Olimpia v Rubio NU0-072%under
2026-02-14Sportivo Ameliano v 2 de Mayo3-062%over
2026-02-13Club Guarani v Club Sp. San Lorenzo3-174%over
2026-02-13Deportivo Recoleta v Sportivo Luqueno1-267%over
2026-02-08Libertad Asuncion v Club Guarani3-367%over
2026-02-08Nacional Asuncion v Olimpia1-272%over
2026-02-07Rubio NU v Sportivo Trinidense0-171%under
2026-02-072 de Mayo v Cerro Porteno0-073%under
2026-02-06Club Sp. San Lorenzo v Deportivo Recoleta0-372%over
2026-02-06Sportivo Luqueno v Sportivo Ameliano0-159%under
2026-02-02Deportivo Recoleta v Libertad Asuncion2-168%over
2026-02-02Cerro Porteno v Sportivo Luqueno2-070%over
2026-02-01Olimpia v Sportivo Trinidense3-266%over
2026-02-01Club Guarani v Rubio NU4-070%over
2026-01-31Nacional Asuncion v 2 de Mayo5-167%over
2026-01-31Sportivo Ameliano v Club Sp. San Lorenzo1-067%under
2026-01-29Sportivo Trinidense v Club Guarani0-070%under
2026-01-29Rubio NU v Deportivo Recoleta1-172%over
2026-01-28Libertad Asuncion v Sportivo Ameliano1-065%under
2026-01-282 de Mayo v Olimpia1-165%over
2026-01-27Sportivo Luqueno v Nacional Asuncion1-264%over
2026-01-27Club Sp. San Lorenzo v Cerro Porteno2-470%over
2026-01-25Olimpia v Club Guarani2-168%over
2026-01-25Sportivo Ameliano v Rubio NU2-265%over
2026-01-24Nacional Asuncion v Club Sp. San Lorenzo1-070%under
2026-01-24Cerro Porteno v Libertad Asuncion1-168%over
2026-01-23Deportivo Recoleta v Sportivo Trinidense1-171%over
2026-01-232 de Mayo v Sportivo Luqueno1-260%over