Does the Press Anticipate the Vote? We Measured It Across Three Campaigns: It Tracks the Polls, but Does Not See What They Miss
Every day we publish the momentum: the tone of the coverage each party receives in the Spanish press. The obvious question is whether it helps anticipate the result. To answer it, we rebuilt, with the same methodology, the daily momentum of the April 2019, November 2019 and July 2023 campaigns: 168 days and about 37,000 stories. The answer has two parts. Measured raw, momentum does not lead the polls or predict the winner: it favors challenger parties. Measured relative to each party's own average, it tracks well where the polls are heading in the final two weeks, in all three elections. But it did not see any of the final polling misses, including the PSOE's in 2023.
Momentum is an index from −100 to +100 that summarizes whether each day’s coverage helps or hurts each party. A language model classifies every news story with the same rubric for all parties: what effect it has on the party’s ability to mobilize or retain its voters. Each story is classified twice and only counts if both classifications agree on the sign. Stories repeated by several outlets count as a single story, and the index accumulates days with a half-life of four days. It is not vote intention and it does not feed into our forecast.
We have been publishing it since October 19. With fifteen days of data, there is no way to know whether it anticipates anything. So we went backward: we downloaded the news from the 56 days before each of the last three general elections, classified it the same way and computed momentum with the same parameters. Then we compared it with what the polls did and with the result.
How the press saw the 2023 campaign
Daily momentum in the 2023 campaignFrom −100 (very unfavorable coverage) to +100 (very favorable). The 56 days before July 23, 2023. Stories from Spanish outlets (NewsAPI.ai), classified with the same rubric as the daily momentum on this site.Daily momentum in the November 2019 campaignThe 56 days before November 10, 2019.
Two features repeat in all three campaigns. Challenger parties, such as Vox, Unidas Podemos, Sumar or ERC, receive more favorable coverage than the two big parties. And parties that govern or aspire to govern receive more critical coverage, probably because they are scrutinized more. In November 2019, Ciudadanos had the worst momentum of the six parties, averaging −48, and that was the election in which it fell from 15.9% to 6.8%.
Measured raw, it anticipates nothing
What momentum says about the polls and the resultCorrelation × 100 (from −100 to 100; 0 = no relationship). Gray: raw momentum. Black and ochre: momentum relative to each party's campaign average. Three campaigns, 16 parties.
Level: does it lead the polling average by a week?
correlation+14.0
Level: does it follow the previous two weeks' average?
correlation+18.0
Level: does it predict the same pollster's next poll?
correlation−5.0
Relative, last two weeks: poll movement
correlation+67.0
Relative, last two weeks: movement to the result
correlation+50.0
Relative, last two weeks: final polling miss
correlation+8.0
Relative, last week: poll movement
correlation+40.0
It does not lead the polls. The correlation between a day’s momentum and how the polling average moves the following week is 0.14, with an interval that includes zero. With the next poll from the same pollster, it is −0.05: nothing.
It lags slightly. The correlation with how the polls moved in the previous two weeks is somewhat higher, 0.18. The press reflects, with some delay, what the polls already measure.
It does not predict the winner. In none of the three elections was the party with the most momentum in the final two weeks the one with the most votes. Unidas Podemos had it in April 2019, Vox in November and Sumar in 2023. The PSOE won both 2019 elections with neutral or negative momentum.
Measured relative to each party, it tracks well
Raw momentum mixes two things: how a party’s coverage changes and what its starting coverage is like. If we subtract each party’s own campaign average, only the change remains: whether in the final two weeks the press treats it better or worse than before. Measured this way, the result changes.
It follows the movement of the polls. In the final two weeks, the parties whose momentum improves relative to their average are the ones rising in the polls over those same weeks. The correlation is 0.67 across the three campaigns together and repeats in each one: 0.71 in April 2019, 0.49 in November and 0.80 in 2023. The probability that this is chance is 1.5%.
With the total movement up to the result, somewhat less. 0.50, with a probability of chance of 8%.
It does not see the polling misses. With the difference between the result and the last polling average, the correlation is 0.08: nothing. What the polls missed, the press missed too.
In the final week, everything weakens. 0.40 against the movement of the polls, not significant with three elections.
The final two weeks, party by partyBlack: momentum of the last 14 days minus the average of the previous 42, divided by 10. Color: result minus the polling average from two weeks earlier, in points.
PP · April 2019
Momentum vs its campaign average (÷10)+0.7
Movement from the polling average to the result (points)−3.5
PSOE · April 2019
Momentum vs its campaign average (÷10)+1.0
Movement from the polling average to the result (points)−0.8
Vox · April 2019
Momentum vs its campaign average (÷10)+3.4
Movement from the polling average to the result (points)−0.3
Unidas Podemos · April 2019
Momentum vs its campaign average (÷10)+4.5
Movement from the polling average to the result (points)+1.1
Ciudadanos · April 2019
Momentum vs its campaign average (÷10)+3.9
Movement from the polling average to the result (points)+1.0
ERC · April 2019
Momentum vs its campaign average (÷10)−1.2
Movement from the polling average to the result (points)+0.8
PP · November 2019
Momentum vs its campaign average (÷10)+2.3
Movement from the polling average to the result (points)−0.3
PSOE · November 2019
Momentum vs its campaign average (÷10)+1.0
Movement from the polling average to the result (points)+0.7
Vox · November 2019
Momentum vs its campaign average (÷10)+4.3
Movement from the polling average to the result (points)+2.5
Unidas Podemos · November 2019
Momentum vs its campaign average (÷10)+6.8
Movement from the polling average to the result (points)+0.4
Ciudadanos · November 2019
Momentum vs its campaign average (÷10)+1.9
Movement from the polling average to the result (points)−2.5
ERC · November 2019
Momentum vs its campaign average (÷10)+0.3
Movement from the polling average to the result (points)−0.2
PP · 2023
Momentum vs its campaign average (÷10)−0.3
Movement from the polling average to the result (points)−1.0
PSOE · 2023
Momentum vs its campaign average (÷10)+2.5
Movement from the polling average to the result (points)+3.6
Vox · 2023
Momentum vs its campaign average (÷10)−2.6
Movement from the polling average to the result (points)−0.9
Sumar · 2023
Momentum vs its campaign average (÷10)+4.3
Movement from the polling average to the result (points)−0.7
The clearest case is the PSOE in 2023. Its raw momentum was negative throughout the campaign. But in the final two weeks it improved 25 points relative to its own average, the second-largest gain, and ended up 3.6 points above the polling average from two weeks earlier. Measured in relative terms, it pointed in the right direction. The counterexample is Sumar that same year: its momentum improved even more, 43 points, and it fell seven tenths of a point.
What this means for 29N
Momentum is a thermometer, not a forecast. We do not incorporate it into the model: it does not lead the polls or see their errors. We will keep publishing it for what it is, the tone of the press about each party.
Its best use is the relative one. Whether a party improves or worsens relative to its own average is more informative than its level, which favors challenger parties over the two big ones. We will explain it that way on the momentum page.
Polls remain the best information. In none of the three campaigns did the press know something the polls did not.
How we calculated it
News. NewsAPI.ai (Event Registry): for each of the 56 days before each election and each party (PP, PSOE, Vox, Unidas Podemos or Sumar, Ciudadanos or Podemos), the 100 most relevant Spanish-language articles from Spanish outlets, with headline and the start of the text. About 300 distinct stories per day. The daily momentum on this site also uses RSS and Google News sources, so the reconstruction is similar, not identical.
Classification and momentum. The same rubric, the same language model (Claude Haiku 5.5), the same double classification and the same parameters as the site’s daily momentum (momentum_historico.py). 12,093 stories in 2023, 12,264 in November 2019 and 12,838 in April 2019.
Polls. Daily average from our aggregator with all private polls for each election (without the CIS), and changes between consecutive polls from the same pollster. Result: BOE (Spain’s official gazette).
Measures. Correlations with momentum and polls standardized within each party and election; intervals by resampling of parties. Relative momentum: average of the last 14 (or 7) days minus the average of the earlier days of the campaign. Rank correlations (Spearman) by election and their mean; probability of chance by permutation test within each election.
Limits. Three elections and 16 parties are few: the results rule out a strong lead, not a small one. The polling average is smoothed and also uses later polls, which is why we also check against consecutive polls from the same pollster.
Code.momentum_historico.py, descargar_newsapi_hist.py and analisis_momentum_hist.py, in the altnalysis repository.