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.097 goals/team/match · home advantage +0.324 log-units (~38%) · 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 |
|---|---|---|---|---|---|---|---|
| Deportivo Saprissa | 0.411 | 0.173 | 1705 | 1587 | 1.65 | 0.92 | 198 |
| LD Alajuelense | 0.269 | 0.371 | 1634 | 1685 | 1.43 | 0.76 | 190 |
| CS Herediano | 0.089 | 0.429 | 1545 | 1715 | 1.20 | 0.71 | 190 |
| CS Cartagines | 0.038 | 0.254 | 1519 | 1627 | 1.14 | 0.85 | 170 |
| Municipal Liberia | 0.005 | 0.170 | 1503 | 1585 | 1.10 | 0.93 | 128 |
| Puntarenas FC | -0.025 | -0.050 | 1488 | 1475 | 1.07 | 1.15 | 166 |
| Santos DE Guapiles | -0.027 | -0.123 | 1486 | 1438 | 1.07 | 1.24 | 126 |
| Perez Zeledon | -0.098 | -0.188 | 1451 | 1406 | 0.99 | 1.32 | 162 |
| Santa Ana | -0.103 | -0.230 | 1448 | 1385 | 0.99 | 1.38 | 44 |
| San Carlos | -0.112 | -0.080 | 1444 | 1460 | 0.98 | 1.19 | 166 |
| Municipal Grecia | -0.147 | -0.065 | 1426 | 1467 | 0.95 | 1.17 | 82 |
| Sporting San Jose | -0.198 | 0.151 | 1401 | 1575 | 0.90 | 0.94 | 162 |
| Guadalupe FC | -0.227 | -0.373 | 1387 | 1313 | 0.87 | 1.59 | 74 |
| AD Guanacasteca | -0.234 | -0.079 | 1383 | 1461 | 0.87 | 1.19 | 126 |
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 — Costa Rica - Primera Division (136)
Switch leagues with the tabs above the ratings table; newest match first.
| Date | Match | Score | P(over) | Actual | Call |
|---|---|---|---|---|---|
| 2026-09-19 | Perez Zeledon v Sporting San Jose | 1-2 | 68% | over | ✓ |
| 2026-09-14 | CS Cartagines v LD Alajuelense | 3-1 | 70% | over | ✓ |
| 2026-09-13 | Escorpiones Belén v CS Herediano | 0-2 | 67% | over | ✓ |
| 2026-09-13 | Sporting San Jose v Deportivo Saprissa | 4-2 | 71% | over | ✓ |
| 2026-09-12 | Perez Zeledon v San Carlos | 0-2 | 70% | over | ✓ |
| 2026-09-12 | Inter San Carlos v Puntarenas FC | 1-1 | 72% | over | ✓ |
| 2026-09-07 | San Carlos v Sporting San Jose | 1-0 | 64% | under | ✗ |
| 2026-09-06 | LD Alajuelense v Deportivo Saprissa | 0-2 | 76% | over | ✓ |
| 2026-09-06 | Puntarenas FC v CS Cartagines | 1-3 | 71% | over | ✓ |
| 2026-09-05 | Escorpiones Belén v Inter San Carlos | 0-2 | 71% | over | ✓ |
| 2026-09-05 | CS Herediano v Perez Zeledon | 2-3 | 67% | over | ✓ |
| 2026-08-31 | Deportivo Saprissa v Escorpiones Belén | 2-1 | 83% | over | ✓ |
| 2026-08-30 | Perez Zeledon v LD Alajuelense | 1-1 | 70% | over | ✓ |
| 2026-08-30 | CS Cartagines v CS Herediano | 1-0 | 68% | under | ✗ |
| 2026-08-30 | San Carlos v Puntarenas FC | 1-2 | 69% | over | ✓ |
| 2026-08-29 | Sporting San Jose v Inter San Carlos | 2-0 | 66% | over | ✓ |
| 2026-08-24 | LD Alajuelense v San Carlos | 0-1 | 76% | under | ✗ |
| 2026-08-23 | CS Herediano v Sporting San Jose | 0-3 | 61% | over | ✓ |
| 2026-08-23 | Inter San Carlos v Deportivo Saprissa | 1-0 | 79% | under | ✗ |
| 2026-08-22 | Puntarenas FC v Perez Zeledon | 1-0 | 73% | under | ✗ |
| 2026-08-22 | Escorpiones Belén v CS Cartagines | 1-4 | 69% | over | ✓ |
| 2026-08-18 | Sporting San Jose v Escorpiones Belén | 2-0 | 66% | over | ✓ |
| 2026-08-16 | Deportivo Saprissa v CS Cartagines | 3-2 | 77% | over | ✓ |
| 2026-08-16 | Perez Zeledon v Inter San Carlos | 0-1 | 74% | under | ✗ |
| 2026-08-15 | San Carlos v CS Herediano | 1-0 | 66% | under | ✗ |
| 2026-08-15 | LD Alajuelense v Puntarenas FC | 2-1 | 76% | over | ✓ |
| 2026-08-10 | CS Herediano v LD Alajuelense | 0-3 | 65% | over | ✓ |
| 2026-08-09 | Escorpiones Belén v Perez Zeledon | 0-0 | 77% | under | ✗ |
| 2026-08-09 | Puntarenas FC v Deportivo Saprissa | 0-2 | 79% | over | ✓ |
| 2026-08-09 | Inter San Carlos v San Carlos | 2-0 | 74% | over | ✓ |
| 2026-08-08 | CS Cartagines v Sporting San Jose | 2-1 | 64% | over | ✓ |
| 2026-08-04 | Perez Zeledon v CS Cartagines | 1-0 | 74% | under | ✗ |
| 2026-08-03 | Inter San Carlos v CS Herediano | 1-1 | 67% | over | ✓ |
| 2026-08-02 | LD Alajuelense v Escorpiones Belén | 2-1 | 74% | over | ✓ |
| 2026-08-02 | Deportivo Saprissa v San Carlos | 2-1 | 83% | over | ✓ |
| 2026-08-01 | Puntarenas FC v Sporting San Jose | 1-1 | 67% | over | ✓ |
| 2026-07-26 | Sporting San Jose v LD Alajuelense | 1-1 | 65% | over | ✓ |
| 2026-07-25 | Deportivo Saprissa v Perez Zeledon | 5-1 | 83% | over | ✓ |
| 2026-07-25 | CS Cartagines v Inter San Carlos | 3-1 | 71% | over | ✓ |
| 2026-07-24 | CS Herediano v Puntarenas FC | 1-1 | 71% | over | ✓ |
| 2026-05-17 | CS Herediano v Deportivo Saprissa | 2-0 | 71% | over | ✓ |
| 2026-05-14 | Deportivo Saprissa v CS Herediano | 2-1 | 72% | over | ✓ |
| 2026-05-10 | CS Herediano v CS Cartagines | 0-0 | 63% | under | ✗ |
| 2026-05-10 | Deportivo Saprissa v Municipal Liberia | 2-0 | 79% | over | ✓ |
| 2026-05-03 | CS Cartagines v CS Herediano | 0-1 | 63% | under | ✗ |
| 2026-05-03 | Municipal Liberia v Deportivo Saprissa | 1-1 | 77% | over | ✓ |
| 2026-04-26 | CS Herediano v Sporting San Jose | 0-0 | 65% | under | ✗ |
| 2026-04-26 | Guadalupe FC v CS Cartagines | 0-5 | 71% | over | ✓ |
| 2026-04-26 | Municipal Liberia v LD Alajuelense | 2-1 | 66% | over | ✓ |
| 2026-04-26 | Puntarenas FC v Deportivo Saprissa | 1-3 | 79% | over | ✓ |
| 2026-04-25 | San Carlos v Perez Zeledon | 1-1 | 76% | over | ✓ |
| 2026-04-24 | LD Alajuelense v Puntarenas FC | 5-2 | 69% | over | ✓ |
| 2026-04-23 | Perez Zeledon v CS Herediano | 0-1 | 74% | under | ✗ |
| 2026-04-23 | Deportivo Saprissa v Guadalupe FC | 5-0 | 86% | over | ✓ |
| 2026-04-22 | Sporting San Jose v Municipal Liberia | 0-1 | 63% | under | ✗ |
| 2026-04-22 | CS Cartagines v San Carlos | 2-1 | 70% | over | ✓ |
| 2026-04-19 | Puntarenas FC v Sporting San Jose | 1-2 | 63% | over | ✓ |
| 2026-04-19 | CS Herediano v San Carlos | 1-0 | 76% | under | ✗ |
| 2026-04-19 | LD Alajuelense v Deportivo Saprissa | 1-1 | 75% | over | ✓ |
| 2026-04-18 | Municipal Liberia v CS Cartagines | 1-0 | 66% | under | ✗ |
| 2026-04-18 | Guadalupe FC v Perez Zeledon | 1-0 | 80% | under | ✗ |
| 2026-04-13 | San Carlos v Guadalupe FC | 4-0 | 75% | over | ✓ |
| 2026-04-12 | Perez Zeledon v Puntarenas FC | 3-3 | 70% | over | ✓ |
| 2026-04-12 | Sporting San Jose v LD Alajuelense | 0-2 | 60% | over | ✓ |
| 2026-04-12 | Deportivo Saprissa v Municipal Liberia | 1-2 | 80% | over | ✓ |
| 2026-04-11 | CS Cartagines v CS Herediano | 1-2 | 64% | over | ✓ |
| 2026-04-07 | Municipal Liberia v San Carlos | 5-1 | 67% | over | ✓ |
| 2026-04-06 | LD Alajuelense v Guadalupe FC | 1-1 | 80% | over | ✓ |
| 2026-04-05 | Deportivo Saprissa v Perez Zeledon | 4-0 | 85% | over | ✓ |
| 2026-04-05 | Puntarenas FC v CS Herediano | 0-1 | 65% | under | ✗ |
| 2026-04-03 | Sporting San Jose v CS Cartagines | 2-3 | 56% | over | ✓ |
| 2026-03-23 | San Carlos v Deportivo Saprissa | 1-3 | 74% | over | ✓ |
| 2026-03-22 | CS Herediano v LD Alajuelense | 2-1 | 64% | over | ✓ |
| 2026-03-22 | Perez Zeledon v CS Cartagines | 3-1 | 66% | over | ✓ |
| 2026-03-21 | Puntarenas FC v Municipal Liberia | 0-1 | 67% | under | ✗ |
| 2026-03-21 | Guadalupe FC v Sporting San Jose | 0-0 | 69% | under | ✗ |
| 2026-03-15 | Sporting San Jose v San Carlos | 1-0 | 64% | under | ✗ |
| 2026-03-15 | CS Herediano v Municipal Liberia | 1-2 | 70% | over | ✓ |
| 2026-03-15 | CS Cartagines v Deportivo Saprissa | 2-1 | 69% | over | ✓ |
| 2026-03-15 | Guadalupe FC v Puntarenas FC | 2-1 | 72% | over | ✓ |
| 2026-03-14 | LD Alajuelense v Perez Zeledon | 3-0 | 77% | over | ✓ |
| 2026-03-10 | Sporting San Jose v Perez Zeledon | 3-2 | 65% | over | ✓ |
| 2026-03-10 | Municipal Liberia v Guadalupe FC | 1-0 | 77% | under | ✗ |
| 2026-03-08 | San Carlos v LD Alajuelense | 0-2 | 65% | over | ✓ |
| 2026-03-08 | CS Cartagines v Puntarenas FC | 3-2 | 56% | over | ✓ |
| 2026-03-08 | Deportivo Saprissa v CS Herediano | 2-1 | 73% | over | ✓ |
| 2026-03-06 | Deportivo Saprissa v Sporting San Jose | 1-2 | 72% | over | ✓ |
| 2026-03-05 | Puntarenas FC v San Carlos | 0-0 | 69% | under | ✗ |
| 2026-03-05 | Guadalupe FC v CS Herediano | 0-2 | 76% | over | ✓ |
| 2026-03-04 | LD Alajuelense v CS Cartagines | 2-0 | 59% | over | ✓ |
| 2026-03-04 | Perez Zeledon v Municipal Liberia | 1-1 | 70% | over | ✓ |
| 2026-03-02 | Municipal Liberia v Sporting San Jose | 1-0 | 63% | under | ✗ |
| 2026-03-02 | San Carlos v CS Cartagines | 1-1 | 61% | over | ✓ |
| 2026-03-01 | Puntarenas FC v LD Alajuelense | 2-0 | 63% | over | ✓ |
| 2026-03-01 | CS Herediano v Perez Zeledon | 3-0 | 73% | over | ✓ |
| 2026-03-01 | Guadalupe FC v Deportivo Saprissa | 0-2 | 84% | over | ✓ |
| 2026-02-23 | San Carlos v CS Herediano | 1-0 | 70% | under | ✗ |
| 2026-02-22 | Sporting San Jose v Puntarenas FC | 1-2 | 58% | over | ✓ |
| 2026-02-22 | Deportivo Saprissa v LD Alajuelense | 2-1 | 72% | over | ✓ |
| 2026-02-22 | CS Cartagines v Municipal Liberia | 2-1 | 62% | over | ✓ |
| 2026-02-22 | Perez Zeledon v Guadalupe FC | 1-1 | 81% | over | ✓ |
| 2026-02-16 | LD Alajuelense v Sporting San Jose | 1-2 | 64% | over | ✓ |
| 2026-02-15 | CS Herediano v CS Cartagines | 1-0 | 61% | under | ✗ |
| 2026-02-15 | Municipal Liberia v Deportivo Saprissa | 0-1 | 77% | under | ✗ |
| 2026-02-14 | Puntarenas FC v Perez Zeledon | 1-0 | 71% | under | ✗ |
| 2026-02-14 | Guadalupe FC v San Carlos | 3-4 | 74% | over | ✓ |
| 2026-02-09 | Sporting San Jose v Guadalupe FC | 1-1 | 70% | over | ✓ |
| 2026-02-08 | LD Alajuelense v CS Herediano | 1-1 | 67% | over | ✓ |
| 2026-02-08 | CS Cartagines v Perez Zeledon | 1-0 | 68% | under | ✗ |
| 2026-02-08 | Deportivo Saprissa v San Carlos | 2-1 | 80% | over | ✓ |
| 2026-02-07 | Municipal Liberia v Puntarenas FC | 1-4 | 64% | over | ✓ |
| 2026-01-30 | CS Cartagines v Sporting San Jose | 0-2 | 57% | over | ✓ |
| 2026-01-29 | San Carlos v Municipal Liberia | 1-0 | 69% | under | ✗ |
| 2026-01-29 | CS Herediano v Puntarenas FC | 2-1 | 67% | over | ✓ |
| 2026-01-29 | Perez Zeledon v Deportivo Saprissa | 3-3 | 76% | over | ✓ |
| 2026-01-28 | Guadalupe FC v LD Alajuelense | 1-3 | 72% | over | ✓ |
| 2026-01-27 | Perez Zeledon v Sporting San Jose | 0-0 | 67% | under | ✗ |
| 2026-01-26 | Deportivo Saprissa v CS Cartagines | 0-0 | 71% | under | ✗ |
| 2026-01-25 | Puntarenas FC v Guadalupe FC | 0-0 | 76% | under | ✗ |
| 2026-01-25 | LD Alajuelense v San Carlos | 1-0 | 74% | under | ✗ |
| 2026-01-25 | Municipal Liberia v CS Herediano | 1-0 | 71% | under | ✗ |
| 2026-01-23 | Municipal Liberia v Perez Zeledon | 1-1 | 75% | over | ✓ |
| 2026-01-23 | Sporting San Jose v Deportivo Saprissa | 0-1 | 72% | under | ✗ |
| 2026-01-22 | San Carlos v Puntarenas FC | 1-0 | 68% | under | ✗ |
| 2026-01-22 | CS Cartagines v LD Alajuelense | 1-0 | 60% | under | ✗ |
| 2026-01-21 | CS Herediano v Guadalupe FC | 4-0 | 80% | over | ✓ |
| 2026-01-19 | Guadalupe FC v Municipal Liberia | 2-1 | 76% | over | ✓ |
| 2026-01-19 | San Carlos v Sporting San Jose | 3-0 | 65% | over | ✓ |
| 2026-01-18 | Puntarenas FC v CS Cartagines | 0-2 | 61% | over | ✓ |
| 2026-01-18 | CS Herediano v Deportivo Saprissa | 2-0 | 78% | over | ✓ |
| 2026-01-18 | Perez Zeledon v LD Alajuelense | 1-1 | 72% | over | ✓ |
| 2026-01-16 | LD Alajuelense v Municipal Liberia | 2-2 | 73% | over | ✓ |
| 2026-01-15 | Sporting San Jose v CS Herediano | 0-2 | 64% | over | ✓ |
| 2026-01-15 | CS Cartagines v Guadalupe FC | 2-1 | 74% | over | ✓ |
| 2026-01-14 | Deportivo Saprissa v Puntarenas FC | 2-2 | 77% | over | ✓ |
| 2026-01-13 | Perez Zeledon v San Carlos | 3-1 | 73% | over | ✓ |