Skip to content
Liga Portugal

Players

Liga Portugal players

One metric per dimension, each with its own interval, and no overall score: one number cannot compare a goalkeeper with a centre-forward.

Data to 10 Oct 2026 (2026-27 season in progress) for finishing and contribution; the other metrics state the seasons they cover.

Finishing

Goals per 90 minutes above a replacement-level player (SAR, skill above replacement), after adjusting for minutes, opponent and home advantage. Goals are capped before the estimate, so one four-goal afternoon is not read as permanent skill.

Caveat: this list orders forwards, not the whole league. The 40 published names are 36 forwards, 4 midfielders — it is a forwards metric, and should be read as one.

Goals/90 above replacement

Player
SAR
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

Show the full list (40)

40 players published, the first 10 in view. 600-minute minimum; fitted on 30,858 individual appearances since 2023-24. Data to 10 Oct 2026 (2026-27 season in progress).

Technical checks on the fit

max r̂ 1.030 · 0 divergences. R-hat compares the algorithm's chains: close to 1 means they agree. Zero divergences means the algorithm met no regions it could not explore. Together they say the fit converged; they do not say the model is right.

Attacking contribution

The same structure as the finishing metric, but with goals and assists together. It covers the midfielders and wingers who score little and create plenty — the players the goals-only metric could not see, by construction.

The “vs goals” column (on wide screens) shows how many places each player moves against the finishing list published above, with 40 names; “—” means he is not on that list. That is where the story is: who the goals-only number was underrating.

Contribution/90 above replacement

Player
value
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

Show the full list (40)

Bayesian estimate with shrinkage: few minutes pull the value toward replacement level and widen the interval. Seasons 2023-24–2026-27 · 30,858 observations · 745 players · 600-minute minimum. Data to 10 Oct 2026 (2026-27 season in progress).

Technical checks on the fit

max r̂ 1.010 · 0 divergences. R-hat compares the algorithm's chains: close to 1 means they agree. Zero divergences means the algorithm met no regions it could not explore. Together they say the fit converged; they do not say the model is right.

What this metric does not measure (7)
  • Ranks and intervals are posterior summaries from a hierarchical model with shrinkage: low-minute players are pulled toward the replacement level, so a high raw goals+assists total does not guarantee a high rating.
  • The interval is a 90% posterior interval on the metric, not a confidence interval on a count. Two players whose intervals overlap are not separated by this model.
  • Goalkeepers are not measured by this metric. It counts attacking contribution, and 49 of 53 goalkeepers in the sample have zero goals and zero assists, so they sit at the floor by construction. Shot-stopping needs its own model.
  • Defenders are only partially measured: the metric captures their attacking output (set-piece goals, assists) and says nothing about defending.
  • This is a full-sample fit and is descriptive, not predictive. Any predictive use must go through the walk-forward panel.
  • Goals+assists counts penalties and assists as recorded by SofaScore; secondary assists are not counted.
  • The distribution by position covers the whole fitted universe (2023-24 onwards, all players over the minutes cut), while the players list is the current-squad subset — the two are not the same population.

The distribution by position

The test this page exists to pass: if a whole position collapses onto practically one value, the metric is not measuring it. This covers the model's full universe, not only the players listed above.

Positionnmedianrangedistinct
Forward1770.1490.820140
Midfielder2580.0130.433153
Defender253−0.0780.13981
Goalkeepernot measured57−0.1460.0012

How to read it: adding assists fixes midfielders, who now spread across a real range. It does not fix defenders, and it does not fix goalkeepers at all — they still sit on practically one value, because they neither score nor assist. That is why those positions get their own sections instead of a row in this list.

Contested possession

The probability of winning a duel — aerial or on the ground — estimated over each player's career in the file's 4 seasons. It is the first metric on this page where defenders and midfielders genuinely separate from one another, because the outcome is attributed to the player who contested it, not to the whole team.

What this is not: a defensive rating. It measures contested possession — one narrow, honest dimension — and nothing else. Individual defensive contribution to goals conceded remains unmeasurable in this league, and no metric on this page pretends otherwise.

Values are career-pooled by necessity: a single season is not enough to separate players. A newly arrived signing cannot be rated for roughly two seasons. In defenders' aerial duels, the profile tag (higher or lower aerial involvement) distinguishes centre-backs from full-backs — compare within the same profile.

Aerial duels — defenders

29 of 139 fitted players separate from the positional average. With the duels shuffled among team-mates of the same club, season and position (a permutation test), 0.85 separate on average: that is chance. The list shows only players in the league this season.

P(win) vs positional average

Player
p.p.
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

Aerial duels — midfielders

16 of 78 fitted players separate from the positional average. With the duels shuffled among team-mates of the same club, season and position (a permutation test), 0.75 separate on average: that is chance. The list shows only players in the league this season.

P(win) vs positional average

Player
p.p.
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

Ground duels — defenders

19 of 120 fitted players separate from the positional average. With the duels shuffled among team-mates of the same club, season and position (a permutation test), 0.2 separate on average: that is chance. The list shows only players in the league this season.

P(win) vs positional average

Player
p.p.
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

Ground duels — midfielders

34 of 195 fitted players separate from the positional average. With the duels shuffled among team-mates of the same club, season and position (a permutation test), 0.45 separate on average: that is chance. The list shows only players in the league this season.

P(win) vs positional average

Player
p.p.
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

Seasons 2023-24–2026-27. Every cell passed three pre-registered gates: separability above 3× chance, club-quality correlation under 0.3, and stability across players who changed clubs. The league-average rate is exactly 50% by construction — every duel won is another player's duel lost.

Goalkeepers: three axes, published separately

