Election LabU.S. forecasts, with every number traced to its run

TX-21 · House

election-day forecast · ground-up model · as of 2026-10-02

Likely R
11%
Kristin Hook
Democrat
89%
Mark Teixeira
Republican
Expected margin and its 90% range
R+40R+20R+10EvenD+10D+20D+40R+11.4
What moves this district (points of margin; blue toward the Democrat, red toward the Republican)
2024 presidential lean−9.2
2024 House lean−2.8
outside money balance+0.7
hispanic share−0.3
house contested lag4−0.3

The district, in brief

Texas's 21st is a new district for 2026 that takes in the Texas Hill Country, including Fredericksburg, Boerne, Kerrville and Bandera, along with Comal County including New Braunfels, most of Hays County including San Marcos, Wimberley and Dripping Springs, and most of northwest San Antonio with Alamo Heights, Castle Hills, the eastern half of Stone Oak and Fort Sam Houston. The text calls it largely exurban and Republican-held since 1978; in 2024 it gave Donald Trump 60.3% and Ted Cruz 57.7%.

The seat is open. The incumbent, Republican Chip Roy, was elected with 61.9% in 2024, ran for Texas Attorney General in 2026 and lost in the primary. The Republican nominee is Mark Teixeira, a former MLB player, who won the primary with 60.9% against a field that included businessman Jason Cahill at 9.5%, former FEC commissioner Trey Trainor and eight others, plus Kyle Sinclair, who withdrew, stayed on the ballot and endorsed Teixeira. A Ragnar Research Partners (R) poll of February 5–7, 2026 had Teixeira at 38% with 40% undecided. Teixeira had raised $3,466,723 by February 11, 2026. The endorsement block that lists Sinclair also names Donald Trump, Greg Abbott, Steve Scalise, Tom Emmer, Jim Jordan, Club for Growth PAC, Turning Point Action and the U.S. Chamber of Commerce. The Democratic nominee is Kristin Hook, who won her primary 60.1% to 28.1% over Regina Vanburg with Gary Taylor at 11.8%; the text gives no background for her. Eldon Dan McQueen, former mayor of Corpus Christi, is listed as an independent. As of April 26, 2026 Teixeira had raised $3,662,596 with $277,335 on hand; Hook had raised $154,023 with $51,860 on hand.

Every rater with a call listed has the seat R: Decision Desk HQ (September 8, 2026), the Cook Political Report (February 6, 2025), Inside Elections (March 7, 2025) and Sabato's Crystal Ball (September 18, 2025). The Silver Bulletin row is dated August 20, 2026 but shows no ranking.

A paragraph quoting a model forecast from the day this brief was written is omitted; the current forecast is at the top of this page.

The facts, each beside its sentence

