How the model works

The model estimates an attacking and a defensive strength for each club. It fits them to two signals from every match: goals scored and conceded, modelled jointly (a bivariate Poisson, which lets the two teams' goals in the same match be related), and shots on target, which say more about who dominated a match than a 1-0 scoreline does.

The data is the last four seasons of the Primeira Liga and Liga 2, together, so promoted clubs arrive with a record. Each match counts for less the older it is: a match from about 23 months ago is worth half of one played today. Each club's starting point is its squad value (Transfermarkt), measured season by season, so old results are read against the squad the club had at the time.

The model is refitted from scratch at every publication, with the matches played up to then. A publication does not always fall exactly at the end of a matchday: some already include games of the next one, or come out before all of their own are played, and the open data page says which.

The model behind the forecasts

Since matchday 1 of 2026-27 (August 2026), the forecasts come from the model described above. The 2026-27 pre-season forecast and the 2025-26 forecasts came from the previous model. Every forecast file says which model produced it; the two models' internal names are on the open data page.

The simulations

With the strengths estimated, we simulate every remaining match 50,000 times. Each simulation first draws plausible strengths for every club, within the model's uncertainty, and then the goals of each match, with home advantage. Each simulation produces a complete final table.

The probabilities we show come directly from these simulations. If a team finishes first in 51% of simulations, we say it has a 51% chance of winning the title: it is a count of how often each outcome happens. Final points come with a 90% range: the points total lands inside it in 90% of simulations.

Relegation means finishing 17th or 18th

On our pages, relegation means finishing 17th or 18th: going straight down to Liga 2. The 16th-placed club plays off against Liga 2's third and can go down too, but that place is not included in the relegation probability we show.

Calibration of the points ranges

A 90% range is only honest if, looking back, it catches the real result about 90% of the time. Over 9 past seasons, from 2017-18 to 2025-26 (162 team-seasons, each checked at 6 points in the season: 972 forecasts, which are not independent of one another), the 90% interval for final points contained the real total 89.3% of the time.

Leaders win the title more often than the model says

Read with care: in past seasons the model underrated teams leading by 3 or more points (it gave them 63% on average, and they won the title 82% of the time, leaving out two cases with a data error).

We checked what happens to the teams in front. Across the 2017-18 to 2025-26 seasons there were 19 evaluated moments (in 8 seasons) when a team led by 3 or more points. Two are from matchday one and come from a data error (rounds in which the same team appears twice), so we leave them out. In the other 17, the model gave the leader, on average, a 63% chance of winning the title; the leader won it 82% of the time. With the two faulty cases, the figures would be 56% and 74%.

In other words: the model tends to underrate the leader. The sample is small: 17 moments, which are not independent (the same season and the same leader count several times), so the effective sample is smaller still and the exact size of the gap is uncertain, but the direction holds. Nor do we know how to fix it yet: none of the alternatives tested passed our checks, so the published model has not changed. Some of those alternatives, which the checks cannot tell apart from the current model, would have given Porto between 57% and 62% in the 2026-27 matchday 7 forecast, instead of 51%.

Read the title probabilities as a probably conservative estimate for whoever is in front. Relegation probabilities have not been checked this way. (Internal assessment of 25 September 2026.)

Expected points (xPts)

Expected points come from each match's xG, from FotMob. For every match, both teams' xG is turned, with a Poisson distribution, into win, draw and loss probabilities, and from there into expected points: three times the win probability plus the draw probability. Summed over the season, they give each team's xPts.

xPts do not use the forecasting model: they are an independent read. The gap between real points and xPts mixes finishing, goalkeeping and chance, so it is not a clean split between luck and skill.

Other games that weigh, and the final duel

Club pages read one objective per club: the title from a 1% chance of winning it, else relegation from 1%. "Other games that weigh" lists other clubs' games, in the published round and postponed, whose result moves that objective by at least 3 percentage points, with the chance under each of the three results. Each figure is the probability in the simulations where that result happened: a conditional probability, not a new run of the model. Below 3 percentage points, the difference blends into the simulations' noise.

The final duel uses something else: 300 complete seasons drawn from the simulations. It counts who finishes with more points, and how many seasons end level on points. With that sample, a share such as 64% can be about 5 percentage points higher or lower, far more than the title probabilities computed from every simulation.

Decisive matches

To measure the weight of each match, we split the 50,000 simulations by that match's result (home win, draw, away win) and compare the title probability, or the relegation probability, in each group. We do not simulate the season again: it is the same count, made within each group. The matches where the gap between the best and worst result is largest are the most decisive. Because each simulation also draws the teams' strengths, splitting by the result mixes the effect of the points with what that result says about each club's strength: the gap is a conditional reading, not the isolated effect of winning. The same holds for what each result changes on the match and club pages.

Build your own scenario

On each club's page you can fix the result of any game it has left and read the title or relegation chance after each pick (a club fighting to stay up is always read by relegation). Games where winning or losing moves the chance at least 5 percentage points more than the club's typical remaining game are marked as decisive; when none stands out, the page says how much each game moves it. With one pick, the number is the conditional probability read from the simulations. With several, the picks are combined as if independent of one another: an approximation, because the published file holds each game's effect, not each combination of games.

How we measure players

The players page publishes several separate metrics, one per dimension of the game, because a goalkeeper and a forward cannot be measured with the same number. Each comes from its own Bayesian model, fitted to individual Liga appearances, with the seasons and minimum minutes its own file states:

  • Finishing (seasons 2023-24 to 2026-27, 600-minute minimum): goals per 90 minutes above a replacement-level player (SAR, skill above replacement), adjusted for minutes, opponent and home advantage. Each match's goals are capped before the estimate, so one four-goal afternoon is not read as permanent skill.
  • Attacking contribution (seasons 2023-24 to 2026-27, 600-minute minimum): the same calculation, with goals and assists together.
  • Contested possession (seasons 2023-24 to 2026-27): the probability of winning aerial and ground duels, for defenders and midfielders, pooled over the career in those seasons.
  • Goalkeepers (seasons 2023-24 to 2026-27): cross intervention and sweeping, published separately. Shot-stopping does not separate keepers from the average over these seasons, so it has no list.
  • Defenders (seasons 2023-24 to 2026-27, 450-minute minimum): an adjusted plus-minus on goals conceded, estimated but not ranked: none of the 786 players passed the pre-registered test for separating from their team-mates.

Each value comes with a 90% credible interval: the model puts a 90% probability on the true value lying inside it. With few minutes, the value is pulled toward replacement level and the interval widens. The page also shows each fit's technical checks (whether the algorithm converged); they sit in a separate box for anyone who wants them.

A player "separates" from the average when their 90% interval leaves out the positional average (for defenders, zero). Beside each count, the page says how many would separate by chance alone, and by which test: for contested possession, a permutation test (the same fit with the duels shuffled among team-mates of the same club, season and position); for goalkeepers and defenders, the nominal rate of a 90% interval, which leaves one value in ten outside. When the model shrinks the values hard, as it does for defenders, that rate overstates what chance would give.

The finishing and contribution data runs to 10 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.

What we have evaluated, and what not

  • Evaluated: the win, draw or loss forecast for each game of the next matchday, against the market's closing line, over past seasons. The result is on model vs market.
  • Evaluated: the 90% ranges for final points (section above).
  • Partly checked: the title probabilities of the team in front, which the model tends to underrate (section above).
  • Not evaluated: the relegation and top-three probabilities, the decisive matches, "Build your own scenario", the other games that weigh and the final duel.

The comparison with the market is not independent of the model's choice either: the current model was picked among variants backtested on those same seasons, which tends to favour it. The first clean test will be the 2026-27 season.

What is left out

The model gives each club one fixed strength for the rest of the season and does not use:

  • January transfers and other mid-season squad changes;
  • injuries, suspensions and starting line-ups;
  • fixture congestion and motivation;
  • managerial changes.

Forecasts are updated after every matchday. The files are on open data.