Senát 2026 · forecast

Journal

2026-10-17 — Day 16: round-2 results and the final score

In short: All 22 runoffs are counted; results are from volby.gov.cz (as of 17:38). The main scoring, the forecasts locked on 9 Oct before round 1, was won by AI + betting (Brier 0.352). Pure AI came second (0.369) and beat the betting odds on their own (0.381). In round 2, by contrast, betting was the most accurate (0.169), just ahead of AI + betting (0.170). Pure AI was only sixth of eight in round 2 (0.227). In six of 22 districts the round-1 runner-up won. None of the 13 ANO finalists won. The full score is on the Score page.

Round-2 results

Main scoring: forecasts of 9 Oct (27 districts)

Brier, lower is better: AI + betting 0.352 · AI 2 Oct 0.368 · AI 0.369 · AI + model 0.375 · Betting 0.381 · Statistical model 0.418. The favourite won in 21 of 27 districts for all our series, 20 for betting.

Round 2: forecasts of 16 Oct

On the 20 duels where every series has numbers (in Praha 1 and Kolín one side was locked at the bookmakers): Betting 0.169 · AI + betting 0.170 · STEM 0.188 · AI + model 0.188 · Statistical model 0.188 · AI 0.227 · Seznam Zprávy 0.236 · transfer model 0.268.

External comparison

Transfer model (internal test)

The pre-registered precinct-level vote-transfer model (4ff7354) did worst of all (Brier 0.268). It estimated the round-1 leader's share with a mean error of 6.8 percentage points, against 5.9 in validation on past elections. It estimated round-2 turnout well: mean error −1.1 points, mean absolute error 2.7 points. We will not add it to the model.

Paper bets

Under the pre-registered rule, 100 CZK per bet:

Method check

We converted the odds into probabilities with other overround-removal methods too (proportional, Shin). Betting's Brier changes by at most 0.011 and the ranking of the series stays the same. The pre-registered method (power) does not disadvantage the market.

Errors and fixes

New sources of the day

Next

We will cover the error analysis and the lessons for future experiments (calibration, links between districts, odds and betting volume) separately and in an article.

2026-10-16 — Day 15: scored round-2 odds, paper bets and a STEM correction

In short: We read the odds for the last time before the 14:00 close. This is the reading that gets scored. The market has barely moved since Thursday, most in Žďár (Klement 74 → 77 %). In Hradec it now leans slightly to Ceralová Petrofová (50.8 %), so the market now differs from us on the favourite in two districts, Kladno and Hradec. The news contained nothing that changes a forecast. The round-2 paper-bet list is locked. We corrected the STEM external benchmark to its final chart version.

News (no odds)

Order of steps and the scored reading

Betting: what changed since Thursday

Round-2 paper bets

Following the pre-registered rule, the list was built from the scored odds and the 16 Oct snapshots (list, commit 9aef889 at 13:58:00, before polls opened). AI would bet 14 times, the Statistical model 8, AI + model 10, AI + betting none. The "always the market favourite" benchmark has 20 bets. Almost all of our series' bets are on underdogs, because we are less sure about favourites than the market. So round 2 mainly tests whether that lower confidence is justified. A first version of the list at 13:51 (3fc8e6a) still used Thursday's AI + betting and had one extra bet (Žďár, Šmarda). The 13:58 version is the valid one; otherwise the two are identical.

Internal test: transfer model

On Thursday at 22:27 we pre-registered an internal precinct-level vote-transfer model in commit 4ff7354. It changes no series; we will score it on Saturday alongside the others.

Errors and fixes

New sources of the day

Next

Round 2 runs 16–17 Oct. On Saturday evening we will score all five series, the external benchmarks (STEM, Seznam Zprávy, Deník N), the transfer model and the paper bets.

2026-10-15 — Day 14: no change, Hradec 50 : 50 in the market, Seznam Zprávy as a second external benchmark

In short: On Thursday we found no fact that would change a forecast, so AI and AI + model stay at Wednesday's state. In Hradec the market reached exactly 50 : 50 (Wednesday morning Dvořák 54 %, we 51 %). Next to STEM we added the Seznam Zprávy model to the table; it gives numbers, so after the election we will score it with Brier too. The blend is now called "AI + betting" and there is a new Trends page.

