Liga Portugal

Liga Portugal 2

Liga 2 in probabilities

Lighter modelHierarchical 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.

1,836
Liga 2 matches in the model, across 6 seasons
50,000
seasons simulated for each forecast
2
promotion slots to the Primeira
2
clubs relegated to Liga 3

Final table2025-26

All 306 matches over 34 matchdays. Two up, two down.

#ClubJWDLDGPts
1Marítimo342068+2166
2Ac. Viseu341789+2559
3Torreense3418511+1359
4FC Porto BB3415613-151
5Vizela3414911-151
6U. Leiria34131110+650
7Leixões3415514-950
8Feirense34121012-346
9Desp. Chaves3413615+245
10Benfica BB34111112-144
11Felgueiras34111112-444
12Lourosa34111013-843
13Sporting BB3413318+742
14Penafiel3411815-241
15Farense34101014-640
16Portimonense3411716-1040
17Paços de Ferreira3491213-1439
18Oliveirense3481016-1534
Promoted to the PrimeiraRelegated to Liga 3BReserve side, cannot be promoted

The promotion race, from the inside

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.

0%25%50%75%100%MD9MD17MD25Marítimo 97%Ac. Viseu 54%Vizela 8%Torreense 7%U. Leiria 19%Desp. Chaves 0%

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.

The probabilistic table, matchday by 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.

Matchday 9

81 matches seen, 225 simulated
ClubJPtsFinal pts1stPromotionRelegationFinished
Sporting BB91958.4 ±836%<1%13
Vizela91655.9 ±721%40%<1%5
Torreense91752.2 ±78%19%<1%3
U. Leiria91551.4 ±77%17%<1%6
Marítimo91451.3 ±77%16%1%1
Desp. Chaves91451.1 ±77%17%1%9
Farense91250.5 ±76%15%2%15
Felgueiras91247.1 ±72%7%4%11
Ac. Viseu91246.5 ±72%6%4%2
Benfica BB91043.8 ±7<1%9%10
Feirense91143.0 ±7<1%2%11%8
Lourosa91042.7 ±8<1%3%16%12
Portimonense91140.4 ±7<1%<1%23%16
Leixões91040.2 ±7<1%<1%22%7
Paços de Ferreira9840.2 ±7<1%<1%21%17
Penafiel9939.6 ±7<1%<1%23%14
Oliveirense91139.1 ±7<1%<1%26%18
FC Porto BB9537.3 ±7<1%36%4

Matchday 17

153 matches seen, 153 simulated
ClubJPtsFinal pts1stPromotionRelegationFinished
Marítimo173661.9 ±660%80%1
Sporting BB172955.5 ±617%<1%13
Ac. Viseu172953.5 ±69%25%<1%2
Vizela172551.7 ±65%16%<1%5
Desp. Chaves172650.7 ±64%12%<1%9
U. Leiria172549.9 ±63%9%<1%6
Lourosa172447.0 ±61%5%3%12
Torreense172346.7 ±6<1%3%3%3
Felgueiras172346.3 ±6<1%3%3%11
Benfica BB172245.6 ±6<1%4%10
Farense172045.5 ±6<1%2%5%15
Feirense172143.2 ±5<1%<1%9%8
FC Porto BB172143.1 ±6<1%10%4
Paços de Ferreira171940.7 ±6<1%<1%20%17
Penafiel171940.3 ±5<1%<1%20%14
Portimonense171938.8 ±6<1%<1%32%16
Oliveirense171836.9 ±5<1%<1%43%18
Leixões171736.8 ±5<1%47%7

Matchday 25

225 matches seen, 81 simulated
ClubJPtsFinal pts1stPromotionRelegationFinished
Marítimo255064.4 ±485%97%1
Ac. Viseu254457.1 ±410%54%2
U. Leiria254154.1 ±43%19%6
Torreense253951.9 ±4<1%7%3
Vizela253851.6 ±4<1%8%5
Sporting BB253851.4 ±4<1%13
FC Porto BB253749.8 ±4<1%<1%4
Lourosa253749.3 ±4<1%3%<1%12
Benfica BB253446.3 ±4<1%<1%10
Desp. Chaves253346.0 ±4<1%<1%<1%9
Feirense253243.6 ±4<1%3%8
Leixões253141.9 ±4<1%9%7
Felgueiras252941.1 ±4<1%11%11
Farense252841.0 ±412%15
Penafiel252939.7 ±415%14
Paços de Ferreira252738.3 ±433%17
Oliveirense252636.3 ±451%18
Portimonense252434.6 ±466%16

Who was actually good

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.

ClubAttackDefence
Ac. Viseu
Marítimo
Torreense
Sporting BB
U. Leiria
Desp. Chaves
Vizela
FC Porto BB
Benfica BB
Penafiel
Feirense
Felgueiras
Farense
Lourosa
Leixões
Portimonense
Paços de Ferreira
Oliveirense

Offsets 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.

What this model does not have

The part worth reading before trusting a number. Written by the data exporter itself, not by hand.

  • This is a lighter model than the Primeira Liga one. It uses goals only: no shots on target, no xG and no squad market values, because we do not hold that data for Liga 2.
  • Without xG there are no expected points and no luck index — the two columns that separate merit from result in the Primeira pages.
  • The fit pools recent seasons with equal weight and no time decay. A club that changed squad heavily gets the average of its recent years rather than its current form.
  • B teams (Benfica B, FC Porto B, Sporting CP B) play but cannot be promoted. Their promotion probability is shown as “—”; the slot passing to the next eligible club is not simulated, so everyone else's promotion odds are slightly understated.
  • Clubs just promoted from Liga 3 arrive with no history in this dataset. The hierarchical prior starts them at the league average, which is prudent but uninformative.
  • Both teams' goals are treated as independent (plain Poisson), with no Dixon-Coles low-score correction and no shared component.
  • The 2025-26 season is over. The probabilities shown come from refits that saw only matches played up to each checkpoint — no later result entered the fit — but they are a retrospective exercise, not a forecast published at the time.

Technical notes

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.