Here is how my forecast predicts the election. Updated 06/29/2024
1. My Approach
I use a mix of qualitative and quantitative analysis in the forecast as it seems to be the more solid way of predicting state legislative races. Focusing on just “vibes” and qualitative factors is unscientific, while only relying on hard data misses important factors that simply cannot be captured by any metric or previous election result. If you would like more information on the mixed-method approach, I highly recommend checking out CNalysis, the premiere state legislature forecaster out there.
Being smaller and more local districts, state house and senate races are more influenced by qualitative factors that do not necessarily translate into polling results, if any metric even exists to measure it. These factors are listed and explained further down in the “Fundamentals” section. Especially without any polling for an election this small, we have to introduce bias into the forecast to account for what the numbers cannot. At the end of the day, it is who can best interpret the unknowns that determines the most successful forecasters and that means I have to subjectively interpret all qualitative factors on my own.
2. Base Partisanship
The biggest chunk of the formula comes from a near purely quantitative base partisanship calculation. With rising partisanship reducing the amount of ticket splitting, I feel that it is best to reduce the weight of previous election results within that race, and instead adjust the results based on what I predict the presidential election results to be in that district.
The first thing we must do in our model is predict the statewide two-party vote for president. Without substantial polling in Kansas, I rely on presidential forecasters like 538 and JHK Forecasts to provide some guidance. I do weight polls on my own based on sample size, likely voters vs registered voters, pollster rating, and time elapsed since fieldwork was completed, and that will take over a larger portion of the simulated two-party vote share as we get closer to the election. National polls are also considered and I am learning how 538 developed and uses its CANTOR system to infer Kansas results based on how other states are polling. This is already considered in their forecast, which is why I am comfortable using it in the meantime.
After I get a two-party partisanship set, I use a custom PVI formula to adjust each district according to its lean relative to the state. For example, a district with a PVI of D+15 will shift the statewide partisanship 15 points to the left and give us a base partisanship score for the district. Here, I do adjust house districts slightly with their 2022 election results (if they had a competitive election), but it does not weigh highly for multiple reasons. First, I prefer not to use midterm election results in a presidential year, especially as the 2024 environment does appear to be moving closer to 2020 than 2022. Secondly, not every district’s partisanship can be weighted due to redistricting. No senate election has happened in the new boundaries, and only a chunk of house seats had a competitive election last cycle. In an effort to maintain consistency and equality amongst data, 2022 cannot be weighed highly. Lastly, partisan polarization is on the rise, and ticket-splitting is becoming more rare. All other factors and situations remaining identical, if a 2022 election was held any amount of time in the future, it is almost certain that there will be fewer ticket-splitters than in 2022. Therefore, I use 2022 as an extra data point, but not a guide.
3. Fundamentals
I use the term “fundamentals” here, and it is essentially the characteristics of the district. This is where qualitative analysis is considered and bias introduced to adjust the base partisanship for factors it does not account for. There are numerous factors the forecast considered as fundamentals.
First, finances. Campaign fundraising can be a good measure of how “serious” the party machine is about contending that election. It also can indicate grassroots support as a person living in a district that donates money to a candidate is very likely to vote for that candidate on election day. However, it is important to understand that money cannot, and is not, a significant factor in my model, and that is again for the reason that money can only go so far in battling partisanship. For example, in 2020, incumbent Representative Jason Probst outraised his opponent in the general election cycle $36,000 to $4,000. Probst won by 31 votes (0.46%). Had his opponent even raised half as much as Rep. Probst, he likely would have ousted the incumbent. Money itself does not change votes; buying a yard sign does not increase a candidate's support. How a candidate uses that money is far more important, but that is hard to score here. At the end of the day, the finance factor essentially exists to punish candidates and parties for not seriously contesting an election.
Second, incumbency. Incumbents running for reelection get a bit of a boost based on how long they have been in office and how much of their new district they represented in the past. I also consider how well the incumbent performed compared to the top of the ticket in recent elections. This helps adjust slightly based on a local legislator’s popularity.
Third, candidate quality. This is the most subjective factor in the forecast and is the hardest to defend from my perspective. Here, I give candidates scores based on the “electoral situation". I consider any scandals in the news, party infighting, how many doors the campaign knocked (if I can get accurate information), the political history of the candidate (i.e. perennial candidates and political newbies are reduced, local elected officials are raised), and many other factors are considered.
4. Simulation
After all factors are calculated and weighed I am left with a predicted margin based on the predicted statewide vote and it is time to simulate the entire election. I had previously used a Monte Carlo simulator to generate random numbers that determine the winners, and then add up all the seats, but this is a very unrealistic way to simulate elections. Each house and senate race are not completely independent from each other. If one district swings more to the right than expected, it is generally safe to say other, similar districts also swung more to the right than expected. To increase credibility and legitimacy, I use a different simulation process similar to a Markov Chain Monte Carlo.
It starts with generating a random statewide two-party margin based around the number we came up with in base partisanship. Because of the PVI value shifting the district relative to the state, this means if Kansas votes for Trump by 11 points instead of 15, districts will tend to be more blue than if Kansas voted for Trump by 15.
After a state margin is simulated, each district is simulated based on that margin, but with some variability in its PVI allowing for maximum flexibility. This is because districts will not always vote the exact same relative to the state in every election. If Kansas is three points bluer, not every district will shift left by exactly three points, some may even shift right, and that is considered in this simulation. This means that I can simulate the same statewide margin 100 times and almost certainly not get the exact same results and outcomes.
I simulate 25,000 individual elections in each chamber and take the averages to get our predicted margins for each race. It also gives us the odds that each chamber will be won by each party. The odds are derived from the margin, not from the number of simulations won. Eventually, I will adjust the simulation code to also vary the weight of the dozens of factors I consider so that we simulate elections with a larger incumbency bonus, less importance of finance, more ticket-splitting, and/or many more scenarios.
5. Ratings
Once we get the odds of a party winning an election, I translate that into a rating that gives a snapshot of the election.
50-60% - Tossup
60-70% - Tilt
70-80% - Lean
80-95% - Likely
95-100% - Solid
6. Conclusion
That is it for my methodology! If you see any errors or have questions as to why I do something the way I do, please reach out to kianwilliams1861@gmail.com. My number one priority when running this model is to learn and get better for 2026.
Be sure to explore our interactive House and Senate forecast if you have not already!