The 2028 Tracker Index
Our own daily score - not a betting line and not a poll. One number for where every 2028 contender actually stands. The Index scores each candidate from 0 to 100 every day by combining real-money prediction markets, public attention, and betting volume into a single Standing - data you will not find anywhere else, because we compute it.
Looking for raw market prices instead? 2028 election odds shows what traders pay on Polymarket, Kalshi and PredictIt, in percent. The Index is different: a 0-100 score that also weighs public attention and money bet.
The 2028 Tracker Index
Index score (0-100) = 60% prediction-market win chance + 25% public attention (Wikipedia views) + 15% money traded this week (Polymarket + Kalshi), each scaled to the field leader. 42 of 44 contenders are priced by the markets; the rest are scored on attention until markets list them. It is an index of live signals, not a poll of voters.
Full methodology, glossary, sources, and a worked example
Formula
For each candidate, Standing = 100 x (0.60 x market + 0.25 x attention + 0.15 x volume), where each signal is normalized to the strongest candidate and the weights are renormalized over whichever signals are present. Market is the general-election win probability averaged across Polymarket, Kalshi and PredictIt (Polymarket alone when fewer than two markets list a candidate). Attention is the Wikipedia 7-day average daily pageviews (square-root compressed). Volume is the dollars traded over the trailing week on Polymarket (winner and nominee markets) and Kalshi (winner market); PredictIt is left out because its reported volume is too thin to matter (square-root compressed).
Worked example
Suppose the field leader has a 20% win probability and a candidate has 10%: the candidate's market component is 10/20 = 0.50. If that candidate also sits at 70% of the leader's pageviews, the square-root-compressed attention component is about 0.84. With volume at, say, 0.40, the Standing is 100 x (0.60 x 0.50 + 0.25 x 0.84 + 0.15 x 0.40), which is about 57.
Glossary
- Standing - the 0-100 composite score; higher means a stronger overall position.
- Momentum - the change in Standing versus seven days earlier.
- Win probability - the market's implied chance the candidate wins the general election.
- Nomination probability - the market's implied chance of winning the party nomination.
How to read it
- Scan the leaderboard top-down for the overall field order.
- Watch the 7-day column for who is rising or fading this week.
- Use the by-party tables for the nomination races.
Sources
Polymarket (Gamma API), Kalshi (public market data API), PredictIt (public market data API), Wikimedia Pageviews API, GDELT Project (DOC 2.0 API).
Version
Methodology v2.1. Any change to the signals or weights is logged here with a date.
September 23, 2026 (v2.1): the money signal adds Kalshi's trailing-week dollar volume (contracts traded x that day's mean price) to Polymarket's. PredictIt is not included - its reported volume is too thin to matter.
September 23, 2026 (v2.0): the prediction-market signal now uses the plain average of Polymarket, Kalshi and PredictIt - the same number shown on the 2028 odds page - instead of Polymarket alone. Polymarket is the fallback for anyone listed on fewer than two markets. Weights are unchanged; 7-day Momentum across the switch includes the small one-time change in inputs.
Every tracked contender, ranked by Index score (0-100). The 7-day column is Momentum - how much a candidate has risen or fallen over the past week.
As of October 4, 2026, JD Vance leads the 2028 field with a Standing of 88. This week's biggest riser is Sarah Huckabee Sanders (+13.5).
| # | Candidate | Index score (0-100) | 7-day | Trend |
|---|---|---|---|---|
| 1 | 21.1% to win (market avg) | 7,881 views/day | $130k traded this week | 3,236 media (7d) | 88 | -0.7 +1.7 1d | |
| 2 | 12.0% to win (market avg) | 17.8% nom | 7,243 views/day | $176k traded this week | 216 media (7d) | 63 | +1.1 -1.3 1d | |
| 3 | 11.0% to win (market avg) | 15.4% nom | 7,893 views/day | $211k traded this week | 49 media (7d) | 62 | -4.9 -2.7 1d | |
| 4 | 9.3% to win (market avg) | 15.3% nom | 5,299 views/day | $73k traded this week | 3,653 media (7d) | 49 | -2.9 -0.5 1d | |
| 5 | 8.3% to win (market avg) | 16.1% nom | 5,247 views/day | $139k traded this week | 48 | -2.0 -1.5 1d | |
| 6 | 4.2% to win (market avg) | 7.1% nom | 3,735 views/day | $171k traded this week | 167 media (7d) | 35 | -1.3 +3.0 1d | |
| 7 | 2.9% to win (market avg) | 3.1% nom | 2,617 views/day | $283k traded this week | 293 media (7d) | 32 | -0.3 -1.1 1d | |
| 8 | 0.1% to win (market avg) | 0.4% nom | 13,493 views/day | $54k traded this week | 1,003 media (7d) | 31 | +5.8 -0.3 1d | |
| 9 | 0.8% to win (market avg) | 2.5% nom | 2,906 views/day | $377k traded this week | 29 | +3.0 | |
| 10 | 1.1% to win (market avg) | 1.7% nom | 5,724 views/day | $141k traded this week | 121 media (7d) | 29 | +5.6 +4.7 1d | |
| 11 | 3.4% to win (market avg) | 5.1% nom | 2,835 views/day | $85k traded this week | 15 media (7d) | 28 | -3.2 -0.9 1d | |
| 12 | 0.0% to win (market avg) | 0.7% nom | 5,971 views/day | $112k traded this week | 25 | +7.1 +2.3 1d | |
| 13 | 0.0% to win (market avg) | 0.1% nom | 2,517 views/day | $261k traded this week | 23 | +13.5 +12.2 1d | |
| 14 | 2.3% to win (market avg) | 2.6% nom | 1,851 views/day | $60k traded this week | 406 media (7d) | 22 | +1.1 +0.4 1d | |
| 15 | 0.3% to win (market avg) | 0.5% nom | 970 views/day | $322k traded this week | 63 media (7d) | 21 | +2.9 -1.6 1d | |
| 16 | 3.1% to win (market avg) | 5.9% nom | 1,703 views/day | $19k traded this week | 879 media (7d) | 21 | -3.1 -0.4 1d | |
| 17 | 2.2% to win (market avg) | 2.6% nom | 1,929 views/day | $47k traded this week | 143 media (7d) | 21 | -3.2 +1.0 1d | |
| 18 | 0.0% to win (market avg) | 0.1% nom | 8,397 views/day | $2k traded this week | 116 media (7d) | 21 | +6.6 -0.8 1d | |
| 19 | 0.3% to win (market avg) | 0.3% nom | 4,275 views/day | $55k traded this week | 38 media (7d) | 21 | +0.6 -1.0 1d | |
| 20 | 0.4% to win (market avg) | 1.6% nom | 3,265 views/day | $65k traded this week | 245 media (7d) | 20 | -3.4 -0.6 1d | |
| 21 | 0.1% to win (market avg) | 0.1% nom | 2,229 views/day | $114k traded this week | 121 media (7d) | 19 | +3.7 -0.9 1d | |
| 22 | 0.1% to win (market avg) | 0.4% nom | 1,846 views/day | $138k traded this week | 8 media (7d) | 19 | +8.3 +2.0 1d | |
| 23 | 0.0% to win (market avg) | 6,044 views/day | 164 media (7d) | 17 | +7.4 -0.6 1d | |
| 24 | 0.6% to win (market avg) | 0.4% nom | 2,787 views/day | $15k traded this week | 108 media (7d) | 16 | +1.6 -1.0 1d | |
| 25 | 0.1% to win (market avg) | 0.1% nom | 1,217 views/day | $111k traded this week | 386 media (7d) | 16 | +4.8 -1.3 1d | |
| 26 | 0.0% to win (market avg) | 0.1% nom | 569 views/day | $184k traded this week | 9 media (7d) | 16 | +8.5 -0.6 1d | |
| 27 | 0.0% to win (market avg) | 0.7% nom | 4,182 views/day | $2k traded this week | 155 media (7d) | 15 | -0.5 -0.9 1d | |
| 28 | 1.2% to win (market avg) | 2.1% nom | 1,105 views/day | $34k traded this week | 319 media (7d) | 15 | -0.4 -0.3 1d | |
| 29 | 0.0% to win (market avg) | 0.4% nom | 4,181 views/day | $1k traded this week | 15 | +2.2 | |
| 30 | 0.0% to win (market avg) | 0.1% nom | 3,970 views/day | $2k traded this week | 43 media (7d) | 15 | -3.3 -0.8 1d | |
| 31 | 1.4% to win (market avg) | 1.3% nom | 2,001 views/day | $2k traded this week | 36 media (7d) | 15 | -8.7 | |
| 32 | 1.0% to win (market avg) | 1.4% nom | 1,573 views/day | $17k traded this week | 172 media (7d) | 15 | -1.6 -1.0 1d | |
| 33 | 0.3% to win (market avg) | 0.1% nom | 2,585 views/day | $2k traded this week | 13 | -5.5 -0.8 1d | |
| 34 | 0.0% to win (market avg) | 0.1% nom | 552 views/day | $78k traded this week | 32 media (7d) | 12 | +5.1 -0.5 1d | |
| 35 | 0.9% to win (market avg) | 0.9% nom | 1,016 views/day | $5k traded this week | 275 media (7d) | 11 | -3.7 -0.6 1d | |
| 36 | 0.3% to win (market avg) | 0.4% nom | 427 views/day | $55k traded this week | 1 media (7d) | 11 | -10.3 -0.6 1d | |
| 37 | 0.2% to win (market avg) | 0.1% nom | 1,095 views/day | $1k traded this week | 99 media (7d) | 9 | -6.4 -11.9 1d | |
| 38 | 0.1% to win (market avg) | 0.1% nom | 602 views/day | $6k traded this week | 88 media (7d) | 7 | +0.3 -1.4 1d | |
| 39 | 0.0% to win (market avg) | 0.3% nom | 1,019 views/day | 188 media (7d) | 7 | -4.1 -10.9 1d | |
| 40 | 0.0% to win (market avg) | 0.1% nom | 665 views/day | $2k traded this week | 103 media (7d) | 7 | -5.2 -0.3 1d | |
| 41 | 0.0% to win (market avg) | 0.4% nom | 680 views/day | $984 traded this week | 14 media (7d) | 6 | +0.2 -0.3 1d | |
| 42 | 0.0% to win (market avg) | 0.1% nom | 221 views/day | $7k traded this week | 5 | -1.0 -0.6 1d | |
| 43 | 0.0% to win (market avg) | 521 views/day | 9 media (7d) | 5 | -1.6 -0.3 1d | |
| 44 | 0.0% to win (market avg) | 0.4% nom | 506 views/day | 20 media (7d) | 5 | -2.4 -0.7 1d |
Biggest movers this week
Largest 7-day changes in Standing.
Gaining ground
Losing ground
By party
The same Standing, ranked within each party.
Democratic field (23)
| # | Candidate | Index score (0-100) | 7-day | Trend |
|---|---|---|---|---|
| 1 | 12.0% to win (market avg) | 17.8% nom | 7,243 views/day | $176k traded this week | 216 media (7d) | 63 | +1.1 -1.3 1d | |
| 2 | 11.0% to win (market avg) | 15.4% nom | 7,893 views/day | $211k traded this week | 49 media (7d) | 62 | -4.9 -2.7 1d | |
| 3 | 8.3% to win (market avg) | 16.1% nom | 5,247 views/day | $139k traded this week | 48 | -2.0 -1.5 1d | |
| 4 | 4.2% to win (market avg) | 7.1% nom | 3,735 views/day | $171k traded this week | 167 media (7d) | 35 | -1.3 +3.0 1d | |
| 5 | 2.9% to win (market avg) | 3.1% nom | 2,617 views/day | $283k traded this week | 293 media (7d) | 32 | -0.3 -1.1 1d | |
| 6 | 1.1% to win (market avg) | 1.7% nom | 5,724 views/day | $141k traded this week | 121 media (7d) | 29 | +5.6 +4.7 1d | |
| 7 | 3.4% to win (market avg) | 5.1% nom | 2,835 views/day | $85k traded this week | 15 media (7d) | 28 | -3.2 -0.9 1d | |
| 8 | 0.0% to win (market avg) | 0.7% nom | 5,971 views/day | $112k traded this week | 25 | +7.1 +2.3 1d | |
| 9 | 0.3% to win (market avg) | 0.5% nom | 970 views/day | $322k traded this week | 63 media (7d) | 21 | +2.9 -1.6 1d | |
| 10 | 3.1% to win (market avg) | 5.9% nom | 1,703 views/day | $19k traded this week | 879 media (7d) | 21 | -3.1 -0.4 1d | |
| 11 | 2.2% to win (market avg) | 2.6% nom | 1,929 views/day | $47k traded this week | 143 media (7d) | 21 | -3.2 +1.0 1d | |
| 12 | 0.1% to win (market avg) | 0.1% nom | 2,229 views/day | $114k traded this week | 121 media (7d) | 19 | +3.7 -0.9 1d | |
| 13 | 0.0% to win (market avg) | 6,044 views/day | 164 media (7d) | 17 | +7.4 -0.6 1d | |
| 14 | 0.1% to win (market avg) | 0.1% nom | 1,217 views/day | $111k traded this week | 386 media (7d) | 16 | +4.8 -1.3 1d | |
| 15 | 0.0% to win (market avg) | 0.7% nom | 4,182 views/day | $2k traded this week | 155 media (7d) | 15 | -0.5 -0.9 1d | |
| 16 | 1.2% to win (market avg) | 2.1% nom | 1,105 views/day | $34k traded this week | 319 media (7d) | 15 | -0.4 -0.3 1d | |
| 17 | 1.4% to win (market avg) | 1.3% nom | 2,001 views/day | $2k traded this week | 36 media (7d) | 15 | -8.7 | |
| 18 | 1.0% to win (market avg) | 1.4% nom | 1,573 views/day | $17k traded this week | 172 media (7d) | 15 | -1.6 -1.0 1d | |
| 19 | 0.0% to win (market avg) | 0.1% nom | 552 views/day | $78k traded this week | 32 media (7d) | 12 | +5.1 -0.5 1d | |
| 20 | 0.9% to win (market avg) | 0.9% nom | 1,016 views/day | $5k traded this week | 275 media (7d) | 11 | -3.7 -0.6 1d | |
| 21 | 0.0% to win (market avg) | 0.1% nom | 665 views/day | $2k traded this week | 103 media (7d) | 7 | -5.2 -0.3 1d | |
| 22 | 0.0% to win (market avg) | 0.1% nom | 221 views/day | $7k traded this week | 5 | -1.0 -0.6 1d | |
| 23 | 0.0% to win (market avg) | 0.4% nom | 506 views/day | 20 media (7d) | 5 | -2.4 -0.7 1d |
Republican field (21)
| # | Candidate | Index score (0-100) | 7-day | Trend |
|---|---|---|---|---|
| 1 | 21.1% to win (market avg) | 7,881 views/day | $130k traded this week | 3,236 media (7d) | 88 | -0.7 +1.7 1d | |
| 2 | 9.3% to win (market avg) | 15.3% nom | 5,299 views/day | $73k traded this week | 3,653 media (7d) | 49 | -2.9 -0.5 1d | |
| 3 | 0.1% to win (market avg) | 0.4% nom | 13,493 views/day | $54k traded this week | 1,003 media (7d) | 31 | +5.8 -0.3 1d | |
| 4 | 0.8% to win (market avg) | 2.5% nom | 2,906 views/day | $377k traded this week | 29 | +3.0 | |
| 5 | 0.0% to win (market avg) | 0.1% nom | 2,517 views/day | $261k traded this week | 23 | +13.5 +12.2 1d | |
| 6 | 2.3% to win (market avg) | 2.6% nom | 1,851 views/day | $60k traded this week | 406 media (7d) | 22 | +1.1 +0.4 1d | |
| 7 | 0.0% to win (market avg) | 0.1% nom | 8,397 views/day | $2k traded this week | 116 media (7d) | 21 | +6.6 -0.8 1d | |
| 8 | 0.3% to win (market avg) | 0.3% nom | 4,275 views/day | $55k traded this week | 38 media (7d) | 21 | +0.6 -1.0 1d | |
| 9 | 0.4% to win (market avg) | 1.6% nom | 3,265 views/day | $65k traded this week | 245 media (7d) | 20 | -3.4 -0.6 1d | |
| 10 | 0.1% to win (market avg) | 0.4% nom | 1,846 views/day | $138k traded this week | 8 media (7d) | 19 | +8.3 +2.0 1d | |
| 11 | 0.6% to win (market avg) | 0.4% nom | 2,787 views/day | $15k traded this week | 108 media (7d) | 16 | +1.6 -1.0 1d | |
| 12 | 0.0% to win (market avg) | 0.1% nom | 569 views/day | $184k traded this week | 9 media (7d) | 16 | +8.5 -0.6 1d | |
| 13 | 0.0% to win (market avg) | 0.4% nom | 4,181 views/day | $1k traded this week | 15 | +2.2 | |
| 14 | 0.0% to win (market avg) | 0.1% nom | 3,970 views/day | $2k traded this week | 43 media (7d) | 15 | -3.3 -0.8 1d | |
| 15 | 0.3% to win (market avg) | 0.1% nom | 2,585 views/day | $2k traded this week | 13 | -5.5 -0.8 1d | |
| 16 | 0.3% to win (market avg) | 0.4% nom | 427 views/day | $55k traded this week | 1 media (7d) | 11 | -10.3 -0.6 1d | |
| 17 | 0.2% to win (market avg) | 0.1% nom | 1,095 views/day | $1k traded this week | 99 media (7d) | 9 | -6.4 -11.9 1d | |
| 18 | 0.1% to win (market avg) | 0.1% nom | 602 views/day | $6k traded this week | 88 media (7d) | 7 | +0.3 -1.4 1d | |
| 19 | 0.0% to win (market avg) | 0.3% nom | 1,019 views/day | 188 media (7d) | 7 | -4.1 -10.9 1d | |
| 20 | 0.0% to win (market avg) | 0.4% nom | 680 views/day | $984 traded this week | 14 media (7d) | 6 | +0.2 -0.3 1d | |
| 21 | 0.0% to win (market avg) | 521 views/day | 9 media (7d) | 5 | -1.6 -0.3 1d |
Frequently asked questions
Everything you need to cite or explain the Index.
What is the 2028 Tracker Index?
The 2028 Tracker Index is a daily 0-100 score (the "Standing") for every 2028 U.S. presidential contender, published by 2028tracker.com. It combines real-money prediction markets, public attention, and betting volume into one number so you can see at a glance where each candidate stands.
How is the Standing calculated?
Standing is a weighted composite: 60% prediction-market win probability (the average of Polymarket, Kalshi and PredictIt), 25% Wikipedia public attention (7-day average pageviews), and 15% prediction-market trading volume (dollars traded in the past week on Polymarket and Kalshi). Attention and volume are square-root compressed, and each signal is normalized to the strongest candidate. Weights are renormalized per candidate over whatever signals are available.
How often is it updated?
Every day. A scheduled job recomputes every candidate's Standing and Momentum and republishes the data, the page, the API, and the snapshot image.
What is Momentum?
Momentum is the change in a candidate's Standing versus seven days earlier (the 7-day column on the leaderboard). It shows who is rising and who is fading.
Is this a poll?
No. It is not a survey of voters. It is a composite index of live market and attention signals, designed to summarize where the field stands and how it is moving.
Can I use this data?
Yes. The data is free under CC BY 4.0 - use it with attribution and a link to 2028tracker.com/the-index. Pull it as JSON or CSV from the open API, or embed the live leaderboard on your own site.
Who is leading the 2028 Tracker Index?
As of October 4, 2026, JD Vance leads with a Standing of 88 out of 100.
Use this data
The 2028 Tracker Index is open data. Pull the live numbers as JSON or CSV, or embed the live leaderboard on your own site. Free to use with attribution and a link back to 2028tracker.com.
<iframe src="https://2028tracker.com/api/index/embed" title="The 2028 Tracker Index" width="100%" height="520" loading="lazy" style="border:1px solid #e4e8f0;border-radius:14px"></iframe>
License: CC BY 4.0. Cite as: The 2028 Tracker Index, 2028tracker.com/the-index.
Snapshot and share kit
When you post or advertise the Index, show the truths two ways: the live snapshot image (eye-catching for social and ads) and the same numbers in text (so people, search engines, and AI can read and cite them - data locked inside an image is invisible to crawlers). Both update automatically every day.
The 2028 Tracker Index - October 4, 2026 Daily Index score (0-100) of the 2028 presidential field - original data by 2028tracker.com. 1. JD Vance (GOP) - Standing 88 (-0.7 this week) 2. Alexandria Ocasio-Cortez (DEM) - Standing 63 (+1.1 this week) 3. Jon Ossoff (DEM) - Standing 62 (-4.9 this week) 4. Marco Rubio (GOP) - Standing 49 (-2.9 this week) 5. Gavin Newsom (DEM) - Standing 48 (-2.0 this week) 6. Kamala Harris (DEM) - Standing 35 (-1.3 this week) 7. Andy Beshear (DEM) - Standing 32 (-0.3 this week) 8. Pete Hegseth (GOP) - Standing 31 (+5.8 this week) 9. Ted Cruz (GOP) - Standing 29 (+3.0 this week) 10. Rahm Emanuel (DEM) - Standing 29 (+5.6 this week) Full live board + data: 2028tracker.com/the-index Source: The 2028 Tracker Index (CC BY 4.0).
Who is actually winning the 2028 race? The 2028 Tracker Index scores every contender 0-100 every day - from prediction markets, public attention, and betting volume. Today: JD Vance leads at 88. See the live board: 2028tracker.com/the-index Source: The 2028 Tracker Index (original data, CC BY 4.0).
Snapshot image (always current): https://2028tracker.com/api/index/card. Always pair the image with the text above so the data stays readable and citeable.
Sources: Polymarket (Gamma API), Kalshi (public market data API), PredictIt (public market data API), Wikimedia Pageviews API, GDELT Project (DOC 2.0 API). Signals captured .
The 2028 Tracker Index is computed and published by 2028tracker.com. Standing and Momentum are original metrics; the underlying signals are drawn from public sources listed above. Last updated .
More 2028 context: The 2028 Daily (today's developments), Deep Reads (the 2028 canon), and the full candidate tracker. The Index is informational only - not betting or investment advice. Next update: daily at about 10:30 UTC.