Skip to content
Players

Liga Portugal

Borja Sainz

#23 for finishingof the 40 published
Porto·Forward

Scoring skill

Data to 25 Oct 2026 (2026-27 season in progress)

+0.18Goals per 90 minutes above replacement
0.00+0.06 to +0.32 · 90% credible interval+0.57
the other 39 players published on this metric

What the number means: if Borja Sainz plays 90 minutes at a neutral venue against an average Liga defence, the model expects 0.18 more goals than if that place were taken by a replacement-level player — the kind of signing any club can make for free. Goals are capped (winsorized) before the estimate, so one four-goal afternoon is not read as permanent skill.

The model puts 90% probability on the true value lying between 0.06 and 0.32. Fewer minutes, wider interval.

Attacking contribution

Seasons 2023-24 to 2026-27

+0.24goals and assists per 90 minutes above replacement

#20 of 40 published

0.00+0.10 to +0.40 · 90% credible interval+0.72
the other 39 players published on this metric

The same structure as the finishing metric, but adding goals and assists together. It sees what the goals-only metric could not: who creates.

Few minutes pull the estimate toward replacement level and widen the interval.

Minutes, matches and goals from 2023-24 to 2026-27 · Data to 25 Oct 2026 (2026-27 season in progress)

Minutes
1,874
Matches
39
Goals
9
Actual goals/90
0.43
xG skill per 90
0.27
P(above replacement)
>99%

Season by season

Goals go up and down; the skill estimate barely moves. That is by design: the model only admits a change in skill when the data demand one, and across this player's two Liga Portugal seasons they never have.

SeasonMinutesGoalsSkill (with margin)
2025-261,6035
+0.17
2026-272714
+0.19

There is no telling whether he improved

Not enough minutes to compare seasons: in 2026-27 he played 271 minutes (the minimum to compare is 450), so that season's estimate is almost all the model's starting point.

Latest recorded appearances

Data to 25 Oct 2026 (2026-27 season in progress)

  • 24 OctGil Vicenteaway72' · started1
  • 10 OctMarítimoaway35' · subno goals
  • 20 SepBenficahome21' · subno goals
  • 12 SepCasa Piaaway28' · sub1
  • 4 SepMoreirensehome15' · subno goals
  • 29 AugAc. Viseuaway30' · subno goals
  • 23 AugAroucahome14' · sub1
  • 15 AugRio Aveaway24' · sub1

Match-by-match data (SofaScore). The rating is the provider's, not the model's — the model only uses goals, minutes and opponent.

All player metricsPrevious: Vinícius Lopes (#22)Next: Oskar Pietuszewski (#24)Club page: Porto

Bayesian player model fitted on 31,272 individual appearances since 2023-24, with a 600-minute minimum to qualify. Club = current squad (2026-27); the season-by-season table shows where he played each season. The finishing and contribution data runs to 25 October 2026, with the 2026-27 season in progress: minutes, goals and recent appearances stop there until those models are refitted; contested possession, goalkeepers and defenders use the seasons their own files list.