Combining Machine Learning and Optimization Modeling in Fantasy Basketball

fantasy basketball

Author: Jerry Yurchisin

Fantasy sports has turned into a mainstream activity over the last ten to twenty years with leagues now working with popular fantasy sports sites as official partners. If you’re not familiar with fantasy sports, the goal is to select players from a slate of real games to fill out a virtual lineup.

The player’s selected then have their performance converted to fantasy points, So for example a basketball player’s points, rebounds, assists and turnovers will produce a single fantasy point value. The highest overall total is used to determine winners of large competitions. In short, you want to pick your dream team.


But it’s not so easy as just picking the best players as each one is given a salary value and your lineup’s total salary can’t exceed a given value (the salary cap). Your lineup also must satisfy position constraints which makes selecting a lineup a little more difficult.

Below are two examples that use machine learning to predict player’s fantasy points. In the first, the predictive model is created and point forecast is generated, followed by created an optimization model that selects the best five-player lineup. In the second example the same forecast is used but the optimization model is expanded to reflect actual fantasy basketball competitions.

Access the Jupyter Notebook Modeling Example

Click on the link below to access the example in Google Colab, which is a free, online Jupyter Notebook environment that allows you to write and execute Python code through your browser.

Fantasy Basketball Part 1

Fantasy Basketball Part 2

How to Run the Jupyter Notebook Modeling Example

-To run the example the first time, choose “Runtime” and then click “Run all”.
-All the cells in the Jupyter Notebook will be executed.
-The example will install the gurobipy package, which includes a limited Gurobi license that allows you to solve small models.
-You can also modify and re-run individual cells.
-For subsequent runs, choose “Runtime” and click “on “Restart and run all”.
-The Gurobi Optimizer will find the optimal solution of the modeling example.
Check out the Colab Getting Started Guide for full details on how to use Colab Notebooks as well as create your own.