There is no single goalkeeper score here, and that is deliberate: the three axes have season-to-season reliabilities ranging from 0.72 to below zero, and any average across them would manufacture precision. Each axis says one thing, with its own uncertainty.

Cross intervention

The share of crosses faced where the keeper comes for the ball — a punch or a claim. It is the first goalkeeper axis on this site where players genuinely separate: 11 of 50 in the fitted panel, against 4.7 that the nominal rate of a 90% interval (one in ten falls outside) would give by chance alone. And it belongs to the keeper, not the club: two keepers at the same club do not resemble each other (correlation −0.10). The list shows only keepers in the league this season.

We do not call this “command of the area”: the metric cannot tell a commanding catcher from a punch-happy keeper.

Caveat: within the sample the order holds (one half of the matches against the other: correlation 0.54), but not from one season to the next (correlation −0.11). Read the list as what happened in these seasons, not as a stable trait of each keeper.

Intervention vs league average

Player
p.p.
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

No keeper changed clubs between consecutive seasons with enough matches, so whether this trait travels with the player is still untested.

Sweeping (a style)

How often per 90 minutes the keeper leaves the box to cut out balls behind the defence. This is a style axis, not a quality one: about a third of its persistence comes from the club's defensive line height, not the keeper. A high value describes how they play, not how well.

Sweeps per 90 vs league average

Player
per 90
90% interval

90% interval: the model’s margin; the black tick is the estimate and the dashed line, zero.

Shot-stopping

0 of 50 keepers separate from the average over 4 seasons of shots (~153 per keeper). This is no longer a data shortage: the answer is still that Liga keepers' shot-stopping differences are real but too small to rank confidently. We publish the null rather than a list that would pretend to know.

Defenders

There is no defender ranking on this page, and that is the result — not a publishing failure.

The model tried to estimate how much each defender reduces the goals his team concedes, comparing what happens with and without him on the pitch. The problem is structural: centre-backs almost always play with the same partner, and the league is 34 matches long. The data do not contain enough information to separate a player from the man next to him.

What comes out of the model is mostly the club's defence, spread over whoever was on the pitch. Of the 786 players estimated, none passed the criterion set in advance — and it was set before anyone saw the result, precisely so there would be no temptation to loosen it afterwards.

Publishing the table anyway would be selling noise as a ranking. We would rather say we do not know.

Players estimated
786
Separable from team-mates
0
Separable
no
Pre-registered criterion
≥ 20 players with shrinkage ≥ 0.2 and a positive walk-forward log-score gain

12 of the 786 90% intervals exclude zero. The nominal rate of a 90% interval (one in ten falls outside by chance alone) would give 79; with this model's heavy shrinkage that benchmark overstates what chance would give, and the 12 do not point to defenders who separate from their team-mates either.

Technical checks on the fit

max r̂ 1.010 · 0 divergences.

Out-of-sample t
1.699
Median shrinkage
−0.022
Max shrinkage
0.134
Out-of-sample log-score gain
2.34
Passes shrinkage
no
Passes out of sample
yes

Adjusted plus-minus on goals conceded, with hierarchical shrinkage. Seasons 2023-24–2026-27 · 786 players · 450-minute minimum.

What this metric does not measure (10)
  • NO RANKING IS PUBLISHED. Individual players could not be separated from their team by the pre-registered criterion: >= 20 players with shrinkage >= 0.2 AND positive walk-forward log-score gain. Only 0 of 786 players had a posterior meaningfully narrower than the population prior.
  • Substitution timing is not in the source data. Exposure is minutes-weighted, so a substitute is credited with a fraction of the whole match rather than the specific minutes they were on the pitch.
  • One static effect per player across the whole panel: 34 matches a season is too thin for a per-season defensive effect.
  • Goals conceded is a team outcome. Every on-pitch player is in the model, not only defenders, because forwards pressing also matter.
  • Players below the minutes threshold are pooled into a single replacement bucket pinned at zero.
  • 27% of the spread in the point estimates is between clubs rather than between club-mates, and the ratings correlate at r=-0.51 with their club's goals conceded per match: what is being measured is mostly the club, with player names attached.
  • Averaged to club level the ratings reproduce club goals conceded at r=-0.985 across 23 clubs. The model is a club defence model that distributes its answer over whoever was on the pitch.
  • Collinearity retains only 11% of the information the line-ups nominally carry: summed over players the model resolves 11 effective parameters against 105 if every other effect were known. The most-used player in the panel, Diogo Costa (8822 minutes), reaches shrinkage 0.028 where 0.324 was attainable.
  • With the shared hierarchical mean removed, frequent team-mates have a median posterior correlation of -0.04 (players who never shared a pitch: -0.00); the data pins their combined effect better than the split between them.
  • Walk-forward (fit 2023-24+2024-25, score 2025-26): adding player effects changed the out-of-sample log score by +2.34 nats over 612 team-matches (t = +1.70).

Each metric has its own scale. Do not add, compare or average values across sections: a goalkeeper and a forward are not measured in the same unit, and ranking them together was exactly the mistake this page exists to correct.

How we measure players
What changed on this page (12 August 2026)

Until 12 August 2026 this site published a single player ranking. It measured goals per 90 minutes above a replacement player — a good metric, but a finishing one — and presented it as a league ranking. Checking the distribution by position made the problem obvious: every goalkeeper in the model received an identical value, because the model had nothing to say about them. It was not measuring them badly; it was not measuring them at all.

The fix was not a better number. It was admitting that several are needed, each with its own scale, its own credible interval and its own sample — and that comparing values across them is meaningless. A 0.20 in finishing and a 0.20 in goalkeeping are not the same thing.