In short

Both estimador.pt election forecasts are archived: the parliamentary election of 18 May 2025 (forecast of 16 May, with polls up to 15 May) and the 2026 presidential election (first round on 18 January, forecast of 16 January with polls up to 15 January; runoff on 8 February, forecast of 6 February). This page describes the models as they ran on those dates. No election is under way and there is no new forecast.

Both models are Bayesian: instead of a single result, they estimate a distribution of possible results, and the published figures (shares, intervals and probabilities) summarise thousands of simulations from that distribution. They were written in PyMC, a probabilistic programming library.


Parliamentary 2025

Model structure

The model combined polls with the results of previous parliamentary elections to estimate how support for each party moved over time. The national trend was the sum of three Gaussian processes (smooth curves whose shape the model learns from the data), each with its own time scale:

1. Underlying trend

  • Time scale: about 4 years
  • Captures structural change in the party system
  • Exponentiated quadratic kernel, the smoothest

2. Medium term

  • Time scale: about 1 year
  • Captures political cycles and gradual shifts in opinion
  • Matérn 5/2 kernel

3. Short term

  • Time scale: about 14 days
  • Captures campaign dynamics and reactions to events
  • Matérn 3/2 kernel, which allows faster changes

The sum of the three separates the long-term signal from short-term noise while still capturing real movement during the campaign. The three curves lived on a log-odds (logit) scale and were turned into shares that sum to 100% by a softmax transformation.

Technical details: Gaussian processes

A Gaussian process puts a prior distribution on functions instead of fixed parameters, and lets the model learn the shape of the trends from the data.

To keep the computation feasible we used the HSGP approximation (Hilbert space Gaussian process), which represents each curve as a series of basis functions, at a much lower cost and without significant loss of accuracy.

The covariance function of the underlying trend was:

k(t, t') = σ² × exp(-|t-t'|² / (2ℓ²))

Priors:

  • Time scale of the underlying trend: LogNormal(μ=log(1460), σ=0.3), centred on about 4 years
  • Time scale of the medium term: LogNormal(μ=log(365), σ=0.5), centred on about 1 year
  • Time scale of the short term: LogNormal(μ=log(14), σ=0.3), centred on about 14 days
  • Amplitude of each curve: HalfNormal(σ=0.2 to 0.3)

Pollster house effects

Each polling firm tends to overstate or understate certain parties systematically. The model estimated these deviations ("house effects") from all the polls and corrected for them when combining polls from several sources.

Each deviation was the product of two parts: a component that sums to zero across each firm's parties (if a firm overstates one party, it understates others) and a standard deviation of each party's own. Because of that multiplication, the deviations published in the page's table do not sum exactly to zero in each row.

The prior on that standard deviation was HalfNormal(σ=0.05) per party, on the logit scale. For a party on about 30% of the vote, a deviation of 0.05 on that scale is about 1 percentage point (the slope of the conversion is p × (1 − p), at most 0.25); for smaller parties, less.

Besides each firm's deviations, the model included an average deviation of all polls, per party: how much the polls, taken together, tended to overstate or understate each party against the results, learnt from the previous elections for which there were both polls and results. It also sums to zero across parties; the prior on its scale was HalfNormal(σ=0.1), on the logit scale. The page does not publish this deviation.

Differences between districts

Seats are allocated district by district. The model included a fixed difference between each district and the country, per party, estimated from the results of previous elections. Each difference followed a Normal centred on zero with a standard deviation of each party's own; the prior on that standard deviation was HalfNormal(σ=0.1), also on the logit scale. For a party on about 30% of the vote, 0.1 on that scale is about 2 percentage points.

Likelihood

Polls entered the model through a Dirichlet-Multinomial distribution, suited to shares that sum to 100%.

Technical details: Dirichlet-Multinomial

The Dirichlet-Multinomial has two parameters:

  • n: the poll's sample size
  • α: a concentration vector, proportional to each party's expected share

It has two sources of variation: sampling error (which depends on n) and extra variation, controlled by the concentration. This lets the model treat polls as samples that do not always behave like simple random samples.

Priors on the concentration:

  • Polls: Gamma(α=2, β=0.01), with a mean of about 200, which allows variation beyond sampling error
  • Election results: Gamma(α=100, β=0.1), with a mean of about 1000, a tighter fit to actual results

D'Hondt method and seat allocation

