Call
the Map
FORECAST10 DAYS OUT
← HouseNovember 3, 2026 · 10 days out

Gabe Vasquez is heavily favored to hold New Mexico’s 2nd congressional district. Predicted margin: D+5.7.

Gabe Vasquez incumbent (D)86 in 10085.8%52.8high 56.3 · low 49.4
Greg Cunningham (R)14 in 10014.2%47.1high 50.5 · low 43.6

high / low: vote share (%) in the middle 80 in 100 simulations · * incumbent

About this field

Southern NM border district.

Forecast share averages the simulated vote. Win chance counts how often a candidate wins. A wider range of outcomes can give a candidate a higher win chance despite a lower average share.

Likely D80% range · margin points R+1.1 to D+12.7Democratic-held seat

Forecast history

Steady0.0 pts · Oct 22 → Oct 24NM-02 U.S. House: steady — the published margin moved 0.0 points between the Oct 22 and Oct 24 editions (3 of 43 stored editions). This is movement of the published forecast between editions.
D+5EVENAug 1Nov 3 · Election Day

Latest reading · Oct 24 · first published Sep 9 · 80% range · margin points R+1.1 to D+12.7. Methodology

Hover the line, tap it, or use the arrow keys to read the margin on a day.

About this series

Reconstructed with the current model Aug 1 – Sep 8 and Sep 16 – Sep 18; published readings Sep 9 – Oct 24. Each reconstructed day is the current model on that day’s own inputs, not a forecast published then. Corrections are dated in the changelog.

Faded: CTMM 2.2 reconstructed history: computed after the fact with each date's available polls and environment, without expert ratings; not an issued forecast. Issued forecasts begin at the launch marker.

CTMM 2.2 readings for 2026-09-16, 2026-09-17, 2026-09-18 were computed after the fact with each day's available inputs: no edition was issued on those days. Not an issued forecast.