News (no odds)

The 15 Oct AI and AI + model snapshots were locked in commit ead144b (15 Oct 14:09:49); only then did we read odds (Tipsport and Fortuna 14:10–14:12).

External benchmark #2: Seznam Zprávy

Seznam Zprávy (Konstantin Sulimenko, 12 Oct 18:00) published a round-2 model with probabilities for all 22 duels. On the site it now sits in the "External" group next to STEM, and after the election we will score it like our own series (Brier, log score, hits). Our agents did not see it.

Odds: what changed since Wednesday morning

We read the odds once more on Wednesday evening (not scored, for the record only). Below is Wednesday morning vs this afternoon, with AI + model as of today's lock.

Errors and fixes

Other

New sources of the day

Next

Friday morning: last news sweep, then lock and the scored odds reading before 14:00 (planned 12:00–13:30; Fortuna and Tipsport take bets until 14:00). Right after that, the round-2 paper-bet list. Round 2 on 16–17 Oct; scoring of all series and external benchmarks on Saturday evening.

2026-10-14 — Day 13: Hradec 54 → 51 after new endorsements, Deník N as a benchmark

In short: On Tuesday evening we re-ran Hradec Králové. More eliminated candidates (Holásek, Nebeská, Picek) endorsed Ceralová Petrofová. AI and AI + model now give Dvořák 51 % instead of 54 %, so he is still a narrow favourite. We also re-ran Plzeň after the row over Aschenbrenner's billboard, but the change came out below 2 points, so it stays (Řehka 82 / 94 %). Other districts unchanged. Kladno unchanged: market Paták 57 %, we Šípová 52–53 %.

News (no odds)

Hradec v3 was committed on Tuesday at 17:38. The 14 Oct AI and AI + model snapshots were locked in commit 783af35 (14 Oct 07:58:18) before reading odds (Tipsport 07:58:33, Fortuna 07:58:49).

External benchmark: Deník N

Deník N (Jan Wirnitzer, 13 Oct) published a verbal round-2 prediction ("ANO faces a crushing defeat…"). No numbers, just "clear favourite / favourite / slight favourite / even". We stored it as an external benchmark (like STEM). Our agents did not see it.

Odds: what changed since Tuesday noon

We read the odds once more on Tuesday at 17:17 (not scored, for the record only). Below is Tuesday noon vs Wednesday morning, with AI + model as of today's lock.

Errors and fixes

New sources of the day

Next

Thursday: one more round of news and odds. Friday: the scored odds reading before 14:00 (planned 12:00–13:30). We will re-run Plzeň if Aschenbrenner explicitly urges a vote for Kantorová. Round 2 on 16–17 Oct.

2026-10-13 — Day 12: no update, odds move both towards and away from us

In short: The news contained nothing that could decide a race, so the AI and AI + model forecasts stay unchanged (lock e22cfd9, 12:26). Since Monday morning the odds moved in nine districts, but no favourite flipped. Kladno is unchanged: market Paták 57 %, we Šípová 52–53 %.

News (no odds)

The 13 Oct AI and AI + model snapshots are copies of 12 Oct, locked in commit e22cfd9 (12:26:57) before reading odds (Tipsport 12:27:09, Fortuna 12:27:18).

Odds: what changed since Monday morning

We also read the odds on Monday at 15:10 (not scored, recorded only to track the trend). Fortuna lists betting as closing on Friday 16 Oct at 14:00. The last reading before then will be scored.

Mistakes and fixes

None new today. The lock → odds order was kept (times above).

New sources

Next

Odds daily; the scored reading is on Friday before 14:00. An update only for a fact that could decide a race (e.g. a recount in Žďár), always with a lock before odds. Runoff on 16–17 Oct.

2026-10-12 — Day 11: runoff endorsements, Litovel update, first round-2 Betting and Blend

In short: An endorsement check across all 22 districts found two new facts. In Litovel we raised the forecast slightly; in Znojmo we left it unchanged. For the first time we have round-2 Betting (Tipsport and Fortuna) and Blend. The market has the same favourite as AI + model in 19 of the 20 districts with odds. The exception is Kladno, where the market flipped overnight to Paták (57 %) while we have Šípová at 52–53 %. On clear favourites the market is, as in round 1, more confident than we are.

