Blog/Analysis
How our Brazilian election live model beat the markets
On Sunday, Brazil went to the polls to elect its next president. We built an “on-the-night” model to forecast the election result as the votes trickled in. The model estimated the probability of each candidate winning the first round, the probability of a runoff (i.e. would any candidate fail to reach more than 50% of valid votes), and the overall vote-share margin between the two leading candidates.
Historically, Brazilian polling has a patchy record. The right-wing candidates typically overperform their polls. Our poll-based prior came with a large margin of error given this history, and made Lula the narrow favourite, with a 1-point lead in the average of external polls. Once the first results arrived, the model updated its estimates.
The model predicted national vote-share change for each candidate compared to the 2022 result (with Flávio Bolsonaro using his father’s baseline), as a function of each candidate’s 2022 result, regional factors, and municipality-level demographics.
The model used the votes counted so far over 5,000 municipalities to estimate the relationship between all these variables, and project how the rest of the country would vote. It conducted hundreds of simulations every minute as data came in.
The model performed extremely well. We correctly forecasted the eventual 47-45% split after just 2% of the votes had been tallied, and were almost certain the race would go to a runoff.

At 10% of the votes in, we put Bolsonaro at a 97% chance of finishing first:

The model barely moved for the rest of the night. By 81.5% counted, little had changed, with the official vote count steadily converging on the model’s projection as the night went on.

Our model beat the market at every turn. Bolsonaro went favourite in our model 13 minutes before Polymarket caught up. The markets did not read the partial data as well as the model did, and remained under-confident throughout the night. It took 38 minutes for Polymarket to hit our 90% win chance, and we put Bolsonaro at a 98% chance of finishing first over an hour before the market caught up.

The markets also consistently over-estimated the chance of a first-round majority for Bolsonaro compared to our model.
Within minutes of the first votes being counted, we were almost certain a runoff was coming.
Throughout the night, markets misread Bolsonaro’s >50% share of the partial votes, giving a 15% chance of a first-round majority at 6pm Brasília time, when we had long been confident based on the votes left to count that a runoff was almost guaranteed (>99%).

At Focaldata, we regularly produce bespoke live election models for our clients. If you are interested in our work for the Brazilian runoff in three weeks’ time or simply want to learn more about our capabilities, please get in touch.