Incumbent
Chip Roy (R), not running; ran for Texas Attorney General in 2026 and lost the primaryThe incumbent is Republican Chip Roy, who was elected with 61.9% of the vote in 2024 and ran for Texas Attorney General in 2026, but lost in the primary.
Open seat
yesran for Texas Attorney General in 2026, but lost in the primary
Democratic nominee
Kristin Hooknominee2: Kristin Hook party2: Democratic Party (United States)
Republican nominee
Mark TeixeiraMark Teixeira, former MLB player
Republican's background
former MLB playerMark Teixeira, former MLB player
Presidential vote
Trump 60.3% in 2024; Cruz 57.7% in 2024; Republican-held since 1978A Republican-held district since 1978, Donald Trump won 60.3% of the vote in this largely exurban district, which also gave Ted Cruz 57.7%, both in 2024.
Last result
Roy elected with 61.9% in 2024who was elected with 61.9% of the vote in 2024
Lines
New district: Texas Hill Country (Fredericksburg, Boerne, Kerrville, Bandera), Comal County (New Braunfels), most of Hays County (San Marcos, Wimberley, Dripping Springs), and northwest San Antonio with Alamo Heights, Castle Hills, eastern Stone Oak and Fort Sam HoustonThe new 21st district takes in the Texas Hill Country, including Fredericksburg, Boerne, Kerrville and Bandera, along with Comal County including New Braunfels and most of Hays County including San Marcos, Wimberley and Dripping Springs
Primaries
Teixeira won the Republican primary with 60.9% (Jason Cahill 9.5%; the rest of the table is cut off) over a field of ten eliminated candidates plus a withdrawn candidate who remained on the ballot; Hook won the Democratic primary 60.1% to 28.1% over Regina Vanburg and 11.8% for Gary Taylorcandidate: Mark Teixeira votes: 58,180 percentage: 60.9
Raters
Decision Desk HQ: R (Sept 8, 2026); Cook: R (Feb 6, 2025); Inside Elections: R (Mar 7, 2025); Sabato's Crystal Ball: R (Sept 18, 2025); Silver Bulletin row (Aug 20, 2026) shows no rankingDecision Desk HQ R September 8, 2026 The Cook Political Report R February 6, 2025
Money
As of April 26, 2026: Teixeira raised $3,662,596 with $277,335 on hand; Hook raised $154,023 with $51,860 on handMark Teixeira (R) $3,662,596 $3,385,261 $277,335
Also
Kyle Sinclair withdrew from the Republican primary, remained on the ballot and endorsed Teixeira; the endorsement block that lists Sinclair also names Donald Trump, Greg Abbott, Steve Scalise, Tom Emmer, Jim Jordan, several Texas U.S. representatives, Club for Growth PAC, Turning Point Action and the U.S. Chamber of CommerceKyle Sinclair, former vice chair of the Bexar County Republican Party and former candidate for this district
Republican primary poll: Ragnar Research Partners (R) (Feb 5–7, 2026, 400 LV) Teixeira 38%, Cahill 7%, Wheeler 5%, Trainor 3%, undecided 40%Ragnar Research Partners (R) February 5–7, 2026 400 (LV)
Teixeira had raised $3,466,723 by February 11, 2026, against $348,702 for Cahill ($260,000 self-funded) and $345,600 for Michael Wheeler ($224,891 self-funded)Mark Teixeira (R) $3,466,723 $2,459,292 $1,007,430
The eliminated Republicans included Trey Trainor, a former FEC commissioner, and Daniel Betts, the 2024 nominee for Travis County district attorneyTrey Trainor, former commissioner from the Federal Election Commission (2020–2025)
Eldon Dan McQueen, former mayor of Corpus Christi, is listed as an independentEldon Dan McQueen, former mayor of Corpus Chrsti
The Democratic primary section lists two endorsement blocks not labelled by candidate: Texas AFL-CIO, The Austin Chronicle and San Antonio Express-News; and the Austin American-Statesman* The Austin Chronicle * San Antonio Express-News
Hook self-funded $1,417 of her $100,800 raised through February 11, 2026$100,800$1,417 of this total was self-funded by Hook

Not in the source: The text is truncated after the second line of the Republican primary results and the Democratic primary heading and nominee description are missing, so Hook's background is unknown and the full Republican primary table is not given.; No general-election district polls: the only poll is a Republican primary poll, and the model's basis says no district polls.; The Republican endorsement blocks are not labelled by candidate; only Sinclair's endorsement of Teixeira is stated, and the block containing Sinclair is described here without attributing it.; The Silver Bulletin row in the ratings table carries a date but no ranking.; The text does not say whether McQueen is on the ballot; the results table lists only Teixeira and Hook.

Read from the district's section of Wikipedia's state page (CC BY-SA), archived as efe72be7e14a; written by claude-fable-5-1 (batch reader) on 2026-09-30 and checked mechanically: every quote occurs verbatim in the archived text, every number in the brief occurs in the inputs. No probability here is the reader's.

Who holds the seat now

Chip Roy (Republican), in this chamber since 2019, 4 terms. Committees: House Committee on the Judiciary; House Committee on Rules; House Committee on the Budget.

From the congress-legislators dataset (CC0), archived as ae8cb9477c48. For a Senate race this lists both of the state's senators; the one whose term ends in the election year holds the seat on the ballot. For a House district redrawn for 2026 it is the member elected under the old lines with this number, who may be running elsewhere; the dossier above names who is running here.