Runoff endorsements (news only, no odds)

On Saturday evening the agents ran out of web search, so this morning a fresh run checked endorsements in all 22 districts. We used Google News for the last three days and articles opened in the browser. No odds were opened while we did this.

We locked the new AI and AI + model snapshots in commit 8e6e795 (9:49). Only Litovel changes in them; the other districts are copies of 11 Oct.

Runoff odds: first Betting and Blend

Tipsport and Fortuna both offer a "who gets more votes" duel in all 22 districts. Method: power de-vig for each bookmaker separately, then the mean of the two. Odds of 1.01 are treated as the floor. A bookmaker with the favourite's price locked is left out. In Praha 1 (Padevět) and Kolín (Kašpar) both are locked, so Betting and Blend have no number there. In Příbram and Uherské Hradiště we use Tipsport only. Only the last reading before betting closes is scored, as pre-registered on 11 Oct. Today's numbers are interim.

Mistakes and fixes

New sources

Next

Odds daily until betting closes (the last reading is scored). Another endorsement check only on new news; an update only for a fact that could decide a race, and always a lock before odds. Runoff on 16–17 Oct.

2026-10-11 — Days 9–10: round-1 results, interim scores and runoff forecasts

In short: We predicted who would reach the runoff as well as the bookmakers: the favourite advanced in 26 of 27 districts in all five series. The bookmakers did better on clear favourites because they were more confident, while AI was needlessly cautious. Where we disagreed with the market, our favourite leads after round 1 in five districts and the market's in two, so the runoff will decide. Blend, the combination of AI and the market, is doing best so far. Our statistical model predicted ANO's advancement better than the Seznam Zprávy data model.

Round 1 is counted. Five seats were decided outright: Strakonice (Fiala), Děčín (Linhart), Trutnov (Sobotka), Rychnov nad Kněžnou (Grulich) and Vyškov (Grolich). The other 22 go to a runoff on 16–17 Oct. All five series forecast who wins the seat, so full scores come after round 2. For now we can only score part of it: how much probability each series put on eliminated candidates, and whether its favourite advanced. Tables are on the Scores page.

Interim scores

Pre-registered benchmarks

Surprises

Round-2 forecasts

Same procedure as on 5 Oct. First AI: the agent got its previous forecast, the round-1 results and the news, with no model and no odds. We saved that forecast. Only then AI + model: the same agent also got the round-2 statistical model (the runoff layer, now with the actual round-1 shares). A separate red-team checked each step. We locked 17 districts in a commit on Saturday at 22:01 (3dd3820), and Praha 1, 5, 9, Brno and Žďár on Sunday morning on the final count (commit f4179ec, 8:23). We did not open STEM's forecasts for CNN Prima before locking, as pre-registered on 8 Oct. We will record them as a round-2 benchmark. Runoff odds have not been posted yet by Fortuna or Tipsport (checked Sunday 8:25), so round-2 Betting and Blend will follow once they are.

Mistakes and fixes

New sources

Addendum (Sun 11 Oct, evening): first runoff odds

For round 2 Tipsport posted a "who gets more votes" market (a two-candidate duel), so far for only 11 of 22 districts: Cheb, Louny, Plzeň, Pelhřimov, Příbram, Praha 5, Praha 9, Praha 1, Kladno, Česká Lípa and Kolín. The Moravian districts and Hradec Králové are missing. Fortuna offers no Senate market at all (checked 19:55). We read the odds only after all our runoff forecasts were locked.

Pre-registered: the scored Betting series (and Blend built from it) for round 2 = the last odds reading before betting closes. Opening and today's odds are reference only. The prices are still settling, as Kladno shows. Districts nobody posts by the close will have no Betting or Blend number and are scored separately. Odds of 1.01 are Tipsport's floor, so they only say "clear favourite", not a precise probability.

Clarification (12 Oct): by 20:20 Tipsport had posted all 22 districts (Kladno already 1.65 : 2.08, Šípová about 55 %). The pre-registered rule above stands unchanged. The new odds reading is in the 12 Oct journal entry.

