Using Linear Programming to Optimize Picks in a NFL Survivor Pool

Andrew Josselyn
6 min readSep 3, 2022

--

Can mathematical optimization techniques help us win some money?

Photo by Johnny Williams on Unsplash

What is a NFL Survivor Pool?

In a survivor pool you pick one NFL team to win (no spreads) each week, and if your team wins you move on, if they lose or tie you are eliminated. The catch is you can only pick a team once. The last person/people standing at the end of the 18 week regular season will be winners and take home the money.

What is Linear Programming?

Linear Programming (LP) is a mathematical technique which optimizes (finds the minimum or maximum) linear functions based on various constraints.

Our Problem to be Optimized

Essentially we want to select teams to win each week that gives us the best chance of winning over the entire season, not just looking at weeks individually. What do I mean by this? Say in week 1, Team A is 10 point favorites and the next biggest favorite is Team B who are 7 point favorites. Logically you would say we choose Team A in week 1, which might be accurate. However, what if Team A is 13 point favorites in week 10 and Team B is never more than 3 point favorites again in the season? Wouldn’t it make sense to choose Team B week 1 and maybe wait to week 10 to choose Team A? This gets further complicated by the fact that there are 32 teams and 18 weeks of regular season. Toss in injuries and you have a very complex mathematical problem.

Team Rankings

In the above example I mentioned point favorites (the spread) as a way to rank teams. Unfortunately, point favorites aren’t done very far in the future because of all the variability in the NFL. Instead of point favorites I will use a ranking system based off ESPN’s NFL Football Power Index 2022. From ESPN they state:

The Football Power Index (FPI) is a measure of team strength that is meant to be the best predictor of a team’s performance going forward for the rest of the season. FPI represents how many points above or below average a team is. Projected results are based on 10,000 simulations of the rest of the season using FPI, results to date, and the remaining schedule. Ratings and projections update daily.

Setting up Our Optimizer and Limitations

Unfortunately, I used Excel Solver for this problem. One issue with Excel Solver is you are limited to ≤ 200 variables. This meant I could only solve based on five week increments instead of the entire 18 weeks at once. Not ideal but I carried on anyway.

The data was set-up by creating a matrix which subtracts each weekly opponents’ FPI. For example the first game of the season has the Buffalo Bills (FPI = 1) against the LA Rams (FPI = 3), which gives the Bills a score of -2 and the Rams a score of +2. We do this for the five weeks allowed by Excel Solver with the end goal of minimizing the total FPI differential over those five weeks. The next column is a weekly binary field which is used by the optimizer to select one team per week. Once optimized these columns will have one “1” value for the selected team and the rest will be “0” for teams not selected. The next column is the weekly sum which takes the chosen team’s FPI differential for each week. The sum of these five week values (cell S34 highlighted below) are what is being minimized. Finally we have a Total Binary column which will be used as constraint as each team can only be selected once.

How the data was set-up in Excel Solver.

Now that we have the problem to be optimized and our teams’ rankings, we must add our constraints. The first constraint was ensuring all the binary columns were just that, binary

Highlighted columns which were constrained as binary values

Now, because we only choose one team per week, we can make a constraint that says the sum of the weekly binary columns = 1.

Our last constraint is ensuring that each team is only chosen at most once:

Finally we can set up our value to be optimized which is the sum of each week’s selected point differential (cell S34):

After setting up our data, adding our constraints and value to be optimized we are ready to go.

Results

The optimizer is picking Indianapolis Colts over the @ Houston Texans week 1, @ Green Bay Packers over the Chicago Bears week 2, @ Los Angeles Chargers over Jacksonville Jaguars week 3, Los Angeles Rams over @ San Francisco 49ers week 4 and @ Buffalo Bills over Pittsburgh Steelers week 5.

I like all of these picks except week 4, with the Rams going into San Fran, but what is great about this optimizer is that after every week when each team’s FPI is updated, I can update my optimizer and it will give me a new selection. In other words, even though the optimizer is giving me selections five weeks out, I only need to choose the first team selected, in this case the Indianapolis Colts, then after week 1, when we see how teams look, take into account injuries and once each team’s FPI is updated, I can update the model for weeks 2 to 6 and then make my week 2 selection. I can continue this process for the entire 18 week season and hopefully win the pool and some money.

Conclusions and Next Steps

Optimization techniques are vital in optimizing entire systems (entire football season) not just certain silos or departments (NFL weeks). Unfortunately, I couldn’t use Excel Solver to optimize the entire 18 week NFL schedule, but every week, once each teams’ FPI is updated I can make a selection of who will win in that week based on optimizing a five week window. Hopefully in December I will write a new blog post describing how this method allowed me to win the pool and some money.

--

--

Andrew Josselyn

Data Scientist currently working in the transportation and logistics industry. Interested in applying analytics to better my personal everyday life.