What the polls and the markets missed
On the morning of Oct 25, the polls had Flávio Bolsonaro ahead by 1.8 points of margin and Polymarket paid 20% on a Lula victory. Lula won by 3.6 points. This analysis measures the error, looks for where it was hiding and tests two explanations for the comeback: a spontaneous mobilization of Lula's electorate after the first-round scare, and the campaign's shift to social media and to communities such as fan groups.
Daniel Pessini Sobreira · October 27, 2026 · 18 final polls and 13 from the first round, votes from 496,904 TSE polling stations with the electorate profile, social media and market data with a source for every number
- 18 of 18last polls from each pollster underestimated Lula, by 2.3 to 7.8 points of margin. Only 2 got the winner right.
- +6.3Mnet votes for Lula came from those who cast blank or null votes or did not vote in the first round, against 0.3M from the third way.
- 111 × 31Msocial media interactions between Oct 5 and 17 (Bites). Before the first round, it was 84 × 74.
All the polls missed in the same direction
Each dot below is the latest poll from one pollster, with fieldwork ending between Oct 20 and 24. The average had Flávio +1.8; the ballot box gave Lula +3.6. The gap, 5.3 points of margin (about 2.7 points on each candidate's vote), is not sampling noise: the standard error of the average of 18 polls with 2,000 to 15,000 interviews is under 1 point, and none of them erred in Lula's favor. Only Vox Brasil (+1.2) and Colectta had Lula ahead, and even they underestimated him.
Loading the chart…
Method saved no one. Phone polls (robocall or live interviewer) missed by 5.8 points on average; in-person polls, by 4.5; the two online ones, by 4.8. Datafolha, the reference pollster, ended at Flávio +1.1, and Quaest in the same place.
In the historical series, this has no precedent. From 2006 to 2022, the average poll error on the eve of the runoff never exceeded 1.2 points of margin, and the pollsters missed in both directions: in 2018 the average was right, but Vox missed by 10 points for Haddad and Paraná Pesquisas by 11 for Bolsonaro. In 2026 the average error was 5.3 points and all 18 pollsters missed in the same direction.
Loading the chart…
Bar: average margin error of the pollsters on the eve of the vote (positive = in favor of the left-wing candidate). Line: from the pollster that missed most in one direction to the one that missed most in the other. Source: Placar calibration base (2006 to 2022) and 2026 polls.
The first-round error was not the runoff error
In the first round the polls also missed, but in a different way. The average of the last 13 rounds almost nailed Lula's vote (44.5% of valid votes against 45.2% at the ballot box) and underestimated Flávio by 3.9 points. The difference came from the third way: Cury, Renan, Caiado and Zema added up to 12.3% in the polls and got 7.8% at the ballot box. It was last-minute tactical voting, and it went to Flávio.
Loading the chart…
Those who read the first round as proof that the polls "hide" the right-wing voter, as in 2018, expected the same in the runoff and discounted the polls in Flávio's favor. The markets did this, and Placar itself did so in part until Oct 22, when revision v56 stopped carrying the first-round error over to the runoff, after Tinoco's criticism. In the runoff there was no third way left to deflate, and the error changed sign: the polls gave Flávio 50.9% of valid votes, and he got 48.2%.
The polls moved toward Lula, and the odds barely moved
In the first week after the first round (fieldwork through Oct 9), Lula had 47.9% of valid votes on average. In the last (fieldwork from Oct 20), 49.1%. The line is the five-day moving average; the dot on the right is the ballot box.
Loading the chart…
The polls rose two points for Lula in two weeks and still stopped below the result. The movement was the rule: in 2014 and 2018, the candidate behind in the first runoff poll gained 6 to 10 points of margin by the eve. In 2026 Lula's improvement in the polls was about 2.3 points, and the ballot box showed another 5.3.
Lula's chance, at Placar and on Polymarket, stayed stuck between 12% and 25% the whole time. The market went from 36.5% on the morning of Oct 4 to 14.5% after the count and hit 10.5% on Oct 9. After that, even with the polls moving, Lula's contract spent 62% of the hours below 20 cents.
Loading the chart…
Where the votes the polls did not count were
Lula gained 10.38M votes between rounds and Flávio, 3.72M. The estimate of vote flows, made polling station by polling station in the analysis of the victory, shows where they came from. Hover over the bands.
Loading the chart…
Two pools decided the election, and the polls struggled with both:
- First-round blank and null votes. 6.0M voters cast blank or null ballots for president. An estimated 65% of them voted for Lula in the runoff and only 0.7% for Flávio: +3.83 million net votes for Lula, more than everything the third way gave Flávio. In the polls, this voter appears as blank, null or undecided and drops out of the count of valid votes. The comeback was largest precisely where they were most common: in polling stations with more blank and null votes in the first round, the margin moved +7.0 points; in those with fewer, +4.7.
- Those who did not vote. 33.5M voters were absent in the first round, the highest abstention in decades. In the runoff, turnout rose from 78.92% to 80.78%, +1.9 points. In 2014 and 2018 turnout fell from the first round to the runoff, and in 2022 it rose only 0.4 point. Among first-round absentees who voted in the runoff, Lula took about five votes for each one of Flávio's: +2.43 million net. Some polls (Palver and Ipespe, for example) weight by recalled first-round vote, and others filter for the "likely voter"; both pull the sample toward people who had already voted.
Loading the chart…
The error also had a place. In the last Datafolha with breakdowns (Oct 22), Lula's margin in the Southeast was −10.9; at the ballot box, −5.5, an error of 5.4 points in the region that holds 42% of the electorate. In the Northeast the error was 1.9; in the South, 2.3.
Loading the chart…
The first-round scare and the mobilization from below
The first hypothesis says that the Oct 4 result shocked Lula's electorate and woke an organic, autonomous mobilization, which was only partly organized when André Janones's WhatsApp channel grew. The timeline below brings together what could be dated, with a source for each item.
- Janones channelJanones creates the Exército do Lula (Lula's Army) channel on WhatsApp (~150 members). source
- FandomsFan clubs (BTS, Taylor Swift and others) go to the Planalto for the signing of decrees on ticket scalping and free water at events. source
- Ballot boxFirst round: Flávio 47.03% x Lula 45.16%; abstention of 21.08% (33.4M absent). source
- FandomsFan accounts offer their channels to Lula with #FandomsComLula (26 accounts listed by Mídia Ninja); Lula's team replies by DM on Oct 5 (Beyoncé Access 494,000; BTS Brasil ON 469,000). source
- Janones's channelExército do Lula has about 55,000 followers in the morning; at night, the invitation text is forwarded 344,000 times (55k). source
- Janones's channelExército do Lula reaches half a million at 7:19 a.m. and 1 million at 3:55 p.m. (TSE technical report) (1M). source
- Autonomous networkVolunteer network Vamos Virar o Jogo (unofficial) meets; WhatsApp groups 1 to 3 full by Oct 6. source
- Autonomous networkVira-Voto Brasil: Telegram channel and state groups, in-person vote-switching (thousands of volunteers). source
- CampaignLula meets with influencers and young deputies-elect; creators' room at the Brasília headquarters (video with 2.8M views in 2h). source
- Janones's channelA Lula video asks people to join Exército do Lula; the channel goes from 1.5M (12:32 a.m.) to 1.8M by morning (1.8M). source
- CampaignLula starts recording selfie videos (13 between Oct 7 and 9) and calls the campaign the least organized since 1989 (13 videos). source
- TSETSE auxiliary judge gives Meta 48h and orders records preserved (48h). source
- TSENunes Marques suspends Exército do Lula at Flávio's request; the inspector-general reverses it hours later (3.3M). source
- Autonomous networkPro-Lula rally on Av. Paulista (about 261,000 by area capacity) and rallies in more than 70 cities (261,000). source
- CampaignSidônio Palmeira leaves Secom on vacation to join the campaign; Rafael Fonteles coordinates communications. source
- TSENew 48h suspension of the channel for lack of registration (4.2M to 4.3M). source
- TSETSE injunction requires Meta to treat the candidates equally (upheld 7 x 0) (R$ 500,000 per day). source
- Janones channelExército do Lula reaches 5M; 8 pro-Lula hashtags among X's trending topics (5M). source
- Autonomous networkSearches for where to vote grow 510% since Oct 17 (baseline not reported) (+510%). source
- Janones channelExército do Lula passes 7M; Tropa do Flávio (Nikolas) has 2.1M (7.07M x 2.1M). source
- TSELula's campaign files an AIJE (electoral investigation action) against Flávio's ticket for algorithmic selectivity (1,121 reports of restriction). source
- Janones channelExército do Lula reaches 10M, the country's second-largest WhatsApp channel (10M). source
- Ballot boxRunoff: Lula 51.79% x Flávio 48.21%; turnout rises from 78.9% to 80.8%.
The order of events is consistent with the hypothesis. On the night of the first round and the day after, fan profiles offered their channels to Lula on their own, and volunteer networks with no formal tie to the campaign ("Vamos Virar o Jogo", "Vira-Voto Brasil") filled WhatsApp and Telegram groups. The "Exército do Lula" channel had existed since April and had about 55,000 followers on the morning of Oct 5. According to the TSE technical report on the channel, it reached half a million at 7:19 a.m. on Oct 6 and 1 million at 3:55 p.m. the same day, driven by an invitation text forwarded 344,000 times, before the video in which Lula asked people to join (Oct 7). It ended the campaign with 10.9M, five times Nikolas Ferreira's "Tropa do Flávio" (2.1M). The article The scare that mobilized tests this hypothesis in detail.
Loading the chart…
The votes also point in this direction. Turnout rose more in polling stations where Lula was strongest in the first round (+2.1 points, against +1.3 in those most favorable to Flávio), always comparing polling stations within the same city. And the polls moved in the first week: PoderData went from Flávio +5 on Oct 7 to +2 on Oct 12, before the channel passed 4 million.
What supports it
The mobilization existed and was immediate: fans, volunteer networks, Janones's channel (from 55,000 to 1 million followers in 33 hours) and rallies (about 261,000 people on Avenida Paulista on Oct 11, by occupied area). Turnout rose as it had not risen since at least 2014, and more in Lula-leaning polling stations.What does not support it
"Organic and then controlled" does not describe well what happened: the mass adhesion took place inside a structure that had been centralized since Oct 5 (the TSE describes it as "coordinated, centralized and synchronized"), personal to Janones and not to the campaign. It organized the energy from the start; it did not contain it afterward. There is no measure of the size of the spontaneous networks nor a causal study of the effect on the vote; the rise in turnout was small (1.9 points) and explains less of the comeback than blank and null votes.Social media, fandoms and the young voter
The second hypothesis says the campaign changed strategy after the first round and began speaking more through social media and to specific communities, such as fan groups. The change can be dated. On Oct 7 Lula met with content creators and young deputies-elect, the campaign set up a creators' room at headquarters and he began recording phone videos of simple production. On Oct 12 Sidônio Palmeira left Secom for the campaign. Lula had called his own campaign "the least organized" since 1989.
The effect on social media was immediate and large. Before the first round, interactions with the two candidates' profiles were near a tie. Afterward, Lula had three to four times as many. On Quaest's digital popularity index, Lula went from 9.3 points behind Flávio on Oct 4 to 6.5 points ahead on Oct 24.
Loading the chart…
This did not come from paid advertising. By Oct 22, Flávio had declared R$ 18.0 million in boosting to the TSE, against R$ 2.7 million for Lula. Lula's advantage was organic: his own profiles, allies and activists. On Flávio's side, the biggest engine was Nikolas Ferreira, who had more interactions than the candidate himself and a video about the Northeast with more than 150 million views. Today, Oct 27, the Instagram profiles look like this:
Loading the chart…
Instagram followers on Oct 27, 2026, read from the profiles themselves (Lula's with the exact number, the others rounded by Instagram). Profiles of much larger artists were left out of the chart, such as Anitta's (61 million), who declared her vote for Lula on Oct 9. Erika Hilton's profile could not be read at the address consulted; the press reported about 5.3 million followers on Oct 6. Each group's totals add up only the profiles in the chart.
If the digital strategy and the fandoms moved votes, the place to look is the young voter. In Datafolha, Lula's margin among voters aged 16 to 24 went from −7 on Oct 7 to +5 on Oct 22, the biggest change among all breakdowns. But the sample for this group is a few hundred interviews and the margin of error on a difference like that exceeds 10 points.
Loading the chart…
Polling-station results allow a firmer test. The TSE publishes the electorate profile of each polling station (age, education, sex), and within the same city the polling stations have very different compositions. Split into ten groups, from those with the fewest to those with the most voters aged 16 to 24, the comeback runs from +5.0 to +6.6 points. With all characteristics in the same model, one standard deviation more young people corresponds to +0.35 point of swing; the same deviation more of blank and null votes in the first round, to +0.51; and of voters with higher education, to −0.83.
Loading the chart…
Swing points (runoff margin − first-round margin), turnout points or Lula net votes per 100 voters, in each tenth of the 496,904 polling stations. Polling stations are ordered by the difference from their own municipality's average. The dashed line is the national average.
Young people swung more, but did not turn out more: in the tenth of polling stations with the most young people, turnout rose +0.9 point, below the average (+1.8). Where turnout grew most was in polling stations with older voters (+0.36 point per standard deviation). And Lula's biggest net gain did not come from the typical profile of social media and fandoms: it came from polling stations with less education and more blank and null votes in the first round (5.8 votes per 100 voters in the tenth with the least higher education, 2.1 in the one with the most).
What supports it
The change of strategy is dated (Oct 7 to 12) and the result on social media was clear: Lula went on to have three to four times Flávio's interactions, with no ad money. Young people were the group that moved most in Datafolha, and polling stations with more young people swung more, even within the same city.What does not support it
The approach to the fandoms came from the fans, not from a campaign plan. The effect of young people exists, but is small next to that of blank and null votes and education; there is no evidence that digital efforts brought young people to the polls. Social media show attention and engagement, not votes; part of that attention comes from people who already voted for Lula.The article The digital comeback tests this hypothesis and Meta's failures in detail, with the full series of reels, the connectivity of municipalities and the profile of the electorate by polling station.
The two hypotheses complete each other more than they compete. The energy arose from below, was channeled by a semi-autonomous channel and by a campaign that changed format, and the vote it brought came mostly from the voter who had chosen no one in the first round: those who cast null ballots, those who voted blank and those who stayed home.
Volume, reach and repercussion: the day-by-day contest on social media
The aggregate numbers from monitoring firms show who won social media, but not how. To see the dynamics, we read directly from Instagram, on Oct 27, every reel published since Sep 28 by the two candidates and by the two allies who mobilized each side the most, André Janones and Nikolas Ferreira: 545 videos, with the views, likes and comments of each. The date of each video comes from the post's own code.
Loading the chart…
In the week before the first round, Lula's reels added up to 45.1 million views a day, and Flávio's to 40.1 million: a tie. Between Oct 5 and 25, Lula posted 244 reels and rose to 117.7 million a day (2.47 billion over the period), 2.6 times the earlier pace. Flávio stayed where he was: 43.0 million a day across 73 reels. Lula's peaks match the campaign's milestones: the phone videos of Oct 7 (25.3 million likes combined that day, the record for the period), the Band debate (Oct 18) and the final stretch (Oct 22 and 23, more than 200 million views a day).
On Flávio's side, the reach sat in another profile. Nikolas Ferreira published only 31 reels in the period and amassed 1.79 billion views, 58 million per video, almost double everything the candidate himself got. Combined, Lula and Janones drew 3.21 billion views; Flávio and Nikolas, 2.69 billion. The real difference was in the conversation: Lula's reels drew 36.2 million comments and Janones's 28.7 million, against 4.8 million for Flávio and 7.3 million for Nikolas. Janones explicitly asked followers to comment ("type soldado in the comments"), a way to push the video in the algorithm.
The most-viewed videos
The 20 most-viewed reels from the four profiles between Oct 4 and 26. Hover to see each one's caption.
Loading the chart…
The most-viewed video of the runoff was Nikolas's: "O Nordeste que foi esquecido" ("The Northeast that was forgotten", Oct 20), with testimonies from residents of Luís Eduardo Magalhães (BA) against Lula, 170 million views. Meta removed the audio over copyright, and the video kept growing without sound. In the city where it was shot, Lula's margin moved +8.0 points between rounds, more than in the country as a whole (+5.6). Among Lula's, the most viewed were the ad "O seu voto decide" ("Your vote decides", Oct 10), the testimony of Dona Déa Lúcia, Paulo Gustavo's mother, on the delay in vaccines (Oct 18), and the announcement of the end of the 6x1 work schedule (Oct 14, at night). The themes that paid off most for Lula were work, the pandemic and the challenge to Flávio to open his confidential records; for Flávio and Nikolas, security, Bolsa Família, the Northeast and debate clips.
Conversation, sentiment and platforms
The total volume of posts about the candidates also grew. According to Datrix, mentions of Lula went from 643,000 per day in the week before the first round to 914,000 between Oct 19 and 22; Flávio's, from 267,000 to 443,000. Quaest measured the share of comments on the two candidates' profiles: the day after the first round, 88% were on Flávio's; on Oct 18, 95% were on Lula's. Net sentiment (positive minus negative mentions) shows the same comeback:
Loading the chart…
But Lula's advantage was not the same everywhere. In the early hours after the Band debate, Palver measured the share of content favorable to each: Lula had 73% on X and 59% on open social networks, but only 49% on WhatsApp and 41% on Telegram. On messaging apps, where conversation among acquaintances circulates and where content does not show up in public rankings, Flávio stayed ahead or tied throughout the campaign. It is a reason to be wary of conclusions drawn only from what is visible on open social networks.
Loading the chart…
Repercussion: debates, searches, livestreams and the TSE
- Band debate (Oct 18). 1.7 million citations in less than a day, with Lula adding up 25.5 million interactions in 24 hours against Flávio's 5 million (Bites). At 10:10 p.m., Janones's channel asked for Google searches: "Flávio miliciano" ("Flávio militiaman") passed 500,000 searches and "Flávio Ana Clara" 100,000, a rise of more than 1,000%. Fact-checking agencies found more false statements from Flávio (Lupa: 8 against 2).
- Globo debate (Oct 23). About 1.5 million mentions. The most-cited topics were Ana Clara (257,000), Lula's line about "ending the police" (194,000), which Nikolas turned into a clip with 67 million views in half a day, and Nikolas's own "Adeus, Lula" ("Goodbye, Lula"), with 101 million.
- Trending topics on X. On Oct 20, the "Tropa do Flávio" (Flávio's Troop) put "Não calem os nordestinos" ("Don't silence Northeasterners") among the most-discussed; within three hours, the Exército do Lula (Lula's Army) held the top three spots (#NordestinosComLula, #LulaEmJuazeiro, #PowerpointDoFlavio). On the eve of the election, the top six topics were pro-Lula.
- Livestreams. The Exército do Lula (Lula's Army) livestream with artists, on Oct 22, peaked at 1.29 million people watching at the same time on YouTube, and the "Live da Virada" ("Comeback Live"), of about 24 hours on the eve, drew 21.7 million views.
- Removed content. The TSE ordered videos taken down from both sides: three by Flávio linking Lula to criminal factions (one made with AI), the montage of a young man "snorting cocaine" at Lula's rally on Paulista, an AI-generated video of Lula on the "Tropa do Flávio" (Flávio's Troop) channel and the "Tesouraço" from Lula's campaign. Meta took down the video "Flavinho de papai" ("Daddy's boy Flavinho"), from MC Cabelinho's show, in under an hour on suspicion of AI; it was reposted.
The picture that emerges from these numbers is of two different machines. Lula's ran on volume and conversation: hundreds of videos, a messaging channel with more than 10 million people, mass commenting and coordinated occupation of trending topics. Flávio's relied on a few videos of gigantic reach, almost all by Nikolas, and on a strong presence on messaging apps. Both reached billions of views, and open social networks alone do not explain the comeback: they show where attention was, not who changed their vote.
Meta and Lula's reach: what is proven
Lula's campaign accused Meta of reducing the reach of its posts. What is known as of Oct 27:
- Admitted by the company or proven: Lula's ad account was disabled "by mistake" in September; an outage of about five hours on Oct 7; the account was barred from boosting posts from Oct 9 until the morning of Oct 10; Meta's artificial intelligence generated "Flávio 22" and refused "Lula 13" (Poder360 test, Oct 14, later corrected); internal messages published by Folha on Oct 16 show that Lula's profile did not appear in search even by exact name, while Flávio's appeared in suggestions. The TSE ordered Meta to treat both candidates equally, under a fine of R$ 500,000 per day (Oct 15, upheld 7 to 0).
- Alleged and not proven: deliberate bias since December 2025; the 2.96-fold engagement gap in Flávio's favor (PT's own survey); higher ad charges for PT (a NetLab/UFRJ and IPIE study that, in its own revision, ceased to be statistically significant). The TSE rapporteur saw no sign of intentional favoritism at this stage. The action seeking the removal of Flávio's ticket (Oct 21) has not been ruled on.
- The background: since 2024, Instagram and Threads have stopped recommending political content from accounts the user does not follow, and during the Brazilian election period the user could not change this. The rule applies to both sides, but weighs more on whoever depends on reaching people who do not yet follow them.
There were technical failures that hurt Lula, and there is no proof of intent. The social media numbers also show that, if reach was lost, it did not stop Lula from dominating interactions from the second week on. The effect of these failures on the vote cannot be measured with the available data.
What the prediction markets lost sight of
Polymarket moved about US$ 249 million on the Brazilian election and Kalshi followed the same path. On voting morning, both gave Lula about 20%. The diagram summarizes the chain of reasoning that took the price there and the public signals that were left out.
1. They read the wrong error
The market treated the first-round error as proof of a permanent bias against the right, reinforced by the memory of 2018 and 2022, when polls overestimated Lula. It was not: the 2026 first-round error was the third way losing votes to Flávio at the last minute, and Lula's vote was right. In the runoff, with no third way, there was nowhere for that error to come from again.
2. They ignored the stock of unclaimed votes
Six million blank and null votes and 33.5 million absent voters were public from the night of Oct 4. Their profile (less schooling, poorer, more in the Northeast and on the urban peripheries) is that of the Lula voter. The calculation that this stock could yield a few million votes for Lula required no private data.
3. They looked only at the polls
The signals outside the polls all pointed the same way and were public: social media interactions went from 84 × 74 to 111 × 31 million; Quaest's digital popularity index crossed in Lula's favor before Oct 15; Janones's channel went from 50,000 to 10.9 million; searches for "where to vote" grew sharply in the last week; and the fundamentals model, using only government approval, gave Lula 53%. None of these signals is good on its own, but together they contradicted a price of 10% to 20%.
4. A market without people who knew the country
Brazilians were barred from betting, and the price was set mostly abroad, by a retail public tied to cryptocurrencies, largely sympathetic to the right, according to operators interviewed by the press. The order book was thin: on election afternoon, US$ 41,000 in sales moved 19 points. In a market like this, the local information that could correct the price does not arrive, and the price does not measure the opinion of those who followed the campaign closely. The quotes were even used in Flávio's campaign as if they were a poll.
5. Calibration: 20% happens
The operators' defense is that a 20% event happens one time in five, and that is true. But the problem was not only the result: it was that the price stayed below 20% for most of the runoff, while every signal outside the polls was moving toward Lula. The Brier score, which measures the accuracy of a probability (0 is perfect; a coin flip scores 0.25), shows the size of each forecaster's error on the eve of the vote.
Loading the chart…
The comeback, turnout and young voters, municipality by municipality
Choose what to paint. The comeback was positive for Lula in almost every municipality. Turnout rose in four out of five, but fell in much of the North, where Flávio lost votes between rounds. The young voters map shows where the 16-to-24 electorate weighs most, especially in the North and Northeast.
Loading the map…
Why the MCMC missed and the vote-count projection got it right
Placar ran two models on the runoff. Before the election, a Bayesian model estimated by MCMC (Markov chain Monte Carlo) pooled all the polls and gave Lula 22%. On the night of Oct 25, another model read the TSE ballot-box reports as they arrived and projected the final result. The first missed the winner; the second called Lula at 7:44 p.m., with 13.3% of polling stations counted, when the count was still practically tied.
What the MCMC did
The MCMC treats each poll as a noisy measurement of a voting intention that changes slowly over the days. It estimates, at the same time, the trajectory of that intention, each pollster's "house effect" (a pollster's tendency to always give a bit more to one side), each one's extra noise, and a systematic error common to all polls. House effects are measured against a group of reference pollsters (AtlasIntel, Datafolha, Ipespe, MDA, Parana Pesquisas, PoderData, Quaest), whose average is treated as neutral. Convergence was good (maximum R̂ of 1.014). The problem was not the sampler; it was three modeling choices:
- The polls' common error cannot be learned from the polls themselves. If all pollsters miss together, none of them disagrees with the others, and the model has no way to notice. That error enters only through what is assumed beforehand, from past elections. In the five runoffs from 2006 to 2022, the polls' average error was +0.3, −0.1, +1.1, −1.2 and +2.9 points of margin. From that came the assumption that, in 2026, the polls would overestimate Lula by 0.95 point, with a standard deviation of 2.0. The actual error was −5.3, about three standard deviations from what was expected.
- The discount pointed the wrong way. Since the polls had overestimated Lula in 2022, the model discounted about 1 point from his margin. In 2026 the opposite happened.
- The counted-vote anchor pulled toward Flávio. The model also used the first-round result, redistributing the votes of the third way, of blank and null voters and of absent voters according to the polls. That calculation gave Flávio +2.7 and carried a 21% weight in the level. It repeated the polls' assumption about the voter who had chosen no one, precisely the group that decided the election.
The chart shows the forecast as it ran on the eve and what would have happened under other assumptions for the common error. Each bar runs from the 10th to the 90th percentile of the final margin; the circle is the median. On the right, Lula's chance and the probability the model gave to a result equal to or better than the actual one.
Loading the chart…
Approximate scenarios: the final margin is the polling level minus the common error, with the level calibrated to reproduce the MCMC's median and 90th percentile and the common error following a Student's t distribution (5 degrees of freedom). Only the assumption about the common error changes.
Without the discount and with the uncertainty used in the first round, Lula's chance would rise to 43%. No reasonable version of a model built only on polls would have made Lula the favorite: the problem was in the data, and the model had no way to see it. What it could have done better was to acknowledge that five elections are too few to estimate the size of the possible error. With a standard deviation of 2.0, the actual result had a 1.4% chance; with the first round's, 11.6%.
What the vote-count projection did
The live projection uses no polls. Every few minutes, it compares the votes of each polling station already counted with the votes of the same polling station in the first round and measures the change (the "swing", computed in logit). That change is estimated at several levels: country, region and state, with each state pulled toward the regional average when it still has few ballot boxes. Then the estimated change is applied to the first-round votes of the polling stations that have not yet arrived. What has not yet arrived is corrected for the order of arrival in the first round itself: the model knows that the Northeast and the interior tend to be counted first. The uncertainty comes from resampling states (bootstrap).
Loading the chart…
At 7:07 p.m., with 1.6% of polling stations counted, the projection was already at Lula +3.6; the final result was +3.6. Between 7:45 p.m. and 8:23 p.m., the count showed Flávio ahead, because the order in which ballot boxes arrived favored Flávio at that moment. The projection never crossed to Flávio's side: from 7:07 p.m. on, it stayed between Lula +3.5 and +6.1 and kept converging on the result. The projection's mean error, from 5% counted onward, was 0.35 point; from 20%, 0.15. In the rehearsals with the 2022 count and the 2026 first-round count, the mean error had been 0.26 and 0.13 point.
Why one got it right and the other did not
| Poll MCMC (eve of the vote) | Vote-count projection (live) | |
|---|---|---|
| What it observes | What between 2,000 and 15,000 respondents say they will do | What tens of millions of voters did, ballot box by ballot box |
| Comparison | Across pollsters and over time | The same polling station in the first round and the runoff: the same neighborhood, the same school |
| Who votes | Must assume who will vote, how blank, null and undecided voters vote, and how to weight the sample | Assumes nothing: turnout and blank and null votes are already in the ballot-box reports |
| Common error | Cannot be estimated; it comes from the record of five elections | Does not exist: there are no interviews, only votes. The risk is the order in which ballot boxes arrive, which the model corrects for |
| Dominant uncertainty | The polls' common bias (all of the variance weight) | How much the states not yet counted differ from those already counted, which falls by the minute |
| Validation | Five elections, with small errors of alternating sign | Replay of the 2022 count and the 2026 first-round count, minute by minute |
| Result | 22% for Lula; median Flávio +1.5 | Lula from 7:07 p.m.; called at 7:44 p.m.; final +3.6 |
The essential difference is the same one that separates a survey of intentions from a record of behavior. The MCMC is only as good as the polls it aggregates, and in 2026 all of them shared the same blind spot: the voter who had chosen no one in the first round. The live projection measures the change in behavior directly, at the same ballot box, and so saw from the first minute what the polls had not captured: a swing of about 5.6 points, not 0.2.
And the other sites
Placar was not alone in missing. No model, aggregator or market published before the polls opened made Lula the favorite: the chances ranged from 18% to 29.5%. The highest came from those who gave the polls less weight, such as DataPolicy (24% fundamentals), On Point Politics (35% first-round vote transfer, no house effect) and the Cepesp-FGV fundamentals model, which uses no polls. The lowest came from those who corrected the polls for the first-round error, such as Scoras and Opinião Inteligência Política, which added points to Flávio. DataPolicy gave about a 1.8% chance to a result like the one that came out; Placar's MCMC, 1.4%. Among the simple averages, Poll+Trend's was the closest (Flávio +0.1), but also on the wrong side.
| Site or model | Method | Lula's chance | Lula's margin | Date | |
|---|---|---|---|---|---|
| Placar 2026 (headline) | State-space model with house effects, historical bias and first-round vote; 25% market | 18% | −2.1 | Oct 24 | source |
| Placar 2026 (MCMC) | The same model, with the full posterior by MCMC | 22% | −1.5 | Oct 24 | source |
| Scoras | Weighted average (4-day half-life), corrects each pollster by half of the first-round error, rejection and potential vote, 200,000 simulations | 19% | −3.4 | Oct 25 | source |
| Cepesp-FGV (hybrid) | No polls: first-round vote, distance to the runoff, and ideological proximity of the eliminated candidates, 287 contests | 19% | −4.4 | Oct 7 | source |
| Opinião Inteligência Política | Average of 26 polls with 0.5 point in Flávio's favor for historical bias | 21% | −3.4 | Oct 19 | source |
| IPPI / Café Quente | Average with error scenarios of 5 points (the site says it is not a forecast) | 25% | – | Oct 17 | source |
| DataPolicy (Panorama Eleitoral) | 55 polls, house effect and recency; 76% polls and 24% fundamentals | 27% | −1.4 | Oct 24 | source |
| On Point Politics | 65% poll average and 35% first-round transfer, no house effect, 40,000 simulations | 28% | −2.0 | Oct 24 | source |
| Cepesp-FGV (RPA) | No polls: vote and distance from the first-place finisher in the first round | 30% | −2.2 | Oct 7 | source |
| Polymarket | Real-money prediction market (no Brazilian bettors) | 20% | – | Oct 25, 8 a.m. | source |
| Kalshi | U.S.-regulated prediction market | 20% | – | Oct 25 | source |
| Poll+Trend | Poll average (method not published) | – | −0.1 | Oct 24 | source |
| PollsterGraph | Poll average | – | −1.8 | Oct 24 | source |
| UOL | Poll average | – | −2.0 | Oct 24 | source |
| Transmissão Política | Simple average of 14 polls | – | −2.3 | Oct 17 | source |
| Monitor Eleitoral (Inteligov/Exame) | Moving average weighted by method and date | – | −3.0 | Oct 16 | source |
Final forecasts published before the polls opened, with the source for each row in analise-previsoes/dados/outros_modelos.csv. "–" where the site did not publish the number.
Loading the chart…
During the count it was the other way around. Placar's projection and the one by Rodrigo Mahlmeister, published by Estadão and TVT, use the same principle, the swing at the same polling station, and arrived at the same place at almost the same minute. Mahlmeister's model, which inspired Placar's, projected Lula at 51.6% at 7:15 p.m., with 2.4% of ballot boxes counted; Placar's, Lula at 51.8% at 7:07 p.m., with 1.6%. The result was 51.79%. Polymarket flipped to Lula at 7:09 p.m., at the same time, probably reading the same Northeast ballot boxes that arrived first. The raw TSE count only moved to Lula after 8:23 p.m.
What 2026 teaches, and what an MCMC model needs to learn
The 2026 election ended with a result almost no one predicted and that, looked at closely, was written in the public data. The thread that ties the sections of this article together is a single one: the voter who, in the first round, had not chosen either of the two.
The error
The polls missed the runoff by 5.3 points of margin, all in the same direction, something that had not happened since at least 2006. The error was not one of method or of pollster: phone, face-to-face and online panels erred together. Nor was it the same as in the first round. There, polls underestimated Flávio because the third way lost votes at the last minute; in the runoff, they underestimated Lula because they did not capture those who had spoiled their ballot, voted blank or stayed home.
Where the votes were
The 6.0M first-round blank and null voters and the 33.5M abstainers gave Lula 6.3M net votes, more than the final gap between the two (4.4 million). The comeback was largest in polling stations with more blank and null votes and less schooling, and turnout rose as it had not since at least 2014.
The two hypotheses
The data support both, in part. There was a mobilization that rose from below in the days after the first round, among fans, volunteers and street rallies, which Janones's channel organized without controlling: it went from 50,000 to 10.9M followers after Lula's appeal. There was also a change in the campaign's format, toward simple videos, content creators and social media, which turned interactions in Lula's favor without ad spending. But the vote this energy brought came mainly from less-educated voters and from those who had chosen no one; young voters swung a little more without turning out more, and the fandoms were more spontaneous support than strategy.
Meta
There were technical failures that hurt Lula and that the company itself admitted, and the TSE ordered equal treatment. There is no proof of deliberate interference, and the failures did not stop Lula from dominating social media from the second week on.
The markets and the models
Polymarket, Kalshi, Placar and every other model found gave Lula between 18% and 29.5%. The markets added to the polling error a wrong reading of the first round, the absence of Brazilian bettors and a thin order book. The models inherited the polling error and, in several cases, made it worse by discounting the first-round error from the polls. Only the projection built on actual votes, polling station by polling station, saw the comeback from the first minute of the count.
Improvements for the MCMC
The MCMC did not fail as a technique: it did exactly what it was specified to do, and the specification rested on a premise that 2026 disproved, that polling error is small, has a known sign and can only be estimated from past elections. The signals it left out were available before the vote. Six changes would let a Bayesian model incorporate them in the next election.
- A common error with realistic tails and no imposed sign. Five runoffs are not enough to estimate how large the error can be. The spread of the common error should come from a much larger base, with a hierarchical model pooling presidential elections, gubernatorial runoffs since 2006 and elections in other countries with similar polling, and with a heavy-tailed distribution that is estimated, not fixed. The discount from a single cycle (polls had overestimated Lula in 2022) should not become a signed mean: the sign of the error flips from one election to the next, as it did between the first round and the runoff of 2026.
- The pool of unclaimed votes as part of the model. First-round blank and null votes, undecided voters and abstainers need to enter as quantities with their own distribution, not as a residual that disappears from the valid-vote count. On the night of Oct 4, the polling-station results already showed that blank and null votes were concentrated in the stations most favorable to Lula (4.0% in those most favorable to Flávio, against 5.2% in those most favorable to Lula, within the same city). A transfer model estimated with these data, and with the voter profile of each polling station, would have given blank and null voters and abstainers a lean toward Lula, instead of repeating the polls' assumption.
- Turnout as explicit uncertainty. Turnout used to fall from the first round to the runoff; in 2026 it rose almost two points. The model should draw turnout scenarios by region and by polling-station profile, tied to the margin, instead of inheriting each pollster's likely-voter assumption.
- Signals from outside the polls, with learned weights. Social media engagement, digital popularity indices, searches for "where to vote", government approval and markets can enter as noisy measures of the same vote intention, each with its own scale and noise estimated in past elections (a measurement model with multiple indicators). On their own they are useless; together, and with estimated weights, they warn when polls drift away from everything else. In 2026 all these signals pointed the same way, and the model had nowhere to put them.
- House effects that change with method and round. Pollsters that started weighting their samples by reported first-round vote (Palver in wave 7, Ipespe) broke their series in mid-campaign. The house effect should allow a possible break at the first round and a method component (automated phone, face-to-face, online panel), with estimated variance, so that the model does not treat as neutral a reference group that errs together.
- Out-of-sample validation and a link to the vote count. Before publication, the model should be tested on state runoffs and on replays of past elections, with calibration checks (over many elections, the actual result should fall below the 10th percentile one time in ten). And the eve-of-election forecast should be the starting distribution of the live vote-count projection, which corrects it with the first votes, as Placar already did on Oct 25.
None of this guarantees calling the winner in an election decided by 3.6 points. What these changes do is prevent a model from giving a 1% chance to a result that was within reach of public data, and that is the standard by which a probabilistic forecast should be judged.
How the numbers were calculated
- Polls. Placar base: 18 pollsters with their last runoff round fielded between Oct 20 and 24, and 13 with their last first-round poll between Sep 28 and Oct 3, all registered with the TSE. Margins in valid votes, Lula and Flávio only. Error = ballot-box margin − poll margin. Earlier cycles: Placar calibration base (Datafolha, Ibope, Ipec, Quaest, AtlasIntel, PoderData, Ipespe, MDA, Vox Populi, Paraná Pesquisas).
- Datafolha by segment. Breakdowns published by g1 in the Oct 7, 14 and 22 waves. The margin of error of each breakdown is much larger than that of the full sample.
- Vote flows. Ecological inference by polling station, from the victory analysis: transfer rates from the first round to the runoff by region, adjusted to reproduce the official totals.
- Polling stations and electorate profile. Polling-station results for both rounds (TSE, Oct 26) and electorate profile by polling station (TSE, July 2026), linked by zone and station: 496,904 polling stations with at least 50 voters in both rounds, in 5,571 municipalities. Each characteristic is measured as a deviation from its own municipality's average (municipality fixed effect), and the regressions are least squares weighted by turnout, with standard errors clustered by municipality. R² of the swing with all variables: 0.15. The effects are about places, not people: it is not possible to know who, within a polling station, changed their vote.
- Instagram reels (section 7). Read on Oct 27 from the profiles of Lula, Flávio Bolsonaro, André Janones and Nikolas Ferreira: every reel since Sep 28, with the views, likes and comments Instagram showed that day (numbers for older videos keep growing). Each video's date comes from the post's code, converted to Brasília time. Files
instagram_reels_dia.csvandinstagram_reels_top.csv. - Social media, channels and ads. Figures from Bites, Quaest (IPD), Ativaweb, IGDataHub, Mobile Time and the press, each with its source in
analise-previsoes/dados/. Different meters use different windows and networks; comparisons are valid only within the same source. The Instagram followers as of Oct 27 were read from the profiles. - Models (section 11). MCMC: posterior frozen on the eve (previsoes_2turno_congeladas.json) and prior for the common results error from resultados.json. Live projection: series recorded by the Placar collector on the night of Oct 25 (apuracao_2t.json) and rehearsals with the 2022 counts and the 2026 first-round count (apuracao_backtest.json). Other sites: final published forecasts, with sources, in
analise-previsoes/dados/outros_modelos.csvandprojecoes_ao_vivo.csv. - Markets. Placar's own series (price recorded at each update) and points published by the specialized press; the Polymarket data interface was not accessible. Brier = (1 − p)², where p is the chance given to Lula on the eve.
- Limits. Neither of the two hypotheses can be proven with aggregate data: mobilization and social media coincide in time with the campaign broadcasts, the debates, the end of the 6x1 work schedule and the runoff endorsements. What the data show is where the vote changed and what is compatible with each explanation.
- Files. previsoes.json (polls, chances, polling stations, flows, social media) and previsoes-municipios.json (by municipality, IBGE code: swing, change in turnout, % aged 16 to 24, % with higher education, voters).
Placar home page · What gave Lula the victory · The comeback, neighborhood by neighborhood · Editorial and results panel