Next

Runoff odds, and from them Betting and Blend. STEM's forecasts recorded as a benchmark. Runoff on 16–17 Oct. Then full scoring of all five series, the 9 Oct freeze and the round-2 forecasts scored separately.

2026-10-09 — Day 8: freeze. These are the forecasts we will score

The forecasts are frozen. A final news check (10:25–10:35) found nothing that changes the race in any district. We therefore locked AI and AI + model unchanged at 10:35, before reading the odds (commit ced8415). The 9 Oct snapshots are the ones we will score: AI, Statistical model (as of 3 Oct), AI + model, Betting (odds read 10:36–10:42) and Blend. Polls open today at 14:00. Note: this page went live only in the afternoon, after the polls had opened. The forecasts are unchanged; the commit times in the repository show they were made before 14:00 (lock 10:35, build 10:42).

What changed

Recorded in advance: odds during voting

Fortuna closes its markets today at 14:00, but Tipsport takes bets until Saturday 12:00, i.e. during voting. Later odds already reflect events during the election, such as turnout reports. Comparing them with our Friday forecasts would be unfair. Therefore:

New sources today

Mistakes and fixes

  1. A headline is not the content. In the first log entry we assigned the Poruba story to the Ostrava Senate district based on the headline alone. It was about the municipal election. It had no effect on the forecasts (step A/B was skipped anyway). Fix: always open any source that could change a forecast; the headline is not enough.
  2. Tipsport does not allow its pages in a frame, so we opened the detail pages of the ten districts whose “Yes” price changed one by one (8 s apart). In the other 17 districts the “Yes” price did not change and the “No” price is carried from 8 Oct, as on previous days.

Evening addendum (21:15)

The forecasts are frozen and none of this changes them. We only record what happened on the first day of voting.

Next: on Saturday after 14:00, round 1 results from volby.gov.cz. We will score runoff qualification for all five series, compare with Seznam Zprávy and Wikipedia, and test the home-base hypothesis. Then we re-run the model with the actual results and update for round 2. Those updates will be locked before we see the STEM predictions.

2026-10-08 — Day 7: last day of the campaign, AI unchanged, a Wikipedia benchmark pre-registered

AI and AI + model are unchanged. The news from the last day of the campaign and the reactions to Wednesday's leaders' debate contained nothing that changes the race in any district. The snapshots were locked at 16:47, before reading the odds. These versions of AI and AI + model will very likely be the ones scored. By 12:00 tomorrow we will change them only if a major fact appears.

What changed

Recorded in advance: a Wikipedia benchmark

We collected daily Czech Wikipedia pageviews of the candidates' articles (1 Aug–7 Oct; 93 of 154 candidates have an article). We do not use them as an input, because attention is driven mostly by scandals and famous names. After the election we will score them as a simple benchmark: the most-viewed candidate in a district wins (average 24 Sep–7 Oct). This rule predicts:

3 Tsoukernik · 6 Steiner · 9 Řehka · 12 Ušatý · 15 Chalupský · 18 Štěpánek · 21 Šarapatka · 24 Pecková · 27 J. Čižinský · 30 Gerloch · 33 Linhart · 36 Půta · 39 Sobotka · 42 Sehnal · 45 Nebeská · 48 Grulich · 51 Šmarda · 54 Rédová Fajmonová · 57 Grolich · 60 Papoušek · 63 Obrtel · 66 Kohajda · 69 Lisková · 72 Šimetka · 75 Szyja · 78 Goláň · 81 Balaštíková

The most-viewed candidate is the market favourite in 13 of 25 districts and the AI + model favourite in 9. We also tried Google Trends, but for Senate districts it returns mostly zeros and confuses namesakes, so we do not use it. The data are in the repository.

Recorded in advance: the home-base hypothesis

We suspect our statistical model underrates candidates with a large home base (see Mistakes and fixes). So that we cannot choose the group after seeing the results, we defined it mechanically from ČSÚ data: a sitting mayor of a municipality that is home to at least 15 % of the district's voters.

