I Simulated the NFL Season 100,000 Times

John Morgan
The Sports Scientist
5 min readMay 15, 2020

I simulated the NFL season 100,000 times. I did this using python by manually assigning every one of the 256 regular season games a probabilistic outcome. While this may not be a perfect simulation of the season, I think it a good approximation. Attached is the code on my GitHub page. An obvious flaw is that my personal probabilistic evaluations of every game contain some amount of bias or might just be bad. So, if you would like to edit my probabilities with your own opinion, please do and we can average or combine our results to get an even more accurate simulation.

Note: I tried for a while to try to get the code into some sort of web app so that anyone can easily run the function to simulate a season. If anyone knows how to make a python web app and could teach me, that would be awesome. I also tried to translate it into R but did not succeed.

Additionally, there are more things you could do with the code if you are interested. Possible further applications include recording how many times each team achieves their win total (I’m too lazy, I just compared win totals to the average number of wins), coding in division tiebreakers when two teams finish in first place with equal records (I’m also too lazy, I just recorded outright division wins), coding in more variability (injuries, weather), or even completely coding in the playoffs! If anyone does this, I would love to see it. But for now, my simulation is still accurate enough to analyze, so let us look at the results.

Below I recorded each team’s win total and odds to win their division, as found on DraftKings sportsbook. I compare the win totals to the average win total of each team found by running 100,000 simulations. I compare the divisional title odds to the percentage of outright division wins each team had through 100,000 simulations (Tie’s, where more than one team finishes the season in first place with the same record, are not included in the percentage since I was too lazy to code tiebreakers).

Notes and Breakdown:

· One thing I noticed is that in general, the good teams seemed to be slightly over their win totals and the bad teams seemed to be slightly under their win totals. Not a bad thing, but may have rated favorites a tad high

· Teams I know for sure I am biased for are Buffalo and Denver. I obviously try to give them fair ratings, but I fear I may be slightly high on these teams compared to the public.

· Some teams that are just hard for me to evaluate are IND, NE, and TB to name a few. These teams are ones that a second brain would help me evaluate better

My Top Picks (Hammers)

· JETS UNDER 6.5 (-110) — This is the win total I want to slam when my local sportsbook opens. My simulation projects them for 3.29 wins. The difference, 3.21, is the biggest win total difference for my simulation. The Jets need 7 wins for you to lose this bet. The Dolphins are no longer an easy win, and the Pats should be good enough to handle the Jets still. Along with the Jets having one of the most dysfunctional coaches in the league, I can’t imagine many scenarios where they get to 7 wins. Hammer.

· BILLS WIN AFC EAST (+145) — Staying in the AFC East, I am all in on the Bills. They have an elite defense, strong additions on offense, they play great at home, and honestly do not have intimidating divisional competition. At +145, and winning the division outright in 79.38% of my simulations, the odds are favorable. The implied odds of this bet lie around 40%. My simulation and personal opinion both have the Bills winning the division more than 40% of the time. Hammer.

Secondary Betting Strategy

· GB & MIN WIN NFC NORTH (+170, +165) — I am not 100% confident in placing a single bet on either of these teams to win the division, but I believe one of them will win it, and that DET and CHI will not. By hedging/covering this bet, you will profit if either team wins the division. For example, a $100 bet on both teams will return a net profit of either $65 or $70 given that MIN or GB wins the division. The combined probability that the Packers or Vikings won the division outright in my simulation was 79.29%. With CHI and DET outright winning 3.22% and 4.35% respectively, that leaves 17.14% of ties, many of which could have been made up of GB and MIN ties. Only including outright wins, GB or MIN won the division 93.4% of the time. I believe making this covered bet is a +EV play, but I’d like to hear opinions about this and which team you think has the edge. If I had to choose 1, I might edge MIN, but not by a lot.

Longshot/Upside Bet

· DEN WINS AFC WEST (+800) — If your feeling risky and want to really multiply your money, I’d tell you to take Denver to win the AFC West. Out of all the teams with odds worse than +500, Denver is the best choice. With the potential for a great defense along with all the offensive weapons you could ask for, the Broncos just need Drew Lock to get a little hot and they could give the Chiefs a run for their money. If they can get 1 out of 2 wins against the Chiefs, I think their chances of winning the division are at least at the implied odds of the bet, 11.11%.

***This article was based on my exact first version of the simulation. I did not want to be results-oriented and change my numbers because I thought one team was rated too high or low in the end. But after a few days of thinking, I’ve realized that some teams, especially KC and BAL, have an average win total that is way too high. I am not going to edit the article, because I think my initial thoughts and predictions before seeing the results are still most valuable. But I have modified my code to lessen the win expectancy for KC and BAL, so if you would like to see the new results, message me and I’ll send the results of my most recent code. Thanks!

--

--