Methodology
How the COYNTOSS polling averages work
Current version v1.2. Version 1 launched November 7, 2026; every change since is in the model changelog.
What goes in
We collect national polls of Trump’s job approval, the 2028 Democratic and Republican primaries, 2028 general-election matchups and the generic congressional ballot, plus state polls of Trump’s approval. Each poll keeps its pollster, field dates, sample size, population and a link to the original release.
Polls come from VoteHub’s public poll API (CC BY 4.0) and from the poll tables on Wikipedia (CC BY-SA 4.0). We use only the poll results themselves, never another site’s average. When the same poll appears in both sources we keep one copy. Where both feeds miss a poll, we transcribe it from the pollster’s own release (its topline or crosstab document, linked on every row) and that copy replaces any feed version of the same survey. This filled a gap of July–September 2026 approval and generic-ballot polls that neither feed carried. We record the time we first saw every poll, so the averages can later be rebuilt exactly as they stood on any day.
One version of each poll
When a pollster reports several populations from one survey, we use likely voters, then registered voters, then all adults.
How polls are weighted
- Recency. A poll’s weight halves every 10 days for approval, 14 days for the generic ballot, 30 days for primaries and 60 days for matchups and state approval. Polls drop out after 60, 90, 180 and 365 days.
- Quiet stretches (approval). When few polls are out, the approval average looks back further: the half-life stretches, up to 30 days, until it covers the 10 newest polls. That keeps one or two fresh polls after a gap from swinging the line on their own.
- Sample size. Weight grows with the square root of the sample, capped between half and double the weight of a 600-person poll.
- Frequent pollsters. A pollster with several polls in the window has each one down-weighted by the square root of its count, so daily trackers do not drown out everyone else.
- Partisan sponsors. Polls sponsored by a party or partisan group count half.
The average for each answer is the weighted mean of the polls. Version 1 does not adjust for house effects or pollster quality; we plan to add both once there is enough data to estimate them honestly, and any change will appear in the changelog.
Betting markets
The 2028 nominee odds come from Kalshi’s public market prices: the midpoint of the best bid and ask for each candidate, refreshed with the daily update. They are shown as Kalshi’s numbers, never blended into our averages.
State, district and precinct approval
Only a handful of states are polled on Trump’s approval in a given year, so the state map is an estimate (state method v2). We start from the current national average and measure each state’s 2024 lean: how much more or less of the two-party vote Trump won there than nationally, on a log-odds scale so lopsided places can’t run past 0 or 100%. The national approve share is shifted by that lean times a slope fitted to the state polls of the past year (now 0.99, from 16 polls). In a state with its own polls, the estimate blends that lean-based number with the polls’ gap from the national average on the days they ended, giving the polls a weight of n / (n + 1) for n polls; those states are outlined on the map.
The district, county and precinct views apply each state’s estimate to the 2024 presidential results in the same way the 2026 forecast maps did: every unit keeps its 2024 lean relative to its state, and the units are shifted together until they add up to the state estimate. They show where approval is likely higher or lower, not separate measurements.
What we don’t do
We never fill in days without polls, and we don’t turn early 2028 polling into win probabilities. State and local approval numbers are estimates and are labeled that way.
Photo credits
Candidate photos are thumbnails from Wikimedia Commons, used under the licenses below.
- Alexandria Ocasio-Cortez: photo by Franmarie Metzler; U.S. House Office of Photography, Public domain
- Andy Beshear: photo by Governor Andy Beshear, Public domain
- Brian Kemp: photo by Governor's Photographer, Office of Governor Brian P. Kemp, Public domain
- Chris Murphy: photo by Chris Murphy, Public domain
- Cory Booker: photo by U.S. Senate, Public domain
- Donald Trump Jr.: photo by Gage Skidmore from Surprise, AZ, United States of America, CC BY-SA 4.0
- Gavin Newsom: photo by Charles Ommanney – Office of the Governor of California, Public domain
- Glenn Youngkin: photo by Glenn Youngkin, Public domain
- Greg Abbott: photo by NASA Johnson Space Center / NASA-JSC/ROBERT MARKOWITZ, Public domain
- Gretchen Whitmer: photo by City of Detroit, Public domain
- JB Pritzker: photo by Oscar Garza, CC BY-SA 4.0
- JD Vance: photo by Emily J. Higgins, Public domain
- John McEntee: photo by Bacon11102, CC0
- Jon Ossoff: photo by U.S. Senate Photographic Studio, Public domain
- Josh Hawley: photo by Office of Senator Josh Hawley, Public domain
- Josh Shapiro: photo by Maryland GovPics, CC BY 2.0
- Kamala Harris: photo by Lawrence Jackson, Public domain
- Marco Rubio: photo by U.S. Department of State, Public domain
- Mark Kelly: photo by John Shinkle, U.S. Senate Photographic Services, Public domain
- Nikki Haley: photo by United States Department of State, Public domain
- Pete Buttigieg: photo by United States Department of Transportation, Public domain
- Rand Paul: photo by US Senate Photography Office, Public domain
- Raphael Warnock: photo by U.S. Senate Photographic Studio, Rebecca Hammel, Public domain
- Robert F. Kennedy Jr.: photo by U.S. Department of Health and Human Services, Public domain
- Ron DeSantis: photo by Government of Florida, Public domain
- Ted Cruz: photo by U.S. Senate Photographic Studio, Public domain
- Thomas Massie: photo by House Creative Services, Public domain
- Tucker Carlson: photo by Gage Skidmore from Surprise, AZ, United States of America, CC BY-SA 4.0
- Vivek Ramaswamy: photo by Gage Skidmore, CC BY-SA 4.0