JHK Forecasts

Democratic Primary



How the 2020 Presidential Forecast works.

By : Jack Kersting


My 2020 Presidential Forecast is my first presidential race that I am forecasting. However, it is not my first election forecasting. I created a forecast for the 2018 Senate Midterms , and did reasonably well. I correctly called all of the races except Florida and Indiana. I ended up with a brier score of.0484. Now lets get onto this forecast for the 2020 Presidential Election. The forecast is probabilstic, not definitive. So when you see a race that has a candidate winning 56.3% of the simulations, it is not saying they are going to win, rather that they are favored. A probabilstic model is calibrated correctly if some underdogs win races they aren't favored to. For example if there are 10 states between 20% & 30% win rate for the underdog in that state, then, if correctly calibrated, you should expect 2 or 3 wins for the underdogs in those states.

Projecting Vote Shares

To calculate each states vote shares I use four indexes:

-Expert's Ratings
-State Similarity Regression


Partisan Lean

The partisan lean index part of the fundamentals is pretty simple. It takes the partisan lean of that state and then regresses it based on the popular vote based on national polls.

Economic Index

I created an economic index model to compare the economy towards previous economies in the US. It standardizes each index to make them comparable. It then combines them together to create the full economic index. It then regresses it to give an advantage/disadvantage for the incumbent, which is Trump. As more polls come in, the less this weighs into the model, by mid-July, almost negligable.


How I calculate the polling index is fairly simple as well. I take each poll and weight it based on the 538's pollster grades, the sample size, recency, and sample type. Polls with a higher sample size get weighted more, obviously. However I use diminshing returns based on the pollster's grade.

I weight likely voters first, then registered voters, then adults last. As of right now (1/16/20), there are a few candidates with a chance of winning the Democratic Primary. How I incorporate this into my model is by weighting each poll based on the Democrats chance of winning. For example, lets say we have a poll with Joe Biden, who currently has a 52.7% chance of winning the primary. And the poll has an adjusted weight of 10 points after adjusting for the things above, then the new weight for that poll would be 5.27 points. Every candidate v. Trump is treated as a different poll, even from the same poll. I then regress the poll based on the pollster's bias, and the change in national margin since the poll was taken.

Expert's Ratings

As of right now I use five experts ratings in my model:

-Sabato's Crystall Ball
-Cook Political Report
-Inside Elections
-Bitecofer's Model

To come up with a projected margin for each rating, I took the median margin from previous elections based on each rating to come up with a projected margin. For state's with a higher than 20 partisan lean and rated solidly, I used the partisan lean index instead of the solid rating projected margin. Then I combine all of the ratings together, weighted equally.

State Similarity Regression

The final index used to calculate vote share is my similar state regression. I created a similar state regression for each state by fiinding the most similar state to that said state based on demographics, location, and partisan lean. Demographics and location are weighted more heavily in the regression tham partisan lean. Then to get the raw state similarity index I take the 10 most similar states to calculate it. I take each of the 10 states polling average and compare it to that state's partisan lean. Then combine them based on each one of those states regression score (0 - complete opposite, 100 - exact same). That gives me the raw index. To adjust it for that state, I simply the raw index to the state's partisan lean to get the final state similarity index.

Combining Indexes

To come up with the final projected vote for each state I have to combine all four indexes. Each index is given points which will determine the weight. The fundamentals and expert's ratings are a set number of points. The polling and state similarity index are given points based on the amount of polls they have. More polls will give the higher number of points, but will decrease the state similarity number of points. State similarity points do not affect polling points. Then I weight them based on number of points. For example lets say a states indexes have the following points: Polling - 100, Fundamentals - 80, Experts - 60, and State Similarity - 40. The weights will be as following: Polls - 33.3%, Fundamentals - 26.7%, Experts - 20%, and State Similarity - 13.3%. The final step before simulating the election is finding each states uncertainty. State will more total points the model becomes less uncertain, which will give a lower variance in the simulations for that state.

Simulate the election

The simulation is pretty simple when it comes down to it. I simulate the election 20,000 times to give win percentages and possible outcomes. To simulate the election, I use a monte carlo simulation. I use 61 random numbers, one for each state (+DC) and congressional district, one for each region (Northeast, South, Midewest, and West), and finally one for the nation as a whole, for each candidate. To simulate each state I take that states number, the national number, and the state's region number and combine time to get a final rand number for that state. I then have to adjust the variance calculated from the state to adjust for three random numbers. As if I didn't the variance would be too little as the more random numbers you add together, the more likelyhood of them being closer to .5. If it doesn't make sense,The Central Limit Theorem will explain it a little. This is done for each candidate. It then allocates thats states electoral votes to the candidate with the highest vote share. Finally it adds each candidates electoral votes to see who has 270. If no candidate reaches 270, the simulation gives Trump the win 80% of the time as the republicans control a majority of the state's houses and are gerrymandered in a way where it is almost impossible to flip. And that is pretty much it.

If you have any question reach out to me on twitter @jhkforecasts

Updates or changes to model

January 16,2020: Adjusted the weights of indexes. Expert's weighting becomes weaker. My model will show a small bump in Trump's chances due to fundamentals (right now) favoring Trump more than Experts. I did this as calculating the expert's projected margin is much more of a rough estimate than fundamentals.