Table of Contents
- Mission Statement
- Methodology
- Historical Analyses
- Lineup Generation
- Task Management
- High Level Tasks
To create a platform where we can analyze fantasy football data and give the community the abillity to generate daily fantasy football lineups in real time to actively test the results.
The database we have at our disposal consists of a mix of data collected from FanDuel, NFL.com, CBS.com, and FFtoday.com. (ffanayltics.com was used to aid in data collection). The data categories that we have to work with are as follows
| Player | Team | Position | Age | Experience | Bye | Actual Points | Upper | Standard Deviation | Position Rank | Tier | Point Spread | Risk | Salary |
What category/categories do you think can be used to help find the highest Actual Point total on average?
Finding the right data to key off of is no small feat, it will take many different minds from all different walks of life. Watch the demos below, read the proposed methodolgy to help form your own method, and understand the tools you can use to start testing your own solutions. If a function doesn't exist today please feel free to contribute!
Using top Fantasy Football projection predicting platforms (nfl.com, cbssports.com, fftoday.com) we have assigned each player a standard deviation value for each week, and will do so for every week in the future once the projections come out.
This value is determined by taking the three projections and finding the standard deviation of the 3 numbers.
| Platform | Player | Projections |
|---|---|---|
| NFL | Derrick Henry | 18 |
| CBS | Derrick Henry | 15 |
| FFToday | Derrick Henry | 22 |
| NFL | Duke Johnson | 10 |
| CBS | Duke Johnson | 13 |
| FFToday | Duke Johnson | 12 |
| Player | Standard Deviation |
|---|---|
| Derrick Henry | 2.867 |
| Duke Johnson | 1.247 |
We then generate a list of all the players for the upcoming week according to this model. Once we have our list where each player has a standard deviation value assigned to them we can generate our daily fantasy lineup.
By assigning each player a standard deviation value we can now pose the question..
Which standard deviation value yields the highest points scored?
In order to answer this question we first need to collect data.. which we have.
FLEX/flex/Revised_data/ffa_proj
We will take these standard deviation values, that are assigned to each player, and pair them with the actual points each player scored for every week over the past 5 years.
This allows us to analyze which standard deviation is the best over time in numerous different ways. With this list and the code in place to generate valid lineups based on the players standard deviation value and FanDuel salary, overtime the optimal standard deviation value for each position in a lineup will reveal itself. (See Analyis section for more info)
Our goal will be to then generate a lineup for the upcoming week based on players that have our desired standard deviation value. We can easily do this since the standard deviation value is being calculated based on incoming projections that are released days before the game.
| Step | Description |
|---|---|
| 1 | All projection data will be downloaded from the following web application FFAnalytics Projections |
| 2 | placeholder for Fanduel affiliate link... |
| 3 | We then store that weeks projections and FanDuel player and salary data in the FLEX github repo. FLEX/flex/Revised_data/ffa_proj |
| 4&5 | Then we will use Python with the Google Sheets API to ensure the projection data corresponds to the appropriate FanDuel player data. We rely on the following tests to accomplish this. FLEX/flex/tests/tier-0/test_sheets_prereq (Each week will be its own sheet.) #TODO Figure out how to make Google Sheets available to public in view only and available through the api for fellow developers. |
| 6 | Then we use Python to read the data from the Google Sheet and use it to drive our build lineup tests. FLEX/flex/tests/tier-0/test_sheets_prereq |
| 7 | The output of step 6 will be a valid Fanduel lineup that can now be manually entered into the app or web for the proper NFL contest. #TODO Make output into .csv file for easier consumption. |
Using a community driven approach to increase the number of different standard deviation combinations that we can record. This will be accomplished by providing a website for users to control sliders and generate their own lineups, which will be recorded and combined with all other previous runs in the database.
Tickets will be tracked and assigned on the following Trello board https://trello.com/b/k1UY8kRD/flex-project
- Collect database of historical data as far back as possible (5 years currently) a. Using Google Sheets as the database, making API calls to Google Sheets to work with the Data.
- Write python script/library to scrape webpages to pull down current projections week to week while in season. Save files as XMLs or CSVs
- Depending how files are stored import into Google sheets and automate how to create the STD list
- Build webpage that allows you to generate lineups for that weeks players. a. Include sliders to change the STD number that you assign for the code to pull players from b. Store all generated lineups and evaluate based on post week results save only lineup configuration that yeild a high result.
- Send link to community and advertise that using this can help them win $$$
- Create Facebook, Instagram, and twitter for Flexproject
Disclosure: The Fanduel link above is an affiliate link. I will earn commission if you click through and create and fund a FanDuel account. "Python" and the Python logos are trademarks or registered trademarks of the Python Software Foundation.
