xgEdge

Liga Portugal table 2025/2026

  • Leader FC Porto 88 pts
  • Most above xPts FC Porto +15.13 against expected points
  • Most below xPts Tondela −11.08 against expected points

The same clubs ranked on expected points — what each club's match-by-match xG would be worth on average.

Liga Portugal 2025/2026 table ranked on expected points
# restore the table order Move sort descending Team P sort descending W sort descending D sort descending L sort descending GF sort descending GA sort descending GD sort descending Pts sort descending xG sort descending xGA sort descending xGD sort descending xPts sort descending Pts vs xPts sort descending
1 Up 1 place against the actual table SPO 34 25 7 2 89 24 +65 82 72.64 26.56 +46.08 74.21 +7.79
2 Down 1 place against the actual table FCP 34 28 4 2 66 18 +48 88 61.64 21.93 +39.71 72.87 +15.13
3 Same place as in the actual table BEN 34 23 11 0 74 25 +49 80 70.15 28.21 +41.94 72.59 +7.41
4 Same place as in the actual table SPO 34 16 11 7 64 36 +28 59 57.38 37.28 +20.10 59.68 −0.68
5 Same place as in the actual table FAM 34 15 11 8 42 29 +13 56 44.83 33.32 +11.51 55.81 +0.19
6 Same place as in the actual table GIL 34 13 11 10 47 38 +9 50 44.99 36.83 +8.16 51.57 −1.57
7 Up 4 places against the actual table FCA 34 10 9 15 35 52 −17 39 40.83 42.30 −1.47 46.70 −7.70
8 Up 4 places against the actual table SAN 34 9 9 16 32 41 −9 36 36.35 35.21 +1.14 46.31 −10.31
9 Down 1 place against the actual table VIT 34 12 6 16 39 51 −12 42 41.17 46.62 −5.45 44.20 −2.20
10 Up 4 places against the actual table CDN 34 9 7 18 37 45 −8 34 39.33 52.40 −13.07 39.17 −5.17
11 Up 6 places against the actual table TON 34 6 10 18 27 55 −28 28 37.19 50.44 −13.25 39.08 −11.08
12 Down 3 places against the actual table FCA 34 12 6 16 47 64 −17 42 34.20 51.79 −17.59 38.31 +3.69
13 Down 3 places against the actual table EST 34 10 9 15 54 57 −3 39 41.87 55.39 −13.52 38.07 +0.93
14 Up 2 places against the actual table CFE 34 6 12 16 38 56 −18 30 41.50 53.53 −12.03 38.01 −8.01
15 Down 2 places against the actual table RIO 34 8 12 14 35 57 −22 36 35.10 52.80 −17.70 36.33 −0.33
16 Down 9 places against the actual table MOR 34 12 7 15 37 49 −12 43 31.07 51.79 −20.72 33.03 +9.97
17 Down 2 places against the actual table CAS 36 7 13 16 33 57 −24 34 31.54* 55.08 −23.54 31.96 −1.96
18 Same place as in the actual table AVS 34 3 12 19 27 67 −40 21 32.19 62.49 −30.30 26.93 −5.93
19 Same place as in the actual table TOR 2 0 1 1 0 2 −2 1 — — — — —
  • More points than xPts
  • Fewer points than xPts

Ranked by xPts. ▲ / ▼ beside the rank shows how far a club sits above or below its place in the actual table.

  • xG is available for 34 of 36 matches for Casa Pia.
  • xG is available for 0 of 2 matches for Torreense.
  • For those clubs the expected columns count only the matches with xG, and Pts vs xPts sets their expected points against the points from those same matches.
How to read this table
xG
Expected goals: the summed chance quality of the shots a club took. A chance scored nine times in ten is worth 0.9.
xGA
Expected goals against: the same measure for the shots a club allowed.
xGD
xG minus xGA: how far a club's chances outweighed its opponents', or the other way round.
xPts
Expected points: the points a club's match-by-match xG would be worth on average. Each match's two xG figures become chances of a win, a draw and a loss, and a win is worth 3 and a draw 1.
Pts vs xPts
Actual points minus expected points based on match xG. Positive, drawn in green, is more points than the chances were worth on average; negative, in red, is fewer. It measures the gap and says nothing about its cause.
npxG
Non-penalty xG: xG with penalties removed, offered where the competition's figures support it. It changes xG, xGA and xGD; xPts is always worked out from all xG.

Expected points are read off the same score matrix that prices the board: each played match's two xG totals are taken as scoring rates, and the team's share is 3 × P(win) + 1 × P(draw), summed over the season. Understat arrives at the same figure by simulating each shot, which needs per-shot data, held here for %{competitions}. Passes per defensive action and deep completions are not shown because no source here ingests the event data behind them.

Learn how xgEdge calculates these figures →