To go from votes to seats, we simulated the Portuguese electoral system:

  1. National territory: the 226 seats of the 20 constituencies of the national territory (18 mainland districts, the Azores and Madeira) allocated by the D'Hondt method, which divides each party's votes by 1, 2, 3, … and gives the seats to the largest quotients.
  2. Emigrants: the 4 seats of the Europe and Outside Europe constituencies came from the historical scenarios of 2019, 2022 and 2024; each model draw was combined with all three, so each scenario carries a third of the weight.
  3. Total: each simulation therefore added up to 230 seats.

The archived forecast has 9,000 simulations: 3,000 draws from the model, each combined with the three emigrant scenarios. In each draw:

  1. the estimated national shares for election day are taken;
  2. each district's differences are applied;
  3. the D'Hondt method is applied in each constituency of the national territory;
  4. each of the three emigrant scenarios is added and each party's seats are summed, which gives three simulations.

The result is a distribution of possible parliaments. The national and district uncertainty rests on the 3,000 draws; the emigrant scenarios only change the 4 emigrant seats.

What the page shows

From the simulations, the page publishes:

  • The probability of each party winning the most seats.
  • The probability of a majority (116 seats) for two blocs: AD + IL and PS + L + CDU + BE. These are arithmetic groupings of seats, not government forecasts. The page also publishes the share of simulations in which neither reaches 116 (over 99% in the archived forecast) and, as arithmetic only, the AD + CH sum (116 or more in over 99% of the simulations, by the same rounding rule as the probabilities; median 138).
  • Seats by party: the mean and 50% (P25–P75) and 80% (P10–P90) credible intervals.
  • Seats in play by district, with the ENSC (effective number of seat changes). For each party, it counts the share of simulations in which the party ends with a seat count different from its most frequent one in that district; the ENSC adds those shares across parties. An ENSC of 0 says every simulation gives the same allocation; above 0.8 (the threshold used), at least one seat changes party in a large share of the simulations, and the district counts as "in play". The +1 and −1 on the cards compare each party with its own most frequent count and also count two seats or more, so a district's gains and losses need not balance. Each card shows every party with a chance above 5% of gaining or losing a seat. Below the threshold a seat can still change party often: the page names the districts with an ENSC between 0.4 and 0.8.

Presidential 2026: first round

How did the presidential model differ?

The presidential model differed from the parliamentary one because:

  • candidates are people, not parties with a long history;
  • the system has two rounds (an absolute majority of valid votes is needed);
  • campaign dynamics matter more.

Support for each candidate followed a daily random walk on the logit scale: each day, the previous day's support plus a small change.

Technical details: random walk

The random walk is:

latent[t] = latent[t-1] + innovation[t]

where innovation[t] ~ ZeroSumNormal(σ) makes one candidate's gains match others' losses.

The daily standard deviation of the innovations (σ ≈ 0.05 in log-odds) was fixed, not estimated, to allow moves of about 5 percentage points over a 50-day campaign, as in The Economist's model: with few polls, volatility cannot be estimated reliably.

Candidate priors:

  • Starting point: a Normal centred on the historical support of each candidate's party (in logit)
  • Likelihood concentration: fixed at 60 for presidential polls