Data table
DateMarginChance80% rangeReading
Oct 24D+5.7D win 85.8%R+1.1 to D+12.7Published forecast
Oct 23D+5.7D win 85.7%R+1.2 to D+12.6Published forecast
Oct 22D+5.7D win 85.6%R+1.2 to D+12.6Published forecast
Oct 21D+5.7D win 85.6%R+1.2 to D+12.6Published forecast
Oct 20D+5.7D win 85.4%R+1.3 to D+12.6Published forecast
Oct 19D+5.6D win 85.3%R+1.3 to D+12.6Published forecast
Oct 18D+5.6D win 85.2%R+1.3 to D+12.5Published forecast
Oct 17D+5.6D win 85.2%R+1.3 to D+12.5Published forecast
Oct 16D+5.6D win 85.0%R+1.4 to D+12.5Published forecast
Oct 15D+5.5D win 84.9%R+1.4 to D+12.5Published forecast
Oct 14D+5.5D win 84.8%R+1.4 to D+12.4Published forecast
Oct 13D+5.5D win 84.7%R+1.4 to D+12.4Published forecast
Oct 12D+6.3D win 87.1%R+0.8 to D+13.5Published forecast
Oct 11D+6.3D win 87.1%R+0.8 to D+13.5Published forecast
Oct 10D+6.3D win 87.1%R+0.8 to D+13.5Published forecast
Oct 9D+6.3D win 87.0%R+0.9 to D+13.4Published forecast
Oct 8D+6.2D win 86.9%R+0.9 to D+13.4Published forecast
Oct 7D+6.2D win 86.8%R+0.9 to D+13.4Published forecast
Oct 6D+6.2D win 86.5%R+1.0 to D+13.3Published forecast
Oct 5D+6.1D win 86.6%R+1.0 to D+13.3Published forecast
Oct 4D+6.1D win 86.4%R+1.1 to D+13.3Published forecast
Oct 3D+6.1D win 86.4%R+1.1 to D+13.2Published forecast
Oct 2D+6.0D win 86.4%R+1.1 to D+13.2Published forecast
Oct 1D+6.0D win 86.2%R+1.1 to D+13.2Published forecast
Sep 30D+6.0D win 86.2%R+1.1 to D+13.2Published forecast
Sep 29D+6.0D win 86.1%R+1.2 to D+13.2Published forecast
Sep 28D+6.0D win 86.0%R+1.2 to D+13.1Published forecast
Sep 27D+5.9D win 85.8%R+1.3 to D+13.1Published forecast
Sep 26D+5.9D win 85.7%R+1.3 to D+13.1Published forecast
Sep 25D+5.9D win 85.8%R+1.3 to D+13.1Published forecast
Sep 24D+5.9D win 85.6%R+1.3 to D+13.0Published forecast
Sep 23D+5.8D win 85.2%R+1.4 to D+13.0Published forecast
Sep 22D+5.7D win 85.0%R+1.4 to D+12.9Published forecast
Sep 21D+5.7D win 85.0%R+1.4 to D+12.9Published forecast
Sep 20D+5.7D win 85.0%R+1.4 to D+12.9Published forecast
Sep 19D+5.7D win 84.9%R+1.5 to D+12.9Published forecast
Sep 18D+5.7D win 84.9%R+1.5 to D+12.9Reconstructed with the stated inputs
Sep 17D+5.7D win 84.8%R+1.5 to D+12.9Reconstructed with the stated inputs
Sep 16D+5.7D win 84.6%R+1.5 to D+12.9Reconstructed with the stated inputs
Sep 15D+5.6D win 84.2%R+1.6 to D+12.8Published forecast
Sep 14D+5.6D win 84.2%R+1.6 to D+12.8Published forecast
Sep 13D+5.6D win 84.1%R+1.6 to D+12.8Published forecast
Sep 12D+5.5D win 83.9%R+1.7 to D+12.7Published forecast
Sep 11D+5.5D win 83.8%R+1.7 to D+12.7Published forecast
Sep 10D+5.5D win 83.7%R+1.7 to D+12.7Published forecast
Sep 9D+5.4D win 83.8%R+1.7 to D+12.6Published forecast
Sep 8D+5.4D win 83.5%R+1.8 to D+12.6Reconstructed with the stated inputs
Sep 7D+5.4D win 83.4%R+1.8 to D+12.6Reconstructed with the stated inputs
Sep 6D+8.1D win 91.2%D+0.6 to D+15.7Reconstructed with the stated inputs
Sep 5D+8.1D win 91.1%D+0.5 to D+15.7Reconstructed with the stated inputs
Sep 4D+8.1D win 91.0%D+0.5 to D+15.6Reconstructed with the stated inputs
Sep 3D+8.0D win 90.9%D+0.5 to D+15.6Reconstructed with the stated inputs
Sep 2D+8.0D win 90.9%D+0.4 to D+15.6Reconstructed with the stated inputs
Sep 1D+8.0D win 90.9%D+0.4 to D+15.6Reconstructed with the stated inputs
Aug 31D+8.0D win 90.8%D+0.4 to D+15.6Reconstructed with the stated inputs
Aug 30D+8.0D win 90.8%D+0.4 to D+15.6Reconstructed with the stated inputs
Aug 29D+8.0D win 90.8%D+0.4 to D+15.6Reconstructed with the stated inputs
Aug 28D+7.9D win 90.7%D+0.3 to D+15.5Reconstructed with the stated inputs
Aug 27D+7.9D win 90.7%D+0.3 to D+15.5Reconstructed with the stated inputs
Aug 26D+7.9D win 90.6%D+0.3 to D+15.5Reconstructed with the stated inputs
Aug 25D+7.9D win 90.6%D+0.3 to D+15.5Reconstructed with the stated inputs
Aug 24D+7.9D win 90.5%D+0.3 to D+15.5Reconstructed with the stated inputs
Aug 23D+7.8D win 90.4%D+0.2 to D+15.5Reconstructed with the stated inputs
Aug 22D+7.8D win 90.3%D+0.2 to D+15.4Reconstructed with the stated inputs
Aug 21D+7.8D win 90.2%D+0.2 to D+15.4Reconstructed with the stated inputs
Aug 20D+7.8D win 90.2%D+0.2 to D+15.4Reconstructed with the stated inputs
Aug 19D+7.8D win 90.2%D+0.1 to D+15.4Reconstructed with the stated inputs
Aug 18D+7.8D win 90.1%D+0.1 to D+15.4Reconstructed with the stated inputs
Aug 17D+7.7D win 90.0%D+0.1 to D+15.4Reconstructed with the stated inputs
Aug 16D+7.7D win 90.0%D+0.1 to D+15.3Reconstructed with the stated inputs
Aug 15D+7.7D win 90.0%D+0.1 to D+15.4Reconstructed with the stated inputs
Aug 14D+7.7D win 89.8%EVEN to D+15.3Reconstructed with the stated inputs
Aug 13D+7.6D win 89.8%EVEN to D+15.3Reconstructed with the stated inputs
Aug 12D+7.6D win 89.8%EVEN to D+15.3Reconstructed with the stated inputs
Aug 11D+7.6D win 89.7%EVEN to D+15.3Reconstructed with the stated inputs
Aug 10D+7.6D win 89.6%R+0.1 to D+15.2Reconstructed with the stated inputs
Aug 9D+7.6D win 89.5%R+0.1 to D+15.2Reconstructed with the stated inputs
Aug 8D+7.6D win 89.5%R+0.1 to D+15.2Reconstructed with the stated inputs
Aug 7D+7.5D win 89.4%R+0.1 to D+15.2Reconstructed with the stated inputs
Aug 6D+7.5D win 89.2%R+0.2 to D+15.1Reconstructed with the stated inputs
Aug 5D+7.4D win 89.1%R+0.2 to D+15.1Reconstructed with the stated inputs
Aug 4D+7.4D win 89.0%R+0.2 to D+15.1Reconstructed with the stated inputs
Aug 3D+7.4D win 88.9%R+0.3 to D+15.1Reconstructed with the stated inputs
Aug 2D+7.4D win 88.9%R+0.3 to D+15.1Reconstructed with the stated inputs
Aug 1D+7.4D win 88.8%R+0.3 to D+15.0Reconstructed with the stated inputs

