How the model computes
Method
We start from the published first-round polls. Each one counts for more or less: the more recent and the larger the sample, the more it weighs. Each pollster also has its usual lean (the house effect), and we correct for it. Then we draw thousands of possible first rounds, with a margin of error set on past elections.
In each draw, the top two go through to the second round. For the head-to-head, we use second-round polls when there are some. When there are none, we transfer votes synthetically, and we say so.
The calculation runs every day and the result is kept. Before the site launched, the history is "reconstructed": we replayed the model giving it only the polls known on each date. Those days carry the label "reconstructed".
The interval next to P(win) runs from the lowest to the highest of the day's scenarios. It shows how much the result depends on the assumptions. It is not a confidence interval.
What else is on the site
Some parts of the site are not used to compute P(win). They are there to show, and they are marked as experimental.
The "opinion" layer (Experimental, outside P(win))
This layer follows each candidate's line day by day with a Kalman filter, in log-ratios, and corrects the gaps specific to each pollster. The press and GDELT (a worldwide press database) are context only: they do not enter the calculation.
Check on past elections (Experimental, outside P(win))
The "Validation" page replays the methods on five elections, from 2002 to 2022. First finding: a plain average of the last 14 days of polls does at least as well as the models. Second finding: the intervals of the opinion layer were far too narrow.
A calibration fixed the coverage, but did not beat the plain average on the CRPS score, under either bootstrap scheme. The v3 model does no better either. That is why the main figure, P(win), has not changed.
The polling blackout
Article 11 of law no. 77-808 bans publishing or commenting on a poll the day before and the day of each round. On those days, the pages built on polls return a 451 error instead of displaying.
The photos
The candidates' portraits come from Wikimedia Commons, under free licences. Authors and licences are credited.
Two ways of aggregating polls
The figures on this site come from the main scenario: the polls judged comparable, corrected for pollster bias. The "pooled" aggregation puts all published polls into a single batch, without selecting. Both methods are model estimates; the gap between them gives an idea of the uncertainty linked to this choice, it does not point to the right one.
How to read this table. Two columns: the probability of the main scenario, displayed throughout the site, and that of a "pooled" aggregation of polls, given here for comparison.
Learn more
The two methods treat polls from the same pollster, and their weight over time, differently. Their gap gives an idea of how sensitive the results are to method choices; neither is "the right one".
| Candidate | Main scenario | Pooled aggregation |
|---|---|---|
| Marine Le Pen | 76% | 74% |
| Raphaël Glucksmann | 8% | 7% |
| Gabriel Attal | 6% | 2% |
| Jean-Luc Mélenchon | 5% | 5% |
| Bruno Retailleau | 4% | 3% |
| Éric Zemmour | <1% | <1% |
| Marine Tondelier | <1% | <1% |
Why not 100%
168 days before the vote, polls have in the past been off by several points. The model replays the first round 20000 times applying this historical error, then simulates the second.
The calibration rests on two elections (2017, 2022): it is a sanity check, not a validation.
When no second-round poll exists for a match-up, the model simulates a synthetic transfer of votes: 21% of the main scenario's probability rests on it.
Retrospective on 2017 and 2022
Two elections, eight lines: enough to spot gross errors, not enough to claim the model is calibrated.
How to read this table. The table replays the model on past elections: for each year, the Brier score (the lower it is, the better the forecast matches the result), the coverage of the intervals and the probability the winner had.
Learn more
A test on a few elections does not prove a model will be right in 2027; it shows where it went wrong. The column of missing finalists flags cases where a candidate who reached the second round was not in the model's data.
| Election | Days before | Polls | Brier (win) | Brier (2nd round) | 80% coverage | Winner's P(win) | Missing finalists |
|---|---|---|---|---|---|---|---|
| 2017 | 180 | 4 | 0.114 | 0.148 | 6/6 | · | Macron |
| 2017 | 90 | 4 | 0.081 | 0.114 | 6/7 | 24% | · |
| 2017 | 30 | 21 | 0.035 | 0.072 | 7/8 | 54% | · |
| 2017 | 7 | 70 | 0.020 | 0.048 | 11/11 | 61% | · |
| 2022 | 180 | 7 | 0.020 | 0.037 | 8/11 | 48% | · |
| 2022 | 90 | 15 | 0.015 | 0.051 | 9/12 | 62% | · |
| 2022 | 30 | 34 | 0.007 | 0.040 | 9/12 | 73% | · |
| 2022 | 7 | 93 | 0.003 | 0.012 | 10/12 | 86% | · |