Metric: actual round-1 share minus the statistical model's mean. Comparison group: all other candidates the model gives at least 15 %. Hypothesis: home-base candidates beat the model by at least 3 pp more on average than the comparison group. Refuted if the difference is zero or negative. Limitations: six candidates is a small sample. Poruba mayor Baránková Vilamová drops out because ČSÚ data do not split Ostrava into city districts.

Recorded in advance: a rule for Saturday's STEM predictions

CNN Prima announced that on Saturday, once about 80 % of the votes are counted, it will publish runoff win probabilities from STEM analysts. It published no forecast before round 1. To keep our post-round-1 updates from echoing them, we will make and lock our updates with a commit before looking at the STEM numbers. We will then record those as an external benchmark for round 2, just as the Seznam Zprávy model serves for round 1.

New sources today

Today's sources were only logged; none of them changed the forecasts.

Mistakes and fixes

  1. A second research gap: geography within a district. ČSÚ municipality-level data show that in 2020 Vrána won the city of Přerov 55:45 in the runoff and lost only in the countryside. Our model knows the “mayor” role but not the size of a candidate's home base or the opponents' bases. Similarly, Šípová (Kladno) lives in Doksy, outside the district, while Paták is from Kladno, home to 45 % of the district's voters. Historically, however, a home base does not win automatically: mayors of a district's largest town reached the runoff only 27 % of the time in 2020–2024. Why we did not change the forecasts: every finding points towards the market, and we ran the analysis because of a disagreement with the market. A change the day before the freeze would be a hidden move towards Betting. Fix: model v2 gets a “home-town share of voters × role × party” variable and municipality-level history. After round 1 we will measure whether candidates with a home base systematically beat the model.
  2. Yesterday's Tipsport imputation held up. In Brno (5.62) and Frýdek-Místek (1.67) the imputed “No” price matched the actual one exactly. Today we opened pages more slowly and Tipsport did not block us.

Next: on Friday morning a last quick news check and the closing odds. Forecasts freeze by 12:00; round 1 results come on Saturday.

2026-10-07 — Day 6: AI unchanged, a gap in candidate profiles, the market warms to Volfová

AI and AI + model are unchanged today. We went through the last two days of news on all 154 candidates and found nothing that changes the race in any district. The blind snapshots were locked with a commit at 21:42, before reading the odds. They are identical to 6 Oct.

What changed

Odds were read around 21:45–22:10, during or just after the evening leaders' debate. The moves since yesterday therefore cover the whole day, and we cannot separate the effect of the debate.

New sources today

Today's sources were only logged; none of them changed the forecasts.

Mistakes and fixes

  1. Missing profiles of “minor” candidates. The 2 Oct research ran without web search (the limit was used up), so candidates outside the main pair lack a CV. Today we found two cases. Jan Klas (Kladno, Naše Česko) ran Czech air traffic control (ŘLP) for 19 years; we treated him as a generic minor candidate. Petr Korč (Frýdek-Místek) was removed as mayor by the city council in June; our research only knew the post was vacant. Why we did not change the forecasts: we looked into Klas because the odds moved yesterday. A market-triggered update would turn the AI series into a copy of Betting and spoil the comparison. The estimated effect on who wins is also small (1–3 pp), and for Korč even the direction is unclear. Fix: future briefs get a mandatory “CV of every candidate on the ballot” step. After round 1 we will score this gap as a known limitation of the AI series.
  2. Odds seen before the lock. While searching the news, Google showed a snippet from a betting site with odds for Praha 5, 9 and 1, about an hour before the snapshots were locked. It had no effect today because AI and AI + model were not changed. Fix: news queries now exclude betting sites.
  3. Tipsport outage. After 12 detail pages Tipsport blocked access (“betting unavailable”). For the three districts where the Yes price changed (Žďár, Brno, Frýdek-Místek) we computed the No price by keeping yesterday's bookmaker margin. In the ten districts where we had both prices, the margin moved by at most 0.15 % since yesterday. Spot-checks of No prices in unchanged districts (Kladno, Hradec Králové) confirmed they had not moved.

Next: news and Betting for the last time on Thursday. Forecasts freeze Fri 9 Oct by 12:00.

