Methodology

How the Oracle actually works

No black boxes. Here is every step between a raw poll and the numbers on this site.

A forecast in active development — calibration and backtesting are still in progress, so treat every probability as an early-stage model output.

What this is

This site is an election forecast in active development. Its foundation is a set of weighted polling averages — polls are weighted by a hybrid pollster-quality score and recency, as of the date stamped on each page. On top of that foundation, the Senate Forecast page runs a probabilistic simulation of chamber control and compares the result against prediction-market prices. The shaded bands on the tracker charts are confidence intervals around the polling average.

Where it stands

The probabilities published here come from a Monte Carlo simulation that has not yet been backtested across past election cycles, so treat them as an early-stage model output rather than a settled prediction. As calibration work completes, the uncertainty parameters and market-blend weights will be tuned against historical results and this page will be updated to reflect that.

The generic-ballot “estimated seats” figure is an illustrative translation from a static historical slope. It is a directional indicator only, not a seat projection.

The three trackers

Comparison & nowcast layers

Data & refresh

Polling data is refreshed daily by a scheduled job that runs the model pipeline and publishes static JSON. The heavier hierarchical state-space estimates are intentionally excluded from the published data for performance reasons.

Data sources: VoteHub, Silver Bulletin, Polymarket, Kalshi, state pollster releases. Code & full poll log on GitHub.

Last updated: Jun 20, 2026, 11:56 AM

TRACKER — weighted polling averages only, not a forecast