Fantasy Football Forecasting

This is a personal, ongoing project to predict the performance of players in fantasy football. In it's current state, the program operates only on teams, and not individual players (Updated November 2022).

To predict the top performers, we download the historical and new weekly data with the nfl_data_py module. This data does not have weekly values, but we can aggregate the play-by-play data on a weekly basis by team and player. After aggregating the data by season, week, and team, we perform rolling averages for a given week. We use a set of these rolling average features as the training data in our machine learning algorithms. Depending on the algorithm, we also include scaling of data, and dimensionality reduction with principal component analysis. The training and test data were from 1999-2019 and 2020-2022 respectively. We test a few popular ML algorithms for forecasting.

For testing the results we consider not only the ability of our models to correctly predict factors such as rushing yards or sacks, but more importantly whether or not the top performers in a given week are correctly identified. As fantasy football is about picking the top performers, we don't need to have high precision in our results, as long as the top performers match up.

In it's current state, we are only forecasting values on a team level. This is a necessary step in predicting an individual player's performance, as this will be highly dependent on the team and their opponent. Going forward, the team performance will be a major factor in individual player performance, and will be an input to those models.

Start at data exploration