2026-10-06 — Day 5: poll blackout, AI unchanged, market move in Kladno

The poll blackout started today. The last day's news contained nothing that changes the race in any district, so under our rules AI and AI + model were not changed. We still locked the blind snapshots with a commit before reading the odds. They are identical to 5 Oct.

What changed

External benchmark: the Seznam Zprávy data model

On 5 Oct Seznam Zprávy published a data model. It estimates only ANO candidates' chances of reaching the runoff and their round-1 shares, in two scenarios. We saw it on 6 Oct. We do not use it as an input: its numbers are stored separately and are kept out of the agents' materials. After round 1 we will compare its middle scenario with our statistical model and AI + model on the 23 ANO candidates (Brier on advancing and error in vote share).

Recorded in advance: Seznam Zprávy expects 13.4 ANO candidates to advance in the unfavourable scenario, 17.3 in the middle and 21.2 in the favourable one. Our statistical model expects 14.5. On the Seznam Zprávy scale (16 or fewer = failure) we therefore forecast a weak round 1 for ANO. The biggest differences from the Seznam Zprávy middle scenario are Hradec Králové, Zlín, Znojmo and Praha 5 (ANO weaker in our model) and Vyškov (stronger in ours).

New sources today

Today's sources were only logged; none of them changed the forecasts.

Mistakes and fixes

  1. Missing list of Tipsport markets. Yesterday we had recorded market IDs for only half of the districts. Fix: we found the category page with all 27 districts and recorded the IDs in our procedure.
  2. Simplified Tipsport reading. The overview page shows only the “Yes” price. We opened the detail only for the five districts where the Yes price changed and carried the “No” price over from 5 Oct for the rest. Risk: small, if only the No price moved. From tomorrow we will spot-check No prices.
  3. A bug in the site generator. The “What's new today” box crashed when comparing Betting with the previous day, because the market snapshot stores its distribution in a different shape. Today was the first day a previous market snapshot existed. Fix: we fixed the loader. No snapshot changed.

Next: news and Betting again on Wednesday and Thursday. Forecasts freeze Fri 9 Oct by 12:00.

2026-10-05 — Day 4: five series — AI, Statistical model, AI + model, Betting, Blend

Today all series appear for the first time. The order was fixed: first the AI update without the model (step A), then the AI with the model as input (step B). Both blind snapshots were locked with a git commit at 15:24. Only after that did we start reading odds (Fortuna from 15:35, then Tipsport).

What changed

Mistakes and fixes

  1. Bugs in the statistical model's inputs. While auditing the inputs in step B, the agents found about a dozen bugs:
    • the “mayor” flag also fired on “former mayor”;
    • former senators were matched by name only, so namesakes got mixed up (two Martin Dvořáks);
    • a municipal coalition list was credited in full to every member party;
    • the 2018 Prague list “Praha 7 SOBĚ” was not mapped;
    • SLK was missing from the opposition bloc;
    • KSČM had a zero base;
    • calibration gives every minor candidate a floor of about 2 %.
    Fix: we deliberately leave model v1 unchanged today, so that the Statistical model series changes only when its inputs do. The agents logged the bugs as deviations with reasons, and the fixes go into model v2 after round 1, published as a new version.
  2. Double-counting informal backing. In Vyškov and Litovel the agent re-ran the model with informal support “coded in” from parties not on the ballot. The training data is not coded that way, so the effect would have been counted twice. Fix: we added a rule (no model re-runs, only a moderate deviation above the typical level), and an independent review corrected both districts before the lock. Vyškov stayed around 76 %; Litovel is Ošťádal 36.5 % and Kohajda 31 %.
  3. Channels through which odds could leak. We found two:
    • the news file given to the agents contained our note about the model's favourite;
    • the agent's auto-loaded memory contained numbers from an earlier market step for Plzeň, Brno and Kladno.
    Fix: both were cleaned during the run, and the affected districts log it as a contamination risk. We cannot fully guarantee they are clean.
  4. A bug in the update tool. It copied the final (market-aware) number as the default “previous probability” instead of the blind one. The agent caught it in Plzeň. Fix: the updates started from the blind number; the tool fix comes before the next update.
  5. An unclear market definition. It was not clear whether Fortuna's market means the round-1 winner or the elected senator. Resolution: Tipsport explicitly says “overall”, and its numbers match Fortuna's, so we treat both as the seat winner. Fortuna's margin is high (11–78 %).
  6. Tipsport rate limiting. The site temporarily blocked betting during fast browsing. Fix: slower reading with pauses. We have odds for all 27 districts from both bookmakers.

