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.

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

Attack (0 = league average)Defense ↑Universitario de Vinto -- attack -0.295 (1352 Elo), defense -0.159 (1420 Elo), 146 matchesReal Tomayapo -- attack -0.047 (1476 Elo), defense -0.026 (1487 Elo), 140 matchesNacional Potosí -- attack 0.147 (1573 Elo), defense 0.121 (1561 Elo), 144 matchesNacional PotosíAtlético Palmaflor -- attack -0.137 (1432 Elo), defense -0.121 (1439 Elo), 76 matchesSanta Cruz -- attack -0.179 (1411 Elo), defense -0.300 (1350 Elo), 110 matchesClub Universitario -- attack -0.099 (1450 Elo), defense -0.071 (1465 Elo), 42 matchesAurora -- attack 0.107 (1553 Elo), defense -0.200 (1400 Elo), 142 matchesGuabirá -- attack 0.172 (1586 Elo), defense -0.190 (1405 Elo), 140 matchesBlooming -- attack 0.012 (1506 Elo), defense -0.136 (1432 Elo), 144 matchesBolívar -- attack 0.640 (1820 Elo), defense 0.360 (1680 Elo), 148 matchesBolívarIndependiente Petrolero -- attack 0.279 (1639 Elo), defense -0.092 (1454 Elo), 144 matchesAlways Ready -- attack 0.618 (1809 Elo), defense 0.245 (1623 Elo), 142 matchesAlways ReadyThe Strongest -- attack 0.434 (1717 Elo), defense 0.094 (1547 Elo), 149 matchesThe StrongestOriente Petrolero -- attack 0.004 (1502 Elo), defense -0.148 (1426 Elo), 142 matchesRoyal Pari -- attack -0.144 (1428 Elo), defense 0.019 (1509 Elo), 114 matchesJorge Wilstermann -- attack -0.231 (1384 Elo), defense -0.271 (1364 Elo), 140 matchesLibertad -- attack -0.097 (1451 Elo), defense -0.091 (1455 Elo), 36 matchesVaca Díez -- attack -0.032 (1484 Elo), defense -0.100 (1450 Elo), 32 matchesSan Antonio Bulo Bulo -- attack 0.316 (1658 Elo), defense -0.096 (1452 Elo), 77 matchesGualberto Villarroel SJ -- attack 0.110 (1555 Elo), defense 0.019 (1509 Elo), 70 matchesReal Oruro -- attack 0.333 (1667 Elo), defense -0.298 (1351 Elo), 32 matchesABB -- attack -0.166 (1417 Elo), defense -0.261 (1369 Elo), 32 matchesCD IN San Juan FC -- attack -0.026 (1487 Elo), defense -0.012 (1494 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
Bolívar0.6400.360182016802.180.80148
Always Ready0.6180.245180916232.130.90142
The Strongest0.4340.094171715471.781.05149
Real Oruro0.333-0.298166713511.611.5532
San Antonio Bulo Bulo0.316-0.096165814521.581.2777
Independiente Petrolero0.279-0.092163914541.521.26144
Guabirá0.172-0.190158614051.371.39140
Nacional Potosí0.1470.121157315611.331.02144
Gualberto Villarroel SJ0.1100.019155515091.281.1370
Aurora0.107-0.200155314001.281.41142
Blooming0.012-0.136150614321.161.32144
Oriente Petrolero0.004-0.148150214261.161.34142
CD IN San Juan FC-0.026-0.012148714941.121.162
Vaca Díez-0.032-0.100148414501.121.2732
Real Tomayapo-0.047-0.026147614871.101.18140
Libertad-0.097-0.091145114551.041.2636
Club Universitario-0.099-0.071145014651.041.2442
Atlético Palmaflor-0.137-0.121143214391.001.3076
Royal Pari-0.1440.019142815091.001.13114
ABB-0.166-0.261141713690.981.4932
Santa Cruz-0.179-0.300141113500.961.55110
Jorge Wilstermann-0.231-0.271138413640.911.51140
Universitario de Vinto-0.295-0.159135214200.861.35146

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 — Bolivia - Primera Division (160)

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

DateMatchScoreP(over)ActualCall
2026-09-18Bolívar v Gualberto Villarroel SJ4-292%over
2026-09-18Independiente Petrolero v San Antonio Bulo Bulo1-384%over
2026-09-17Blooming v Universitario de Vinto1-180%over
2026-09-17Real Tomayapo v Oriente Petrolero0-277%over
2026-09-16Guabirá v Aurora3-185%over
2026-09-16Nacional Potosí v Always Ready0-478%over
2026-09-15Real Oruro v Real Potosí0-281%over
2026-09-15ABB v The Strongest1-286%over
2026-09-14Real Tomayapo v Bolívar1-282%over
2026-09-13Always Ready v Guabirá6-088%over
2026-09-13Universitario de Vinto v Independiente Petrolero3-180%over
2026-09-12Real Potosí v Oriente Petrolero2-173%over
2026-09-12Gualberto Villarroel SJ v Nacional Potosí0-375%over
2026-09-12The Strongest v Real Oruro5-093%over
2026-09-12Blooming v ABB6-179%over
2026-09-11San Antonio Bulo Bulo v Aurora0-281%over
2026-09-07Nacional Potosí v Blooming2-173%over
2026-09-06Independiente Petrolero v Bolívar0-484%over
2026-09-06The Strongest v Real Tomayapo3-182%over
2026-09-05Guabirá v Real Potosí1-175%over
2026-09-05Aurora v Gualberto Villarroel SJ3-080%over
2026-09-05Oriente Petrolero v Always Ready1-281%over
2026-09-04Real Oruro v San Antonio Bulo Bulo2-092%over
2026-09-04ABB v Universitario de Vinto2-085%over
2026-08-28Bolívar v ABB4-194%over
2026-08-27Blooming v Real Oruro1-189%over
2026-08-27Always Ready v Aurora2-286%over
2026-08-27Independiente Petrolero v Guabirá3-185%over
2026-08-26San Antonio Bulo Bulo v The Strongest0-383%over
2026-08-26Real Potosí v Real Tomayapo0-173%under
2026-08-25Gualberto Villarroel SJ v Oriente Petrolero3-376%over
2026-08-25Universitario de Vinto v Nacional Potosí2-078%over
2026-08-23Real Oruro v Bolívar2-493%over
2026-08-23Guabirá v Blooming1-181%over
2026-08-23Real Tomayapo v Always Ready1-177%over
2026-08-22Oriente Petrolero v San Antonio Bulo Bulo4-084%over
2026-08-22ABB v Gualberto Villarroel SJ2-278%over
2026-08-22Aurora v Real Potosí0-075%under
2026-08-22Nacional Potosí v Independiente Petrolero3-079%over
2026-08-21The Strongest v Universitario de Vinto4-384%over
2026-08-17Independiente Petrolero v Gualberto Villarroel SJ1-080%under
2026-08-16Always Ready v Real Potosí1-179%over
2026-08-16Nacional Potosí v ABB2-085%over
2026-08-15Bolívar v San Antonio Bulo Bulo4-190%over
2026-08-15Real Oruro v Oriente Petrolero2-389%over
2026-08-15Guabirá v The Strongest3-182%over
2026-08-15Blooming v Aurora3-078%over
2026-08-14Universitario de Vinto v Real Tomayapo0-177%under
2026-08-09Gualberto Villarroel SJ v Always Ready2-373%over
2026-08-09Real Potosí v Blooming2-071%over
2026-08-09Oriente Petrolero v Universitario de Vinto5-079%over
2026-08-08San Antonio Bulo Bulo v Nacional Potosí2-180%over
2026-08-08The Strongest v Independiente Petrolero1-283%over
2026-08-08Aurora v Bolívar2-481%over
2026-08-07ABB v Guabirá0-189%under
2026-08-07Real Tomayapo v Real Oruro1-288%over
2026-08-06Bolívar v Oriente Petrolero2-186%over
2026-08-06Universitario de Vinto v Real Potosí0-272%over
2026-08-06Blooming v Always Ready0-078%under
2026-08-05Guabirá v Real Tomayapo3-086%over
2026-08-05Gualberto Villarroel SJ v San Antonio Bulo Bulo0-081%under
2026-08-05Nacional Potosí v The Strongest2-374%over
2026-08-04ABB v Real Oruro4-193%over
2026-08-04Independiente Petrolero v Aurora1-184%over
2026-08-02Real Potosí v Gualberto Villarroel SJ0-076%under
2026-08-02Always Ready v Bolívar1-085%under
2026-08-02Oriente Petrolero v Nacional Potosí1-077%under
2026-08-01Real Oruro v Independiente Petrolero0-393%over
2026-08-01San Antonio Bulo Bulo v Blooming2-081%over
2026-07-31Universitario de Vinto v Guabirá1-185%over
2026-07-31The Strongest v Aurora1-183%over
2026-07-31Real Tomayapo v ABB1-184%over
2026-07-27Gualberto Villarroel SJ v Universitario de Vinto2-179%over
2026-07-26Blooming v The Strongest1-176%over
2026-07-26Bolívar v Real Potosí2-184%over
2026-07-26Nacional Potosí v Real Tomayapo4-178%over
2026-07-25Always Ready v San Antonio Bulo Bulo3-192%over
2026-07-25Guabirá v Real Oruro4-194%over
2026-07-25Independiente Petrolero v Oriente Petrolero1-284%over
2026-07-24Aurora v ABB3-288%over
2026-07-21Independiente Petrolero v Real Potosí1-280%over
2026-07-20Blooming v Real Tomayapo1-081%under
2026-07-20San Antonio Bulo Bulo v ABB2-189%over
2026-07-20Nacional Potosí v Real Oruro1-489%over
2026-07-19Aurora v Oriente Petrolero2-281%over
2026-07-19Gualberto Villarroel SJ v The Strongest0-079%under
2026-07-18Bolívar v Guabirá4-093%over
2026-07-18Always Ready v Universitario de Vinto4-089%over
2026-07-16The Strongest v Oriente Petrolero2-184%over
2026-07-16ABB v Independiente Petrolero3-187%over
2026-07-15Blooming v Gualberto Villarroel SJ1-182%over
2026-07-15Real Potosí v San Antonio Bulo Bulo5-079%over
2026-07-14Real Oruro v Always Ready0-688%over
2026-07-12Real Potosí v Nacional Potosí1-171%over
2026-07-12The Strongest v Bolívar1-184%over
2026-07-12Real Tomayapo v Independiente Petrolero2-181%over
2026-07-11Real Oruro v Gualberto Villarroel SJ3-190%over
2026-07-10Nacional Potosí v Aurora2-080%over
2026-07-09Real Potosí v ABB3-181%over
2026-07-08Real Oruro v Universitario de Vinto4-188%over
2026-07-07Gualberto Villarroel SJ v Real Tomayapo3-279%over
2026-06-02Universitario de Vinto v Aurora1-279%over
2026-05-31Oriente Petrolero v Blooming0-182%under
2026-05-30ABB v Always Ready1-384%over
2026-05-29San Antonio Bulo Bulo v Guabirá1-290%over
2026-05-17Guabirá v Nacional Potosí2-184%over
2026-05-16Real Tomayapo v Aurora0-279%over
2026-05-16Universitario de Vinto v Bolívar3-280%over
2026-05-15Oriente Petrolero v Guabirá2-287%over
2026-05-14Bolívar v Nacional Potosí1-186%over
2026-05-14Always Ready v The Strongest0-186%under
2026-05-13Aurora v Real Oruro1-191%over
2026-05-13Independiente Petrolero v Blooming3-185%over
2026-05-12San Antonio Bulo Bulo v Universitario de Vinto0-285%over
2026-05-11ABB v Oriente Petrolero3-183%over
2026-05-10Independiente Petrolero v Always Ready0-087%under
2026-05-10The Strongest v Real Potosí0-084%under
2026-05-10Blooming v Bolívar0-087%under
2026-05-09Guabirá v Gualberto Villarroel SJ3-086%over
2026-05-09Real Tomayapo v San Antonio Bulo Bulo1-084%under
2026-05-05Universitario de Vinto v Blooming1-182%over
2026-05-03Gualberto Villarroel SJ v Bolívar1-284%over
2026-05-03The Strongest v ABB3-192%over
2026-05-02Always Ready v Nacional Potosí3-184%over
2026-05-02Aurora v Guabirá4-288%over
2026-05-02Oriente Petrolero v Real Tomayapo3-179%over
2026-05-01San Antonio Bulo Bulo v Independiente Petrolero2-289%over
2026-05-01Real Potosí v Real Oruro1-287%over
2026-04-28Aurora v San Antonio Bulo Bulo3-186%over
2026-04-26Real Oruro v The Strongest2-391%over
2026-04-26Bolívar v Real Tomayapo6-088%over
2026-04-26Oriente Petrolero v Real Potosí2-077%over
2026-04-25Independiente Petrolero v Universitario de Vinto2-186%over
2026-04-25Nacional Potosí v Gualberto Villarroel SJ1-181%over
2026-04-25ABB v Blooming3-285%over
2026-04-25Guabirá v Always Ready1-288%over
2026-04-24Real Tomayapo v The Strongest0-084%under
2026-04-23Blooming v Nacional Potosí2-181%over
2026-04-23San Antonio Bulo Bulo v Real Oruro2-194%over
2026-04-22Bolívar v Independiente Petrolero1-293%over
2026-04-22Always Ready v Oriente Petrolero1-091%under
2026-04-22Real Potosí v Guabirá3-085%over
2026-04-21Universitario de Vinto v ABB5-277%over
2026-04-21Gualberto Villarroel SJ v Aurora1-184%over
2026-04-14Real Tomayapo v Real Potosí1-178%over
2026-04-12Real Oruro v Blooming2-292%over
2026-04-12The Strongest v San Antonio Bulo Bulo3-290%over
2026-04-12Oriente Petrolero v Gualberto Villarroel SJ2-182%over
2026-04-11Guabirá v Independiente Petrolero2-290%over
2026-04-11ABB v Bolívar0-287%over
2026-04-11Nacional Potosí v Universitario de Vinto1-083%under
2026-04-11Aurora v Always Ready1-187%over
2026-04-05Gualberto Villarroel SJ v ABB1-286%over
2026-04-05Universitario de Vinto v The Strongest1-282%over
2026-04-04Always Ready v Real Tomayapo4-090%over
2026-04-04Real Potosí v Aurora0-085%under
2026-04-04San Antonio Bulo Bulo v Oriente Petrolero2-089%over
2026-04-03Bolívar v Real Oruro5-295%over
2026-04-03Independiente Petrolero v Nacional Potosí0-386%over
2026-04-03Blooming v Guabirá5-087%over