How it has voted for president

Two-party margin201620202024
PresidentR+24.1R+16.7R+22.9

A shift of 1.2 points toward the Democrats from 2016 to 2024. county returns placed on the current lines by 2020 block population; MEDSL county file (2016), an MIT-licensed county file (2020, checked against certified state results) and MEDSL precinct returns (2024). For a district split across counties this is an estimate, and where the state published the exact 2024 figure for these lines, that exact figure is the one the model uses.

Who are the voters?

Group (adults 25+)Share of adultsTurnout 2020 / midtermShare of a midterm electorateEst. Democratic share, 2020
White, no degree30%62% / 44%30%8%
White, degree28%84% / 68%43%55%
Black3%56% / 39%3%91%
Hispanic32%38% / 26%19%55%
Asian3%39% / 28%2%65%
Other / multiracial3%55% / 40%3%55%

Of about 523,045 adults 25 and over. In 2020 the district voted 41.4% Democratic (two-party) for president. With the same preferences and a 2022-style midterm turnout, it would vote 42.1% Democratic: the midterm electorate alone moves the margin 1.3 points toward Democrats. Group shares are estimated from how results vary across the state's census tracts (ecological inference, anchored to Pew's 2020 validated-voter figures) and calibrated to this district's actual 2020 vote; turnout is the Census survey's state rate by race and national rate by education, whose state samples carry margins of several points.

Not answered here: how each group will vote in 2026. These are 2020 preferences; this profile is description, not yet an input to the forecast.

The money

CandidateRaisedCash on handPAC shareSelf-fundedOutside $ forOutside $ against
Teixeira, Mark Charles (REP)
open seat
$3,922,216$382,2018%70%$930,867$0
Roy, Chip (REP)
incumbent · not on our roster
$782,908$220,7068%0%$6,842$0
Cahill, Jason (REP)
open seat · not on our roster
$382,589$00%68%$0$0
Wheeler, Mike (REP)
open seat · not on our roster
$344,226$00%66%$0$0
Hook, Kristin A Dr. (DEM)
open seat
$243,839$104,0692%0%$0$0
Betts, Daniel (REP)
open seat · not on our roster
$177,457$3060%0%$24,311$0
Rojas, Paul (REP)
open seat · not on our roster
$165,026$156,8621%79%$0$0
Trainor, James E Iii (REP)
open seat · not on our roster
$151,643$645%0%$20,000$0
Enriquez, Ezekiel (REP)
open seat · not on our roster
$114,590$00%47%$4,170$0
Martinez, Weston Charles (REP)
open seat · not on our roster
$26,384$019%53%$0$0
Taylor, Gary Frank (DEM)
open seat · not on our roster
$16,737$910%44%$0$0
Vanburg, Regina Dr. (DEM)
open seat · not on our roster
$13,892$1,8690%23%$0$0
Weber, Daniel (DEM)
open seat · not on our roster
$2,371$2,3350%1%$0$0
Andrade, Javi (DEM)
open seat · not on our roster
$742$7420%0%$0$0

FEC bulk candidate summaries through August 25, 2026; $986,190 of independent expenditures for or against these candidates this cycle (FEC Schedule E, types 24E and 24A), which is the parties' and outside groups' own revealed view of whether this seat is in play.

The district in numbers

