Liga Portugal 2
Lighter model — Hierarchical Poisson (goals only)
This is not the Primeira Liga model. Liga 2 gives us goals and nothing else — no shots on target, no xG, no squad values — so what runs here is the base version: a hierarchical Poisson fitted to results alone.
The 2026-27 Liga 2 season has no matches in our data yet, so this page shows 2025-26, which is finished — and what this model would have been saying while it ran. As soon as the first matchdays land, the live table appears here in the same format.
Marítimo went up as champions on 66 points. The second slot came down to goal difference: Ac. Viseu and Torreense both finished on 59 points, and promotion went to the one with +25 against +13.
All 306 matches over 34 matchdays. Two up, two down.
| # | Club | J | W | D | L | DG | Pts |
|---|---|---|---|---|---|---|---|
| 1 | Marítimo | 34 | 20 | 6 | 8 | +21 | 66 |
| 2 | Ac. Viseu | 34 | 17 | 8 | 9 | +25 | 59 |
| 3 | Torreense | 34 | 18 | 5 | 11 | +13 | 59 |
| 4 | FC Porto BB | 34 | 15 | 6 | 13 | -1 | 51 |
| 5 | Vizela | 34 | 14 | 9 | 11 | -1 | 51 |
| 6 | U. Leiria | 34 | 13 | 11 | 10 | +6 | 50 |
| 7 | Leixões | 34 | 15 | 5 | 14 | -9 | 50 |
| 8 | Feirense | 34 | 12 | 10 | 12 | -3 | 46 |
| 9 | Desp. Chaves | 34 | 13 | 6 | 15 | +2 | 45 |
| 10 | Benfica BB | 34 | 11 | 11 | 12 | -1 | 44 |
| 11 | Felgueiras | 34 | 11 | 11 | 12 | -4 | 44 |
| 12 | Lourosa | 34 | 11 | 10 | 13 | -8 | 43 |
| 13 | Sporting BB | 34 | 13 | 3 | 18 | +7 | 42 |
| 14 | Penafiel | 34 | 11 | 8 | 15 | -2 | 41 |
| 15 | Farense | 34 | 10 | 10 | 14 | -6 | 40 |
| 16 | Portimonense | 34 | 11 | 7 | 16 | -10 | 40 |
| 17 | Paços de Ferreira | 34 | 9 | 12 | 13 | -14 | 39 |
| 18 | Oliveirense | 34 | 8 | 10 | 16 | -15 | 34 |
At matchday 9 the model gave Marítimo 16% and Ac. Viseu 6%. By matchday 25 those were 97% and 54%. That is how a race closes — slowly, and then all at once.
In green, the two clubs that actually went up. Each point is an independent refit that saw only the matches played up to that matchday.
Each block is an independent refit that saw only the matches played up to that matchday, followed by 50,000 simulations of the rest of the season. The last column shows where each club actually finished.
| Club | J | Pts | Final pts | 1st | Promotion | Relegation | Finished |
|---|---|---|---|---|---|---|---|
| Sporting BB | 9 | 19 | 58.4 ±8 | 36% | — | <1% | 13.º |
| Vizela | 9 | 16 | 55.9 ±7 | 21% | 40% | <1% | 5.º |
| Torreense | 9 | 17 | 52.2 ±7 | 8% | 19% | <1% | 3.º |
| U. Leiria | 9 | 15 | 51.4 ±7 | 7% | 17% | <1% | 6.º |
Marítimo | 9 | 14 | 51.3 ±7 | 7% | 16% | 1% | 1.º |
| Desp. Chaves | 9 | 14 | 51.1 ±7 | 7% | 17% | 1% | 9.º |
| Farense | 9 | 12 | 50.5 ±7 | 6% | 15% | 2% | 15.º |
| Felgueiras | 9 | 12 | 47.1 ±7 | 2% | 7% | 4% | 11.º |
Ac. Viseu | 9 | 12 | 46.5 ±7 | 2% | 6% | 4% | 2.º |
| Benfica BB | 9 | 10 | 43.8 ±7 | <1% | — | 9% | 10.º |
| Feirense | 9 | 11 | 43.0 ±7 | <1% | 2% | 11% | 8.º |
| Lourosa | 9 | 10 | 42.7 ±8 | <1% | 3% | 16% | 12.º |
| Portimonense | 9 | 11 | 40.4 ±7 | <1% | <1% | 23% | 16.º |
| Leixões | 9 | 10 | 40.2 ±7 | <1% | <1% | 22% | 7.º |
| Paços de Ferreira | 9 | 8 | 40.2 ±7 | <1% | <1% | 21% | 17.º |
| Penafiel | 9 | 9 | 39.6 ±7 | <1% | <1% | 23% | 14.º |
| Oliveirense | 9 | 11 | 39.1 ±7 | <1% | <1% | 26% | 18.º |
| FC Porto BB | 9 | 5 | 37.3 ±7 | <1% | — | 36% | 4.º |
| Club | J | Pts | Final pts | 1st | Promotion | Relegation | Finished |
|---|---|---|---|---|---|---|---|
Marítimo | 17 | 36 | 61.9 ±6 | 60% | 80% | — | 1.º |
| Sporting BB | 17 | 29 | 55.5 ±6 | 17% | — | <1% | 13.º |
Ac. Viseu | 17 | 29 | 53.5 ±6 | 9% | 25% | <1% | 2.º |
| Vizela | 17 | 25 | 51.7 ±6 | 5% | 16% | <1% | 5.º |
| Desp. Chaves | 17 | 26 | 50.7 ±6 | 4% | 12% | <1% | 9.º |
| U. Leiria | 17 | 25 | 49.9 ±6 | 3% | 9% | <1% | 6.º |
| Lourosa | 17 | 24 | 47.0 ±6 | 1% | 5% | 3% | 12.º |
| Torreense | 17 | 23 | 46.7 ±6 | <1% | 3% | 3% | 3.º |
| Felgueiras | 17 | 23 | 46.3 ±6 | <1% | 3% | 3% | 11.º |
| Benfica BB | 17 | 22 | 45.6 ±6 | <1% | — | 4% | 10.º |
| Farense | 17 | 20 | 45.5 ±6 | <1% | 2% | 5% | 15.º |
| Feirense | 17 | 21 | 43.2 ±5 | <1% | <1% | 9% | 8.º |
| FC Porto BB | 17 | 21 | 43.1 ±6 | <1% | — | 10% | 4.º |
| Paços de Ferreira | 17 | 19 | 40.7 ±6 | <1% | <1% | 20% | 17.º |
| Penafiel | 17 | 19 | 40.3 ±5 | <1% | <1% | 20% | 14.º |
| Portimonense | 17 | 19 | 38.8 ±6 | <1% | <1% | 32% | 16.º |
| Oliveirense | 17 | 18 | 36.9 ±5 | <1% | <1% | 43% | 18.º |
| Leixões | 17 | 17 | 36.8 ±5 | — | <1% | 47% | 7.º |
| Club | J | Pts | Final pts | 1st | Promotion | Relegation | Finished |
|---|---|---|---|---|---|---|---|
Marítimo | 25 | 50 | 64.4 ±4 | 85% | 97% | — | 1.º |
Ac. Viseu | 25 | 44 | 57.1 ±4 | 10% | 54% | — | 2.º |
| U. Leiria | 25 | 41 | 54.1 ±4 | 3% | 19% | — | 6.º |
| Torreense | 25 | 39 | 51.9 ±4 | <1% | 7% | — | 3.º |
| Vizela | 25 | 38 | 51.6 ±4 | <1% | 8% | — | 5.º |
| Sporting BB | 25 | 38 | 51.4 ±4 | <1% | — | — | 13.º |
| FC Porto BB | 25 | 37 | 49.8 ±4 | <1% | — | <1% | 4.º |
| Lourosa | 25 | 37 | 49.3 ±4 | <1% | 3% | <1% | 12.º |
| Benfica BB | 25 | 34 | 46.3 ±4 | <1% | — | <1% | 10.º |
| Desp. Chaves | 25 | 33 | 46.0 ±4 | <1% | <1% | <1% | 9.º |
| Feirense | 25 | 32 | 43.6 ±4 | — | <1% | 3% | 8.º |
| Leixões | 25 | 31 | 41.9 ±4 | — | <1% | 9% | 7.º |
| Felgueiras | 25 | 29 | 41.1 ±4 | — | <1% | 11% | 11.º |
| Farense | 25 | 28 | 41.0 ±4 | — | — | 12% | 15.º |
| Penafiel | 25 | 29 | 39.7 ±4 | — | — | 15% | 14.º |
| Paços de Ferreira | 25 | 27 | 38.3 ±4 | — | — | 33% | 17.º |
| Oliveirense | 25 | 26 | 36.3 ±4 | — | — | 51% | 18.º |
| Portimonense | 25 | 24 | 34.6 ±4 | — | — | 66% | 16.º |
Attack and defence estimated from the season's 306 matches, with opponent and home advantage already taken out. It is the model's read on the whole season, not on end-of-season form.
Ac. Viseu
MarítimoOffsets from the league average, on the model's log scale. Bars to the right are better: more goals scored in attack, fewer conceded in defence.
The part worth reading before trusting a number. Written by the data exporter itself, not by hand.
Hierarchical Poisson model (Baio & Blangiardo, 2010) with per-club attack and defence, a shared home advantage and a sum-to-zero constraint, fitted by MCMC. Promotion is defined as finishing in the top two, relegation as the bottom two. B teams play but cannot go up, and the slot passing to the next eligible club is not simulated. Season fit diagnostics: max r̂ 1, min ESS 8171.