The polls

Poll average D+3.4A poll’s weight halves every 60 days and grows with its sample, up to one and a half times a 600-interview poll. Each pollster counts once, at its best release. Every poll is counted at its published margin, and a poll sponsored by a party or campaign counts like any other here.The forecast then counts a poll sponsored by a party or campaign at full weight and moves its margin 2 points against that party, which puts the average it reads at D+3.6.3 recorded polls · 3 in the poll average

FieldworkAddedPollsterResultSample
from 2026-10-01Research & Polling ↗D+4.0D 48% · R 44%383 LV
from 2026-08-28SurveyUSA ↗KOB-TV (Albuquerque)D+3.0D 46% · R 43%554 LV
from 2026-04-26co/efficient (R) ↗NRCCD+2.0D 43% · R 41%879 LV
Explore all 3 polls for this race

How the margin was built

Follow each contribution to the margin. Wider ribbons mean more percentage points. Tap an input for its calculation and source.

Toward D+12.8
Toward R−7.1
Forecast marginD+5.7

The signed totals combine at the forecast. Displayed values are rounded.

All calculations & sources

This district's measured terrain −1.563 points

Call the Map's partisan lean on the CURRENT district lines, before any current-cycle evidence. Every pull below is measured from here — not from EVEN.

  • Call the Map partisan lean, district geography bound to this forecast edition.
  • Prior source: observed_unchanged_lines.

Fitted model, above the terrain shown +10.764 points

What the fitted model adds on top of the starting terrain above — incumbency, past results, campaign finance and the other fitted terms — measured from that terrain rather than from EVEN. It is a comparison with the starting point already shown, not a separate input. The source detail lists the variables the fit uses.

  • Fitted baseline 9.201 minus starting point -1.563 = 10.764 points.
  • One fitted structural total; this edition does not split it into partisan lean and incumbency.
  • Fundamentals: +9.2 — the district's structural lean before this year's polling, money and candidate quality are added.
  • This edition publishes that as one fitted total. It does not break it into a partisan-lean and an incumbency term, so this page does not invent that split.
  • fundamentals core = 25-term dynamic formula (mass fit over the master feature matrix, held-out-cycle validated; see matrix/feature_dictionary.md + mass_fit_report.json)
  • 40-term formula, held-out validated.

National environment +2.062 points

