# House projection: full extension methods

As of 2026-10-19. Latest eligible fieldwork: 2026-10-15.

## How I estimate each race

I combine recent polls and adjust for patterns in past polling misses. Newer polls and larger samples get more influence, with limits on how much one polling firm can dominate. Repeated questions from the same survey are grouped together.

When polling is scarce, I also use the state or district’s partisan lean, the national environment, incumbency and available earlier election performance. These races receive wider ranges because there is less direct evidence.

## How the simulations work

I simulate 100,000 possible elections. The default links national, state and regional shifts across House and Senate races, while allowing individual races to behave differently. The standard option provides a comparison with separate national errors for the two chambers.

The 50%, 70% and 90% intervals contain those shares of simulated margins. They allow for polling misses and movement before Election Day. Changing the projection updates the map, intervals, table and chamber outcomes together.

## Historical candidate performance

I include a provisional adjustment for how candidates performed in earlier elections compared with the political environment. Prior office, incumbency, recency and comparable district boundaries are accounted for. The adjustment replaces overlapping history terms and is capped at three margin points.

The formula applies consistently to comparable records. Missing or unsupported histories keep the existing treatment. This choice has not established a reliable historical improvement; the full explanation and race effects are in Sources and downloads.

## Candidate adjustments

The scandal controls apply to Senate candidates. They change the joint chamber outcomes, while House race estimates stay the same. The values are judgment calls about possible electoral effects.

Changes apply to the current page; reloading restores the published defaults. Download current projection saves the selected view.

## Fundraising

Senate total receipts are included provisionally in the joint outcomes. House race estimates receive no additional fundraising adjustment.

The existing uncertainty ranges are retained. The full financial comparison, coverage and race effects are in Sources and downloads.

## How seats are counted

A House majority requires 218 seats. In the Senate, I count 51 Democratic-caucus seats or 50 Republican seats as control, assuming the Republican vice president breaks a tie. All elected Senate independents are assumed to caucus with Democrats. Their seats are included in the Democratic caucus, while candidate party labels remain Independent. This is a modeling assumption, not a statement of candidate commitments.

Georgia’s Senate simulations allow for a runoff and further movement between rounds. Alaska and Maine use final-round polling where available, but their ranked-choice outcomes still carry extra assumptions. Unopposed and same-party House contests count toward party control; individual winners are shown only when separately modeled.

## What the historical checks can tell us

I fit each historical forecast using earlier election results, then compare it with what happened. Historical candidate performance and total receipts are included provisionally while testing continues. Other candidate and expert-rating factors remain comparisons when they do not improve those tests.

There are only a few independent election cycles to learn from, and those elections have already informed development. These checks help compare methods but do not guarantee future accuracy. The regional default remains a modeling choice; it has not yet shown a reliable improvement in the historical tests. Some candidate records and older district comparisons are still incomplete.

## Feature decisions

- Richer candidate / district baseline: Comparison only. Average margin error 4.84 → 4.76; probability and close-race checks also apply.
- Richer baseline in unpolled seats: Active. Average margin error 4.84 → 4.73; probability and close-race checks also apply.
- Polling movement: Comparison only. Average margin error 5.32 → 5.32.
- Probability calibration: Adjusted interval widths. Selected from earlier tests; full interval and probability scores are downloadable.
- State / regional / joint errors: Experimental scenario. Default projection; limited history does not establish improved accuracy.
- Demographic errors: Comparison only. Map-matched education and urbanization tested; no reliable improvement in the available elections.
- Respondent overlap across polls: Unavailable. Public aggregates do not identify repeat respondents across firms.
- Senate total receipts: Provisional; included in joint outcomes. Comparable reports through September 30; capped at three margin points. Historical improvement is small and not statistically reliable.
- Historical candidate performance: Provisional current-election adjustment. Comparable prior results replace overlapping history terms; capped at three margin points. Full race effects are in Research.

## Reproduction

Run `run_projection_extensions.py --chamber house` after the baseline model rebuild, or use the existing refresh shortcut. Raw source files are preserved. Shared simulations use 100,000 draws and seed 20261018; interval quantiles use 20,000 draws.

## Detailed records

- [Forecast CSV](<../../house/forecast.csv>)
- [All feature and interval tests](<metrics.csv>)
- [Feature and policy decisions](<analysis.json>)
- [Election-by-election choices](<decisions.json>)
- [Candidate verification register](<../ballots/verification_coverage.csv>)
- [Reviewed candidate lists](<../ballots/verified_candidates.csv>)
- [Nationwide candidate roster and evidence](<../ballots/nationwide_candidates.csv>)
- [Nationwide review summary](<../ballots/nationwide_review.json>)
- [Linked official-source download log](<../../../sources/extensions/nationwide/official_source_reviews.json>)
- [Current House poll selection](<../ballots/current_house_poll_selection.csv>)
- [Joint model and tests](<../covariance_model.json>)
- [Shared-error forecast CSV](<../joint_races_correlated.csv>)
- [Ranked-choice poll scenarios](<../ballots/ranked_choice_paired_poll_scenarios.csv>)
- [Georgia runoff history](<../ballots/georgia_runoff_history.csv>)
- [Source access and download record](<../../../sources/extensions/official-source-checks.json>)
- [Earlier executed audit notebook](<../../../audit/projection_extensions_before_finance_2026-10-20.ipynb>)
- [Validation checks](<../validation.json>)
- [Earlier full model details](<../../House Model - Full Details.html>)
- [Standard-error forecast comparison CSV](<../joint_races_active.csv>)
- [Selected projection and rationale](<../../../sources/projection_publication_policy.json>)
- [Map geography and sources](<../maps/METHODS.md>)
- [Map boundary download record](<../maps/sources.json>)
- [Latest polling refresh](<../../../audit/refresh_2026-10-19/RESULTS.md>)
- [Latest financial report update](<../../../audit/september_adoption_2026-10-21/RESULTS.md>)
- [Total-receipts adjustment and tests](<../provisional_finance/Total Receipts.html>)
- [Total-receipts race adjustments](<../provisional_finance/race_adjustments.csv>)
- [Provisional fundraising assumptions](<../../../sources/provisional_finance_policy.json>)
- [October 20 model review and all variable comparisons](<../comprehensive_reevaluation_2026-10-20/Model Review.html>)
- [Historical performance policy and race effects](<../candidate_performance/Historical Performance.html>)
- [Historical performance by race](<../candidate_performance/race_adjustments.csv>)
- [Matched September candidate totals](<../../../prepared/fundraising/2026-09-30/senate_pairs.json>)
- [September matched-period comparison](<../provisional_finance/september_comparison.json>)
- [September historical scores](<../../../prepared/fundraising/2026-09-30/historical_metrics.csv>)
- [Model research overview](<../Research Overview.md>)


## Earlier model documentation

The earlier complete model description remains in the full-details HTML linked above. Its old conditional assumptions are superseded by the extension decisions in this document.
