STEM

Calculating Playoff Chances

With the NFL regular season winding down after week 15, we have a pretty good idea of which teams are definitely out of the playoff hunt, which teams have clinched a playoff berth, but the rest are still up in the air. In this blog post, I calculate the chances of making the playoff for your team.

I’ll use my team Seahawks as an example for the 2024 season, but the approach can be applied to any team of your choice. Seahawks are currently at 8-6 (8 wins, 6 losses) with 3 more games remaining. We know the opponents of those games are going to be: Vikings, Bears, Rams. And we know their records so far. Viking are 12-2, Bears are 4-10, Rams are 8-6. Using this information, we want to estimate the chance of Seahawks making the playoffs assuming they need to win at least 2 more games of the remaining 3 games (total of 10 wins making the season record of 10-7 or better).

It is still an assumption as the winning record in the division consisting of Rams, Cardinals, and 49ers can impact the 10 required wins threshold. First and foremost, the team must win the division and depending on the performances of the other teams of the conference, they may or may not be in the Wild Card. To keep things clear for now for this experiment, let’s assume 10 wins of regular season games is necessary to be a Playoff contender. So, how do we calculate that?

One of the ways I figure we can do this is by using Monte Carlo simulation.

View of Monte Carlo Principality

Monte Carlo Simulation is a type of computational algorithm that uses repeated random sampling to obtain the likelihood of a range of results of occurring. Unlike deterministic algorithms, Monte Carlo algorithms may produce incorrect results with a certain probability. It’s often used when deterministic algorithms are impossible or impractical due to complexity. The accuracy of the results depends on the number of samples and the quality of the random number generator.

Invented by John von Neumann and Stanislaw Ulam during World War II, it is meant to improve decision making under uncertain conditions. It was named after a well-known casino town, called Monaco, since the element of chance is at the core of the modeling approach.

It can be a powerful tool used in Python (and other programming languages) to understand the impact of risk and uncertainty in prediction and forecasting models. I have used this algorithm in Python to get the probability of making the playoffs in different scenarios. [In a future blog, I’ll share my various models I created throughout the season to predict each game outcome and the accuracy of the predictions (stay tuned for that).]

Let’s rewind a bit. Right before week 15 game, I ran my simulation when Seahawks’ record was 8-5 with 4 games remaining at the time. I estimated there’s 50% chance of winning the next game against Packers (Yes, I know I was a bit optimistic, but let’s roll with that for the exercise here). Then looking at the remaining schedule (stated above), I set the chances of winnning remaining 4 games at: 50%, 70%, 40%, 60%.
The Probability of making the playoffs would be: 76.80% (prediction before week 15 game)

In other words, if Seahawks won against Packers, there would be ~77% chance that Seahawks would make the playoffs. But alas, that didn’t happen! Seahawks lost and their record dipped to 8-6 which necessitates updating the model with latest data. Now, there are just 3 games remaining.

Based on performance to date by Seahawks and opponents ahead, I set the chances of winning for each game in the rest of the games as: 40% (vs Vikings), 70% (vs Bears), 50% (vs Rams).

Now, the Probability of making the playoffs is : 55% (prediction before week 16 game)

Remember, the remaining games win predictions may not be the same as estimated, depending on factors such as injuries and other unanticipated events occurred this week in my team as well as for the opponents. It’s an unpredictable world!

How does the algorithm work?

The basic steps in a Monte Carlo simulation involves the following:
Define a Model: Establish a mathematical model of the system or process to be analyzed.
Determine Probabilities: Define probability distributions for the uncertain variables.
Generate Random Samples: Use random sampling techniques to generate a large number of scenarios.
Simulate the Model: Run simulations to compute results for each scenario.
Analyze Results: Aggregate the results to estimate probabilities and statistical measures of interest.

In practical terms, I generate random numbers and compare with the probability of each of the remaining games. If the random value is less than my estimated probability, I count that instance as a win. I keep doing this for 200,000 times and keep account of the total number of wins. If the total number of wins is equal or greater than the minimum estimated wins required to make the playoffs (which we set to 10 earlier), then we keep increment the chance of making the playoff. At the end of 200,000 simulations (it totally depends on us how many iterations we want), we compute the final playoff probability.

The entire source code is below.

Have fun experimenting with it. This concept can be extended to many use-cases, not just for sports including for making a decision (e.g. should I take the risk on a venture or not based on a desired outcome, etc.).

I hope you found this post helpful and interesting. Explore this site for more tips and articles. Be sure to also check out my Patreon site where you can find more free downloads and optional fee-based code and documentation. Thanks for visiting!

Back To Top