Five findings before the official results
One chart, any model
Choose a model and download the chart or share it. The chosen model is highlighted, and thin lines show where the other models’ estimates fall, so the range is visible too. We do not offer raw percentages without any processing here, because they are not an estimate.
What we claim and what we do not claim
Here, in one place, we set out what these data show and how far conclusions can be drawn from them.
What we claim
What we do not claim
Terms we use
- Weight
- The weight a respondent carries in the calculation. If a group has too few members in the sample, its members get a larger weight, as if they spoke on behalf of more people.
- Weighting (raking)
- The procedure that adjusts the weights so that the sample resembles the population by sex, age, region, settlement type and education.
- Alignment with 2023 (calibration)
- An additional condition that the sample, by how people voted in the 2023 election, matches the official result of that election.
- Percentage point (pp)
- The difference between two percentages. From 40% to 45% is five percentage points.
- 90% interval
- The range within which the estimate would fall had we surveyed other people using the same procedure. We calculate it with the bootstrap method: a thousand times, we randomly draw a sample from our sample and repeat the entire calculation.
- Effective sample size
- How many randomly selected respondents would give the same precision as our weighted sample. The more unequal the weights, the smaller it is.
- MRP
- A statistical model that predicts the vote for each combination of sex, age, region, settlement and education, and then sums those predictions according to the composition of the electorate.
- Synthetic record
- A statistical model’s estimate of how people would vote from a group with too few members in the sample, based on patterns in real responses. It is neither a real person nor an invented response, and it brings no new information. It is marked separately and published openly.
- TabPFN
- A statistical model for tables (Prior-Data Fitted Network), pre-trained on millions of artificial tables. It receives our data as context and makes predictions for them without additional training. Here we use it to create synthetic records.
- Snowball survey
- A survey that spreads through acquaintances. Here, people told us how older people (65+) whom they know personally will vote, and forwarded the link on.
Why we are doing this and why this way
The original plan was different: 3,000 voters in the last 48 hours before the election, half online and half face to face. In the field we wanted more older people, and online more younger people. It is hard for us to reach people over 55 via the internet, whereas younger online respondents do not differ much from those we would meet in the field.
We did not manage to organise the fieldwork part. Many of the interviewers we approached turned the job down because they feared for their safety in the field in the days before the election. As a result, we could not carry out what we considered the optimal design. Instead of giving up, together with Prof Slobodan Tomić we decided to see what can be obtained from a purely online sample when it goes through different analytical treatments: weighting to the census, alignment with the result of the previous election, statistical models and boosts for groups with few members in the sample.
We have two aims. The first is to measure how accurately an online-only survey can estimate the result, even though we know its weaknesses: the internet makes it easier to reach younger people, more educated people and people from cities. The second is to establish which way of processing the data gives the smallest error. We will add the answer to the second question once RIK publishes the final results.
We are writing for the scientific community (this study will lead to a scientific paper), for researchers and agencies in Serbia, with whom we share the whole procedure, and for the public. Some things we would have done better had we had more time. We show those too, because we believe full transparency should be the rule, for us as well.
We funded the study entirely ourselves.
How we collected the data
Who is in the sample, and who lives in Serbia
share, %Orange dots show our sample before any processing, and empty circles show the adult population according to the 2022 Census. The largest gap is among people aged 65 and over and among those with at most primary education: these are the people we find hardest to reach via the internet.
Achieved sample by quota (table)
Quotas served only to steer data collection. For weighting we use the 2022 Census (RZS) and the official results of the 2023 election (RIK).
Questionnaire and responses (click on a question)
Question 8 (most important problem) was asked only of the first respondents and then removed to make the survey shorter; we do not use it. At the start of the survey we told respondents that the aim was to see how accurately an internet survey can predict the election result.
Are there more recent data than the 2022 Census?
Each dot is one respondent
When a group has too few members in the sample, its rare representatives get a larger weight. You can see this here: each dot is one respondent, and its area is that respondent’s weight.
The cost of weighting: effective sample size
how many randomly selected respondents the weighted sample is worthDemographics are not enough: the sample is also politically skewed
Who they voted for in 2023, among those who voted then
share, %Same survey, different models
Estimates for the two largest lists by model
The second most important decision: how education is weighted
models C and B2, % of valid votesAll lists, all models
% of valid votesClicking a column heading sorts the table by that model (clicking again reverses the order); clicking “List” restores the order on the ballot. Colours are assigned by ballot number, independently of party colours. Model D estimates only five separate lists (Vučić, Studentska lista, SPS, Autentična desnica, Evropska Srbija) and the sum of the rest. The threshold is 3% of all who voted; national minority lists are exempt from it. For lists below 5% the estimates are unreliable and we do not use them for conclusions about the threshold.
What changes when we supplement older and less educated people
Estimates by model and data version
% of valid votes, 95% intervalTable: all three versions of the data
How the synthetic boost works
TabPFN, a pre-trained model · experimental, not the chosen modelWhat the boost does
What the boost cannot do
Supplementary 65+ sample from the snowball survey as additional respondents
a rough substitute for a random sample of older peopleHow much the result depends on processing decisions
Studentska lista’s lead, for each combination of decisions
pp, from smallest to largestEach column is one combination of decisions. The top shows the difference between the two lists, and the bottom shows the decisions that combination uses (a specification curve). This kind of display shows whether a conclusion depends on a single arbitrary decision. Empty circles are combinations in which the weights cannot meet all targets; we do not count them in the ranges.
Older voters the online poll cannot see
How voters aged 65+ will vote, by how they voted in 2023
snowball survey, only those who will voteA transition table like this depends less than the percentages themselves on who shared the survey, but it is not fully immune to it. The share of those who stay with their list is probably underestimated, because opposition-minded acquaintances more easily notice those who have switched sides.
Assumptions you can change yourself
E-snow is computed instantly; C and B2 from precomputed valuesHow the estimate changed as responses arrived
Chosen model in order of response arrival
estimate and 90% intervalAnalysis log
working versions were computed by hand during fieldwork and are not part of the final scriptComparison with the official results
Post mortem analysis: what went well, what went badly and why the chosen model fell short
The decision path: where the error arose
estimates of the two largest lists by processing step, % of valid votesWhy the chosen model fell short
past-vote alignment in an election with a large swingWhat we learned
Limitations
What we would do differently next time
This is a list for us and for anyone who carries out a similar study. Most of these things were not possible because we launched the study at the last minute.
Sample
- A mixed sample, as planned. Online for younger people, and face-to-face fieldwork or telephone for older people. If fieldwork is not safe, a telephone survey is a better substitute than a snowball survey, because it gives a random sample of older people.
- Interlocking quotas. Quotas for combinations, for example 65+ with primary education, not just for each characteristic separately, and at least 50–75 people in each rare group. Then the weights do not need to exceed 5 × the mean.
- Tracking the 2023 vote during fieldwork. Fill the sample so that it also resembles the electorate politically, instead of correcting this only through the weights.
- Snowball with recorded chains. Record who invited whom and how many older people the respondent knows, and start from several different networks. Only then can formal corrections (RDS) be applied.
Questionnaire
- Turnout and the undecided. Ask how likely the respondent is to vote and whom they lean towards if they have not yet decided, instead of excluding the undecided straight away. Record how many people the survey stopped at each question.
- Order of the vote questions. Ask half of the respondents about 2023 first and the other half about 2026 first, so that we can measure how much the order affects recall. Name the 2023 lists exactly as they appeared on the ballot.
- Quality control in the data itself. Record the response time for each question and add one check question, so that fast and careless responses are identified from the data rather than by judgement.
Processing
- An analysis plan before the first response. Publicly record the weighting targets, the weight cap, the chosen model and the accuracy measures before fieldwork (for example on OSF), and test the script on artificial data. That way we would have discovered the unattainable weight cap before fieldwork, not during the night before the election.
- One source for quotas and targets. Produce the fieldwork quotas and the weighting targets from the same script and the same official tables, with an automatic check.
- Turnout by group from several sources. Estimate the share of older people among voters from several independent sources, not from a single working assumption.
Organisation
- Fieldwork arranged earlier. Engage interviewers weeks in advance, have them work in pairs, with clear identification and support during the day, and offer telephone work to those who do not want to do fieldwork.
- More time for checking. At least a week between finalising the questionnaire and the start of fieldwork, for pilot interviews and a check of the whole processing pipeline.
Data and code
All estimates and charts on this page are produced from a single script and anonymised data. Anyone can reproduce them, change the assumptions and compare the result.
pip install -r requirements.txt python preexit.py --podaci podaci_anonimni.csv --snowball snowball_anonimni.csv --izlaz rezultati # (the synthetic boost takes longest; --bez-boosta skips it, --brzo reduces the number of repetitions) # once RIK publishes the results (template: rik_2026_SABLON.csv), without recomputing the estimates: python preexit.py --samo-evaluacija rezultati --rik rik_2026.csv --sablon sajt_sablon.html
Digital fingerprints
SHA-256The data and code are published under the CC BY 4.0 licence. We ask everyone who uses them to report the findings accurately and together with the limitations described on this page.
Authors, funding and contact
- Research
- Latenta, a London-based research consultancy. We work on latent-construct measurement, segmentation and voter research. Member of the MRS (Company Partner) and ESOMAR.
- Authors
- Dr Mihajlo Popesku (Latenta), Prof Slobodan Tomić (University of York), Viktor Stamenković (Latenta)
- Funding
- We funded the study entirely ourselves. It was not commissioned or paid for by any election participant, media outlet or other organisation.
- Conflict of interest
- Latenta does not currently work for any political client from Serbia. We have no engagement of any kind related to this election, nor are we carrying out this study as a service to any political option. As individuals, we have our own political views. So that anyone can check that these did not influence the results, we publish all decisions, data and code.
- Privacy
- We do not collect names, telephone numbers or addresses; respondents' identities are known only to the panels. The snowball survey does not record names or anything else by which the person in question could be identified.
- Contact
- ask@latenta.com
- How to cite
Methodological appendix
Statistical error by model (±, 95%)
Half the width of the 95% interval that would apply if the sample were random, for a list with a given percentage, in each model. The error depends on the effective sample size: the smaller it is, the larger the error.
Weighting (raking, iterative proportional fitting)
The weights wi are multiplied in turn by factors that equalise the weighted share of each category with its target, until all margins are satisfied (tolerance 10−7). Weights above the cap are trimmed, and the procedure is repeated until both conditions hold. For each model we record the largest deviation of the margins from the targets.
Targets. Sex, age, region and settlement type: 2022 Census, adults (N = 5,492,020). Education: 2022 Census for 15+, adjusted to 18+ (primary or less 21.4%, secondary 55.2%, tertiary 23.4%). For voters: 65+ = 32.6% (the team's working assumption, with no official source); regions according to the number of voters who voted in 2023 (RIK).
Model C: alignment with the 2023 vote
A margin for the 2023 vote is added to the demographic margins. Among those who voted in 2023, the target shares are RIK's official results (base of 3,815,007 voters who voted: SNS 46.75%, SPN 23.66%, SPS 6.55%, NADA 5.02%, Mi 4.69%, Dveri – Zavetnici 2.76%, SVM 1.70%, SRS 1.46%, other lists 4.69%, invalid 2.73%). The total share of those who did not vote in 2023 or were not yet adults at the time is kept as it is in model B2. We use the official 2023 result as a reference for the composition of the sample, not as an assessment of that election.
Model D: MRP with regularisation
Multinomial logistic regression (six outcomes: five separately reported lists and the others) with main effects of sex, age, region, settlement type and education, and the interactions age × education, region × settlement and age × sex. The main effects are penalised less than the interactions (column scaling by a factor k), which roughly corresponds to a hierarchical model with random effects. The values of k and the regularisation strength C are chosen by repeated cross-validation (5 × 6, log-loss).
The predictions are summed over a frame of 288 cells (2 × 6 × 4 × 2 × 3), built from 2022 Census cross-tabulations (region × age, sex × age, age × education, region × settlement) and adjusted to the assumed composition of voters.
Settings that predict equally well give very different estimates. For this reason we do not consider model D reliable on this sample.
Model E-snow: the online poll and the snowball survey combined
Under 65: online respondents, weighted by the same rules as in the chosen model, to the census composition of adults under 65. Voters aged 65+: the distribution is derived from the transitions in the snowball survey, weighted by the composition of 65+ voters by their 2023 vote:
cSNS is the share of former SNS voters (60% by default, the team's working assumption); the other groups share the remainder in proportion to the official 2023 result. The interval includes a bootstrap of the online sample, a cluster bootstrap of the snowball respondents and the uncertainty in that assumption (uniform 55–65%).
Synthetic boost: technical description
The generator is TabPFN v2 (classifier; Hollmann, Müller, Purucker et al., “Accurate predictions on small data with a tabular foundation model”, Nature 637, 2025, 319–326), with the weights tabpfn-v2-classifier-finetuned-zk73skhh.ckpt (the default TabPFN v2 classifier weights published by Prior Labs; fingerprint in MANIFEST.txt). We did not train the model further on our data; we use an ensemble of four estimators and a fixed seed. TabPFN v2 works with at most ten classes, so rare categories are temporarily merged: in the 2023 vote, Dveri – Zavetnici, SVM, SRS and “another list” (afterwards split in proportion to the real sample in the same region), and in the 2026 vote, all lists except the nine largest (split in proportion to the sample).
Here xf is demographic cell f (sex × age × region × settlement × education), πf|c its share within the enlarged cell c in the post-stratification frame, and mc the number of synthetic records in cell c. The target size is N* = nrest / Σf outside the boost πf. The shortfall in cell c, N*·πc − nc (nc is the number of real respondents in cell c), is filled proportionally, and the total number of synthetic records is capped at (factor − 1) × the number of real respondents in the enlarged cells (factor = 3). Raking then starts from the base weights ws (real respondents: 1), and the weight cap applies to the ratio of the final weight to the base weight.
Bootstrap (200 replications): in each replication the sample is redrawn, TabPFN receives it as a new context, the synthetic records are generated afresh and all models are recomputed. Because duplicated rows in a bootstrap sample also change the model's prediction itself (the model treats them as stronger evidence and “borrows” less from the rest of the sample), the bootstrap distribution is shifted relative to the estimate. We therefore compute the interval as estimate ± z · SE, with the standard error from the bootstrap; these intervals are approximate. Chained application of the classifier (first the 2023 vote, then the 2026 vote) is a standard way of obtaining a joint distribution from a classifier; we do not generate the demographics of the synthetic records but take them from the census frame. All synthetic records are published in the file sinteticki_ispitanici.csv. Built with TabPFN.
Accuracy measures for the comparison with RIK (pre-specified)
We compare the estimates with shares of valid votes. First with the total for Serbia's four regions (excluding Kosovo and Metohija, the diaspora and prisons), because this matches the population we surveyed; then with the overall result.
We also record whether the 90% and 95% intervals contained the official result.