The contribution to this race’s margin, not the national polling margin itself. The race’s loading, reference level and polling blend determine how much of the national climate reaches its final forecast.

  • Three-source blend, updated 2026-10-14: 53% generic-ballot aggregates (D+7.7) · 28% special-election overperformance (D+9.0 across 46 specials) · 20% approval-implied (D+9.1 from net approval -24.3).
  • Latest polls — generic ballot 2026-10-14 (10 days old), approval 2026-10-14 (10 days old).
  • Generic-ballot average D+7.7 · support factor 0.87 (the share of that channel's capacity the admitted polls carry) — separate inputs; their product is a capacity diagnostic, not a margin.
  • Weights are the 55/25/20 capacities scaled by each channel's evidence and renormalized, so thin polling widens the interval instead of pulling the center toward zero — 12% of the weight is carried that way.
  • Blended national environment: D+8.3.
  • Applied at full strength to this chamber's races.
  • This step’s recorded contribution to the margin is +2.1.
  • Blended national environment: D+8.3 (updated 2026-10-14).
  • Effective poll weight 88%; fundamentals share 12%, carried by the interval (×1.06) rather than by the center.
  • The support factor is the share of the generic-ballot capacity the admitted polls carry; average × support is a capacity diagnostic, not a margin, and is not what the row above multiplies.
  • Applied at full strength to this chamber: +2.1 of this margin.

This race’s polls −5.493 points

What this race’s own recent polling adds beyond its prior. The forecast weights each poll for recency and sample size and counts each pollster once; the weights listed here are those of the polls’ own average.

  • Research & Polling (2026-10-09, n=383): D+4.0 · weight 0.45 in the poll average
  • SurveyUSA (2026-09-02, n=554): D+3.0 · weight 0.35 in the poll average
  • co/efficient (R) (2026-04-28, n=879): D+2.0 · weight 0.10 in the poll average
  • Poll average D+3.4, from 3 polls · 3 recorded polls. This is the polls’ own average, each poll at its published margin, the figure this page’s poll summary shows. The forecast then counts a poll sponsored by a party or campaign at full weight and moves its margin 2 points against that party, which puts the average it reads at D+3.6. The forecast gives the polls 72% of the weight against its structural prior for this race; the recorded polling contribution is −5.5 D. Eligible polls: latest poll: 2026-10-09 (15 days old).

Votes for other candidates −0.004 points

Every step above is measured between the two major-party candidates alone, as if nobody else were on the ballot. The forecast sets 0.1% of the vote aside for other candidates and write-ins, so as a share of every vote cast the gap between the two is smaller by that much. This step is exactly that: the two-party margin times the share going to other candidates. It is the same arithmetic that turns the two-party margin into the two shares printed at the top of the page.

The components this edition publishes for this race, in points. “Other factors” closes the sum to the two-party structural lean exactly. Here the structural lean IS the published margin, so the walk sums to the projection exactly; nothing is left over.

Named factorContribution
FundamentalsThe admitted fitted baseline. Its surviving variables differ by office; the source detail above identifies those used for this race.+9.20
This race's pollsAdmitted head-to-head polls of this race, recency- and quality-weighted.−5.49
National environmentThe national environment’s contribution to the prior. Polling can attenuate its influence; this value is not the national polling margin.+2.06
Other factors0.00

Where the votes are

The map of this race loads here.

Recent elections

ElectionResultVotes cast
2024 · U.S. House ↗D+4.2265,322
2022 · U.S. House ↗D+0.7192,673
2020 · U.S. House ↗R+7.4264,946
2018 · U.S. House ↗D+1.9199,256

Historical district boundaries may differ. Margins are the Democrat’s share of all votes cast minus the Republican’s. Nonstandard ballots are labeled separately.

The money

Bar length compares reported receipts in this race; the tick marks cash on hand. A missing filing stays blank rather than becoming $0.

One more fundraising reportCall the Map · $315

The candidates are comfortably out-fundraising the website covering them. A little rude, perhaps, but statistically unsurprising.

Received so far
$315
Measured compute
$26,188.58

Ko-fi and Buy Me a Coffee supports are counted as each one arrives. Measured compute prices model runs at standard published API rates; it is not what I paid. Hosting, data and subscriptions, the domain and my own time are not counted. Donations buy gratitude, never a forecast adjustment.

Supporters are listed by first name and last initial; a username alone is shortened to its first eight characters. Want your full name shown? Say so in your message. Give privately, or leave the name blank, and you are listed as Anonymous, with the platform and date. Supporters who give a name may also be thanked by name in the newsletter.

Thank you to Tom H., ColoradoFlyer, Chris, EW, gbaileym…, True Independent, MT V., JBL, Erin G., Caroline M., Melanie, MKV and 6 more.

See the public support ledger →

Outside spending

Support + opposition · separate from receipts

For and against Gabe Vasquez$1.7M

12 spending groups
GroupForAgainst
NO GOING BACK PAC INC.$0$1.2M
WILDERNESS ACTION, INC.$130K$0
CIVIC RENEWAL FUND INC.$0$83K
Common Ground Coalition PAC$69K$0
WORKERS EN ACCION PAC$62K$0
BLUE CD2 NEW MEXICO USA$50K$0
MAGA INC.$0$50K
CLF$0$38K
AB PAC$30K$0
PUBLIC LAND WARRIORS FUND$26K$0
Working America$8K$0
Neighbor Voices$2K$0

For and against Greg Cunningham$5.0M

11 spending groups
GroupForAgainst
Ready for the Fight PAC$0$2.5M
CHC BOLD PAC$0$786K
HMP$0$571K
BOLD America$0$526K
CIVIC RENEWAL FUND INC.$266K$0
NO GOING BACK PAC INC.$195K$0
RETIRED AMERICANS ACTION$0$66K
Common Ground Coalition PAC$0$20K
Guardian Super PAC$14K$0
MAKE AMERICA GREAT AGAIN ACTION INC$9K$0
Neighbor Voices$0$366

Includes primary spending. Opposition is recorded against its named target; no benefit to another candidate is assumed.

FEC filings · through 06/30/2026 · Definitions & method

Race context

2024 presidential vote here
271,659
2024 presidential margin
R+1.8between the two parties

Population profile Select a measure for its source and denominator

White alone · 57.8%406,660 of 703,136 · Residents2022 Census · matched race geography

Coverage

Forecast as of October 24, 2026: Call the Map currently has Gabe Vasquez ahead of Greg Cunningham by D+5.7, with an 86 in 100 chance to win. The seat is currently held by a Democrat. That result would keep the seat with Democrats. The current poll average is D+3.4; 3 public polls are recorded.