Expectations recorded in advance (5 Oct, before any results)

Nobody knows the results yet. So we write down now what we expect from each series, so that after the election we can also check our own read of where our weaknesses are.

Main hypothesis. In 9 districts the market has a different favourite from AI + model: 3 Cheb, 9 Plzeň, 15 Pelhřimov, 21 Praha 5, 27 Praha 1, 30 Kladno, 63 Přerov, 66 Litovel and 69 Frýdek-Místek. Two theories clash here. Ours says what matters is the breadth of coalition support and ANO's weakness in runoffs. The market trusts personal brands, local leaders and ANO candidates. Whoever calls more winners in these 9 districts will decide the series ranking more than the other 18 districts combined.

How we will score it. The 27 districts are strongly correlated, so differences in mean Brier will not be statistically significant. Besides the overall score we will therefore publish a paired district-by-district comparison and a separate analysis of the 9 disputed districts.

Next: the poll blackout starts Tue 6 Oct. AI changes only on new facts; Betting is read daily. Forecasts freeze Fri 9 Oct by 12:00, and the last version before 14:00 is the one scored.

2026-10-04 — Day 3: getting ready for Monday, media sweep, numbers unchanged

We did not change any forecasts today, on purpose: the AI blind is still from 2 Oct and the model from 3 Oct. We are collecting new information and will fold it into one joint update on Monday. That update goes through the full pipeline, including an independent red-team, once the last polls before the blackout are out.

What we did

Mistakes and fixes

  1. We stated the poll-blackout time without checking it (“Monday 22:00”). Fix: the ban on publishing polls starts 3 days before election day, i.e. Tue 6 Oct. We could not verify the exact wording of the new law, so we state it as an assumption. We will keep searching for polls until Monday evening.
  2. The agent's search tool is exhausted. Fix: we search via the browser (Google with a last-week filter). Sites that block content behind a cookie consent are opened only with the operator's approval.
  3. A wrong assumption about the TV schedule. We looked for Otázky Václava Moravce, but the Sunday show is now called Poledne s Moravcem. The outcome was unaffected, but it is a reminder to verify small things too.
  4. Risk of odds contamination. A search result showed an article on bookmakers' favourites. Fix: we did not open it and logged it. The blind forecast must stay free of odds until it is locked.

Monday 5 Oct: a final poll search, then an AI update of all 27 districts with the statistical model as input, locking the blind forecast, and only then the market and final numbers.

2026-10-03 — Day 2: a statistical model as a second series

What we did: we built a statistical model following the design note “Model predikce senátních voleb 2026” and publish it as a separate series. The description is on the Model page. The model sees no odds. In validation on 81 districts from 2020–2024 it beats simple rules: Brier 0.673 vs. 0.770 for the best heuristic.

Where the model and the AI agent disagree: Praha 5 (model Sáblík 68 %, AI Láska 46 %), Praha 1 (Padevět 70 % vs. Čižinský 54 %), Pelhřimov (Med 75 % vs. 45 %) and Karviná (Brzyszkowská 40 % vs. 65 %). These are districts with strong local or independent candidates. After the election they will show whether the agent adds information or noise.