MeasureDistrictNationDifference
Bachelor's degree or higher, 25+43.6%34.9%+8.7 pts
White, non-Hispanic54.8%58.2%-3.4 pts
Black, non-Hispanic3.4%12.0%-8.5 pts
Hispanic or Latino35.1%19.0%+16.1 pts
Asian, non-Hispanic2.4%5.8%-3.3 pts
Foreign-born9.2%13.9%-4.7 pts
Median age40.039.20.8
Median household income$91,141$84,362$+6,779
Median home value$374,908$379,737$-4,829
Owner-occupied homes62.8%65.1%-2.2 pts
Unemployment, July 2026 (BLS county data)4.4%4.4%-0.0 pts
Change in unemployment, past 12 months+0.4 pts——
Change since the last election (24 months)+0.4 pts——
Unemployment (ACS)4.6%5.2%-0.6 pts
Federal government workers3.1%2.6%+0.5 pts
Work from home16.3%13.5%+2.9 pts
Households on SNAP5.7%11.8%-6.0 pts
Households with Social Security income29.5%31.2%-1.7 pts
Households with public assistance income1.5%2.7%-1.1 pts
Moved in from another state, past year2.8%2.3%+0.4 pts
Gini index0.400.44-0.04
Per-capita personal income (BEA), 2024$72,022$73,248$-1,226
Per-capita income growth since 2019, nominal, 202432.5%32.0%+0.5 pts
Government and other transfers, share of income, 202417.5%19.6%-2.1 pts
Social Security, share of income, 20225.6%5.8%-0.3 pts
Medicare, share of income, 20224.1%4.5%-0.4 pts
Medicaid, share of income, 20222.3%4.0%-1.7 pts
SNAP, share of income, 20220.4%0.6%-0.2 pts
Earned Income Tax Credit, share of income, 20220.4%0.4%-0.0 pts
Veterans' benefits, share of income, 20222.0%0.9%+1.1 pts
Federal civilian jobs, share of all jobs, 20221.4%1.3%+0.1 pts
Military jobs, share of all jobs, 20221.4%0.9%+0.5 pts

ACS 5-year 2023, assembled from census tracts by the 2020 population of their blocks inside the current lines, because the Bureau has not tabulated these lines; medians are population-weighted means of tract medians. Unemployment is the BLS county series placed on the district by block population, not seasonally adjusted, so changes are same-month comparisons. Income, transfers and jobs are BEA county accounts placed the same way, compared with the average district. Every other figure is a named column of a named table in the Bureau's summary file, archived before it was read. This is what a reader knows about a district before looking at a poll; the model does not yet use it, and whether it should is a registered question.

Who is favoured, and by how much?

89%
Mark Teixeira
run 00a09d4b · house_district_prior/0.2.0 · as of 2026-10-02
-11.4
expected margin, D-R
run 00a09d4b · house_district_prior/0.2.0 · as of 2026-10-02

The 90% interval runs from -26.5 to +3.7 points, D-R. It is wide because this district has never been polled.

What is this built on?

A model trained on every contested House race 2012-2024 predicts this district's lean from its own record: presidential and House results on the current lines, incumbency, both candidates' prior offices, outside and party money before 1 October, demographics and public-assistance shares from the Census release before the election, local unemployment and income, and religious tradition. The national margin comes from presidential approval, the economy, the midterm penalty and the generic ballot corrected for its measured lean. Draws share national and state errors, so the seat total and this district come from the same simulation.

Not answered here: district polls, which are not yet folded in.

Why does the model say this?

Each figure is how far this district's predicted lean moves when that one feature is set to the typical value across 2026 districts, everything else held: 2024 presidential lean (R+20.6): 9.2 pts toward the Republican; 2024 House lean: 2.8 pts toward the Republican; outside money balance: 0.7 pts toward the Democrat; hispanic share (35.7%): 0.3 pts toward the Republican; house contested lag4: 0.3 pts toward the Republican.

How sure is it, and of what?

Total sd 9.18 points, made of the seat's own volatility 91%, correlated polling error 9%. The decomposition is stored with the forecast rather than reconstructed, so a probability whose dominant input is a placeholder is visibly that.

Not answered here: a nowcast. 'If ballots were cast today' needs something that observes today, and for a House district nothing does. Publishing the election-day figure under both labels would make one forecast look like two.

How was this number made?

Run 00a09d4b-7980-4ec5-ada0-077968a87242, house_district_prior/0.2.0, as of 2026-10-02. Promoted by a pre-registered gate: on 2016-2022 its Brier score was 0.036 against 0.049 for the previous method, and on a single 2024 run 0.023 against 0.032 (experiments/district_gate_result.md, with an independent review).