For candidates with a known party, the starting point came from that party's historical support, which steadied the estimates when there were few polls. The pollster effects estimated in the parliamentary model served as priors for the presidential model's. The presidential estimates of those effects came out very close to zero (all below 0.013 in absolute value on the model's scale), so the page does not show them; the model treated ICS and ICS/ISCTE, which are the same firm, as two.

Data and dates

  • Polls: 20 polls from 8 October 2025 to 15 January 2026, by Aximage, CESOP–Católica, Consulmark2, ICS/ISCTE, Intercampus and Pitagórica.
  • Archived forecast: run on 16 January 2026, for the election on 18 January. The model forecast declared voting intention only, about 65% of respondents; the roughly 35% undecided are not in the bands.

Who reaches the runoff

In each simulation of the forecast for election day:

  1. check whether any candidate passes 50% of the valid vote;
  2. if none does, record the top two.

The probability of each pair contesting the runoff is the share of simulations in which that pair takes the top two places; each candidate's chance of reaching the runoff is the sum of the pairs they appear in. The cards, the list of pairs and the vote-share bars all use the forecast for election day.

Presidential 2026: runoff

After the first round, on 18 January 2026, the runoff between António José Seguro and André Ventura was forecast with a model of its own. This is the forecast the archived page shows by default.

  • Inputs: the runoff polls available up to the forecast date, 6 February 2026, and a prior built from the first-round shares and a vote-transfer survey (ICS/ISCTE, January 2026), which estimates where each eliminated candidate's votes went.
  • Model: a daily random walk on a logistic scale over four responses: Seguro, Ventura, blank and void, and undecided. Abstention is removed from the polls before fitting.
  • Undecided: on election day, the undecided are split between the two candidates in proportion to their valid votes.
  • Blank and void: enter the model as a response of their own. That is why the page has two bases: the share of all ballots (blank and void included, in the bars and the trend chart) and the share of valid votes (without blank and void), which is the basis of the 50% majority and of the win probability.
  • Simulations: 8,000 daily trajectories, from 21 January to 8 February. The win probability is the share of simulations in which the candidate passes 50% of the valid vote on election day. With 8,000 simulations, values that round to 0% or 100% appear as "under 1%" and "over 99%".
  • Intervals: the cards and bars show 95% credible intervals (P2.5–P97.5) and the mean of the simulations; the trend chart shows 50% (P25–P75) and 90% (P5–P95) bands. The dot chart draws up to 800 of the 8,000 simulations, chosen at regular intervals, and marks the median; the medians and the table use all of them.

Uncertainty

The models built in several sources of uncertainty:

  • Polling error: the expected variation between polls and the actual result
  • Pollster effects: the uncertainty in each firm's estimated deviations and in the average deviation of all polls
  • Model uncertainty: the parameters of the curves and the other components
  • Campaign effects: late shifts the polls had not yet captured

How the pages show uncertainty

Uncertainty appears as credible intervals, probabilities ("70% chance that X wins the most seats") and distributions of simulations. An X% interval holds the value in X% of the model's simulations; it is not a poll's margin of error. Each chart says which interval it draws:

  • Parliamentary 2025: the trend estimated from the polls draws the 94% credible band (HDI) of the chosen parties, and the table has it for every party; the seats-by-party chart shows 50% (P25–P75) and 80% (P10–P90) intervals; the bloc chart draws individual simulations (up to 750 of the 9,000: one model draw in every twelve, with its three emigrant scenarios) and its table gives the P5 to P95 percentiles, computed over all 9,000.
  • Presidential 2026, first round: the trend chart shows 50% (P25–P75) and 90% (P5–P95) bands; the cards and the election-day forecast bars show 95% intervals (P2.5–P97.5).
  • Presidential 2026, runoff: see the runoff.

Evaluation

We have not published an evaluation of the election forecasts, and none is scheduled. The forecasts for the 2025 parliamentary and 2026 presidential elections are archived as published, with links to the official results, but without a calculated comparison against those results.

If one is published, it will measure the error of each estimate, whether the credible intervals contained the result as often as expected, and the score of the probabilities (log score). A single election is not enough to show that the probabilities are well calibrated.

The only evaluation published on the site is the football model's.


Data sources

Polls

  • Parliamentary 2025: Aximage, CESOP–Católica, Consulmark2, ICS/ISCTE/GfK Metris, Intercampus, Metris and Pitagórica, up to 15 May 2025
  • Presidential 2026, first round: Aximage, CESOP–Católica, Consulmark2, ICS/ISCTE, Intercampus and Pitagórica, up to 15 January 2026
  • Presidential 2026, runoff: the runoff polls published up to 6 February 2026 and the ICS/ISCTE vote-transfer survey (January 2026)

Election results

  • Comissão Nacional de Eleições (CNE, the national elections commission)
  • Secretaria-Geral do Ministério da Administração Interna (SGMAI, the Ministry of Internal Administration)

Limitations

  • Reliance on polls: the model corrected for the average deviation the polls showed in previous elections; if that deviation changes, or if polls carry systematic errors that the history does not reveal, the forecast inherits them.
  • Fixed district differences: the model had no district polls and assumed each district deviated from the country as in previous elections; a regional shift outside that pattern was not captured, and that assumption is what decides close seats such as Castelo Branco's.
  • Unforeseen events: scandals, crises or other events can change the picture quickly.
  • Historical patterns: the model assumes the past informs the future, which can fail in unprecedented situations.
  • Undecided voters: how people who have not decided will vote is hard to predict.

The forecasts should be read as probabilistic estimates, not certainties.


References

The methodology drew on: