Senate Primary Results Errors That Skew Forecasts: A Debug Checklist
Checklist to reconcile Senate primary results: identify the feed, decode reporting %, account for late ballots, and verify nomination/advancement rules.

You’re watching Senate primary results jump around, and your forecast (or position) suddenly looks wrong—sometimes even when the page says the count is almost done. When that “reporting %” isn’t what you think it is, the market can reprice on a mirage and you end up chasing noise.
This troubleshooter gives you a quick checklist to debug what you’re seeing: which feed you’re actually reading, what the completion indicator really measures, why progress can stall or go backward, how late mail/provisional/write-in processing can change margins, and when the “winner” is only advancing to a runoff or general election.
Inventory your feed
Before you interpret any “jump” in senate primary results, do a two-minute inventory: who is publishing the numbers, and what their “reporting %” is actually measuring. If you skip this, you’ll compare apples (modeled completion) to oranges (reporting units) and call it momentum.
Spot the provider
- State/county site (ENR systems): the page usually looks “official-ish,” but it’s still election-night reporting from local Election Night Reporting (ENR) systems, not a final canvass.
- AP-style feed: results are standardized across jurisdictions, and the progress bar is often an “expected vote” style metric.
- DDHQ-style feed: similar aggregator vibe, but you can sometimes tell from metadata that the feed distinguishes precinct-based reporting from modeled completion.
Whatever you’re reading, record three things right now: timestamp of the last update, the race ID/contest name you’re actually trading, and whether the page labels the data unofficial (most election-night numbers are).
The Center for Election Innovation & Research notes that election-night results are “unofficial estimates”, and small differences between outlets at the same moment often come from media reporting choices, not different underlying votes.
Classify completion metric
- Find the label: is the % called Expected Vote Percentage (EEVP)—a provider’s estimate of what share of the total eventual turnout has been counted so far, and it can change as turnout becomes clearer—or something else?
- If it says precincts reporting—a progress indicator based on how many reporting units have begun reporting, not how many ballots are counted—treat it as non-comparable across states.
- If it’s unlabeled, assume nothing. AP explicitly warns precincts reporting can mislead when early vote is lumped into one “precinct,” or when a precinct is marked reporting after only partial results.
- Watch for denominators that revise. AP’s own terminology allows total precincts reporting to move up or down when proportional precinct methods are used.
- If you have an API view, look for a field that names the reporting type (DDHQ documents a
reporting_typethat distinguishes precinct reporting from “estimated votes”).
Once you can name the provider and the progress metric, a “reporting %” stops being a signal by itself—and becomes a thing you can audit.
Progress isn’t linear
Election-night senate primary results rarely arrive as a smooth, increasing “% complete.” They arrive in chunks, and some progress indicators are about units reporting, not ballots counted.
-
Precincts-vs-votes confusion (plus partial precinct releases): A precinct can be marked “reporting” after it posts anything, even if later batches from that same precinct are still coming in. And some jurisdictions don’t report mail/absentee ballots inside each precinct at all—they create separate “absentee ballot precincts” that combine those ballots into a single reporting unit, which makes the map of precincts look “done” while a large vote category is still updating.
-
A-Reports (AP) drop early vote as a single unit: An A-Report—AP’s term for an advance-vote report (absentee/early, or a combination)—may include only some advance votes, and AP notes it “predominantly” shows up as one or zero precincts reporting. That’s why you’ll see a big early move (or no move) that looks disconnected from the precincts bar.
-
Proportional precincts (AP) can make the denominator move: Proportional precincts—AP’s proxy way to express “precincts reporting” when physical precinct reporting doesn’t map cleanly (think vote centers or all-mail style reporting)—can behave unlike county-site precinct counts. In San Bernardino County’s example, 731 of 2,065 precincts had no registered voters, and those “zero-voter” precincts may not get reported until the end—so “precincts reporting” can jump late, or look stalled, for reasons that aren’t vote counting.
If “reporting” looks stuck or backwards, treat it as a reporting artifact first—and go find which ballot category or denominator just changed.

Late ballots move margins
Near-100% reporting can still be missing whole ballot categories. During the official canvass—the post–Election Day process where election offices verify and finalize results (including provisional ballots, cured signatures, and late-eligible mail ballots) before certification—those categories get added, and close margins can swing.
California is a clean example of why this happens: counties can start processing vote-by-mail envelopes 29 days before Election Day, and they must start reporting results to the Secretary of State within 2 hours of beginning the post–poll-close tally—yet the count still legally changes for weeks.
| Post–Election Day bucket | Why it hits late | California deadline / timing anchor |
|---|---|---|
| Vote-by-mail received after Election Day | Mail travel + eligibility window | Must be received by E+7 if postmarked on/before Election Day |
| Provisional ballots | Eligibility must be verified | Added during the 30-day canvass |
| Conditional voter registration ballots | Registration verified after Election Day | Added during the 30-day canvass |
| Signature cure / verification fixes | Voter fixes missing/mismatched signature | Added during the 30-day canvass |
| Unresolved write-ins | Write-ins reviewed and adjudicated | Can suppress totals/percents until canvass review |
| “Almost done” reporting vs actual deadline | Reporting obligations ≠ finish line | Counties count/report ballots by E+13 (with listed exceptions); canvass runs 30 days; state certification is E+38 |
| 1% manual tally (audit step) | Required hand-check during canvass | Public 1% manual tally during canvass |
If you’re watching senate primary results in a tight race, the question isn’t “what % is reporting?”—it’s “which of these buckets is still legally eligible to be added?”
Nomination rules traps
Some “errors” in senate primary results are really rule mismatches: you’re reading a clean feed, but applying the wrong definition of what the primary decides. The fix is to ask one question up front: does this primary nominate, or does it only advance candidates to the next round?
Advancement vs nomination
- Identify the office type before you interpret the leaderboard. In California, many offices are voter-nominated offices (California’s term for offices— including U.S. congressional offices—using a top-two primary where all candidates appear on one ballot), so the primary is an advancement filter, not a party nomination.
- Translate “first place” into the actual outcome. In a top-two system, “winning” the primary is less important than being top two, because that’s what advances to the general election regardless of party preference.
- Do the same translation in Alaska. Alaska uses a Top Four Primary (a nonpartisan primary where all candidates run together and the top four advance), and the Alaska Division of Elections has stated candidates may no longer skip the primary and appear directly on the general-election ballot.
- Match the market’s contract language to the rule. If the market settles on “wins the nomination,” a top-two/top-four results table won’t answer it; if it settles on “advances,” it will.
Closed-party runoffs
- Stop treating Louisiana as a jungle-primary feed by default. Louisiana’s Secretary of State says Closed-Party Primaries begin in 2026 for offices including U.S. Senate, which breaks the common “all-candidates-together” mental model.
- Read the trigger condition as the result. The closed-party primary is majority-required, with a runoff if needed—so “primary results” may describe only round one of the nomination.
- Separate nomination from the general. For these offices, Louisiana’s general election does not require a majority, so your forecast needs two different rule checks: nomination threshold now, plurality later.

Reconcile before trading
Use one repeatable ingestion pass that handles the known election-night feed failure modes (zeroed uncontested races, mismatched completion metrics, and write-in remainders) so senate primary results don’t whipsaw your model (or your settlement expectations).
-
Detect “zeroes that aren’t real.” An Uncontested (DDHQ API) race—only one candidate on the ballot that DDHQ flags
uncontested—will have vote totals zeroed out in the feed; treat those zeros as “not collected”, not as a sudden wipeout. Keep votes as null and record the uncontested outcome separately. -
Choose a source-of-truth order, then stick to it. Don’t average outlets. Either (a) anchor on the jurisdiction’s machine-readable official feed/ENR so there’s no “aggregator in between,” or (b) anchor on a national aggregator for consistency across states—but then you’re accepting that the aggregator’s reporting units and conventions may not match the county page one-for-one.
-
When two outlets disagree, reconcile by metadata first. In DDHQ, log
reporting_typeso you can tell precinct-based reporting from modeled “estimated votes” before you compare totals. -
Flag “math that won’t add up” instead of forcing it. If candidate percentages don’t sum to 100%, check whether Unresolved Write-Ins are suppressing the remainder until canvass review; county explainers (for example, San Bernardino County’s) explicitly call this out as a reason totals/percents can look “off” on election night.
-
Define your lock point. Certification—the formal step when election officials finalize and publish the official results after canvass—is the only number you should treat as final for settlement-grade records.
-
Sanity-check market reaction before you chase every tick. A quick glance at MarketsPrediction’s cross-platform odds, volume/liquidity, and “Last updated” timestamp tells you whether venues actually repriced on the same results narrative.
Audit the feed before you act
When a Senate primary screen makes your forecast look suddenly wrong, assume the display is lying before you assume the electorate moved. Your first move is to name the provider and the completion metric you’re actually looking at, then trace any “jump” to a reporting unit change, a revised denominator, or a ballot bucket that’s still legally eligible to arrive after Election Day. Next, confirm the rule your market (or model) is settling—nomination vs advancement vs runoff trigger—so you’re not trading the wrong definition of “winner.” Treat certification as the only finish line, and until then, reconcile by metadata and timestamps rather than chasing every tick.
Frequently Asked Questions
- Are election-night senate primary results official, or can they still change after “100% reporting”?
- Election-night senate primary results are unofficial estimates, and the official results are released several days or even weeks after Election Day. Treat any election-night table as a live snapshot, not a final settlement-grade number.
- Is “percent precincts reporting” the same thing as “percent of votes counted” in senate primary results?
- No—“percent precincts reporting” tracks reporting units, not ballots counted, and AP documents ways it can mislead (including early votes lumped into a single precinct and precincts marked “reporting” after partial results). For completeness, prioritize a vote-remaining/expected-vote style measure over precincts reporting when you’re updating a forecast.
- Why don’t the candidate percentages add up to 100% in some senate primary results feeds?
- One common cause is “Unresolved Write-Ins,” which can hold back the remainder until write-ins are reviewed during the canvass. If the totals/percents look “off,” check whether the jurisdiction’s results explanation calls out unresolved write-ins as the reason before you treat it as bad math.
- Why do two sites show different senate primary results at the same time?
- Small differences at the same moment often come from media reporting choices, not different underlying votes. First compare timestamps and update cadence, then confirm you’re looking at the same contest/race before you treat the discrepancy as a real shift.
- Why can ‘precincts reporting’ jump late even when the vote totals barely move in senate primary results?
- Some jurisdictions have precincts with zero voters that may not be reported until the end, which can make the precincts-reporting bar jump to 100% late. When that happens, treat the jump as a progress-indicator artifact and focus on whether vote totals are still updating.