Mistakes and their fixes

  1. The first version picked the right favourite in only 41 % of districts. Cause: incumbents were detected from the word “senator” in the occupation field, which is often missing. Fix: incumbency now comes from the full ČSÚ election history, including name changes (Šípová → Sucharda Šípová).
  2. In 2020 the model overrated ANO candidates by 10–15 points. Cause: a governing party gets a lower share in Senate elections than in Chamber elections, and validating without 2020 left no other cycle with ANO in government. Fix: an interaction between base and government party. There is only one such cycle in the data, so we list it as a limitation.
  3. The model underrated STAN and KDU-ČSL candidates. Cause: they are mayors' parties and do better in the Senate than their Chamber base suggests. Fix: party effects for STAN and KDU-ČSL.
  4. The model was overconfident. In the 70–90 % bucket only 32 % won. Fix: calibration on validation data. It is fitted on the same data, so it is slightly optimistic.
  5. The model couldn't see local movements (Praha sobě, SLK, SEN 21, Rozvíjíme Hradec…). Fix: a local base from municipal elections. Brier improved from 0.693 to 0.673.
  6. Artefact: the SOCDEM candidate in Karviná jumped to 43 % because of ČSSD's strength in the 2022 municipal elections, even though the party has collapsed nationally. Fix: established national parties don't count toward the local base.
  7. The Wikipedia poll table couldn't be found through search (the English site has no 2029 polling page). Fix: we took the data from Czech Wikipedia via its API. The result is an average of four pollsters instead of snippets from research.

Next (Mon 5 Oct): district polls before the blackout, an AI update with the model as input, locking the blind forecast, then the market.

2026-10-02 — Day 1: blind forecasts for all 27 districts

We ran the full pipeline for all 27 districts. Brno 60 and Kladno 30 had older forecasts from 21 Sep, so they got a fresh blind update. No stage saw betting odds.

Big picture: in 26 of 27 districts the favourite is an opposition candidate. The only exception is Karviná (75), where ANO defends an open seat. ANO often reaches the runoff but has a long record of losing it, especially when it is in government. The closest races are Pelhřimov (15), Litovel (66), Hradec Králové (45), Praha 5 (21) and Plzeň (9).

What went wrong and how we caught it:

Pre-publication check: we checked all districts against the official ČSÚ candidate register (volby.gov.cz). Every candidate the model uses is on the ballot, and the model leaves out no one significant. We did fix some labels: the Cheb incumbent is Miroslav Plevný, not Jaroslav. In Kladno, Adéla Sucharda Šípová was nominated by the Pirates on behalf of a Greens/STAN/Pirates/TOP 09/SEN 21 coalition. The site now takes names and lists straight from ČSÚ data.

Reflection: why it happened and what we do about it

  1. Construction errors in the runoff table (4 districts plus Plzeň). Cause: the model estimated runoff-pair probabilities by hand, separately from round-1 shares, and the two contradicted each other. Fix: pairings are now derived by simulation directly from round-1 shares, so consistency holds by construction. Some districts already did this. Next time it will be a mandatory deterministic script, not model judgement.
  2. An error in the shared brief (2022 not marked as an ANO-in-opposition year). Cause: one brief was sent to 24 parallel runs without a fact check, so the mistake was copied everywhere. Fix: shared base rates get an independent check before fan-out. Districts started before the fix will be checked at their next update.
  3. Unreachable web. The search budget ran out and many sources are unreachable: volby.gov.cz is a JavaScript app, iROZHLAS returned 403, regional Deník is paywalled. Research often relied on Wikipedia alone. Cause: the tool that fetches pages as text can't handle JS-rendered pages, and search has a hard per-session cap. Fix: (a) fetch ČSÚ data once, centrally, via its JSON interface into a shared cache, instead of in every district; (b) use a real browser for unreachable pages; (c) raise the search cap and plan searches up front instead of exhausting them on the first districts.
  4. Insufficient independence between stages. Because of a concurrency limit, in some districts one model did research, forecast and red-team. Fix: smaller waves instead of launching everything at once, with the red-team always a separate agent. We re-ran independent red-teams in the 4 affected districts; only one changed (Praha 5, by 3 points).
  5. “Recalibration” without new evidence (Kladno 45 → 55). Cause: the update re-ran the model on unsupported assumptions and presented it as a refinement. Fix: a new rule that any move of more than 3 points without new evidence must pass an independent red-team. Here it pulled the number back to 51.
  6. Stale forecasts. Earlier questions taught us that the biggest misses came not from a bad model but from forecasts nobody updated for weeks. Fix: a daily check of every district, even when the answer is “no change”, and a mandatory update after round 1.

Next: the market step (de-vigged odds) and final numbers, then daily news checks until the freeze on 9 Oct 14:00.