In a previous post, I showed how to determine the best starting lineup to draft in an auction draft using an optimizer tool. In this post, I use a Shiny app in R to determine the best possible players to pick in a fantasy football snake draft. The app includes the most accurate fantasy football projections available, and calculates a robust average of more sources of projections than any other website using a robust average (see here for a list of the sources of projections). You can even choose how much weight to give each source. Based on your league settings, it determines which players you should draft to maximize your players’ value over typical replacement players at their respective positions. It also allows you to change your risk tolerance to avoid picking risky players. Best of all, the app updates the selections automatically with your inputs, and you can download the data for yourself. So let’s get to it. Here’s a more thorough description:
How it Works
First, I use a script to scrape player’s projected points from numerous sources using R. Our projections include projections from FantasyPros, an ideal source of projections because it averages across numerous sources of projections, and is the most accurate source of projections. Second, I calculate players’ risk levels, as defined by the standard deviation (uncertainty) around the players’ ranks and projections across sources. Note that risk is standardized to have a mean of 5 and a standard deviation of 2. Third, I take user inputs on league settings to calculate projections that are custom tailored for your league (e.g., based on how many points a passing TD is worth in your league). The projections are based on a weighted average using the source weights input by the user. If the weights are all 1, a robust average is calculated that is less affected by outliers (crazy projections). Fourth, I calculate the value of each player over a typical replacement player at his position. For more info on how to select a typical replacement player, see here.
The output displayed to the user includes the top two players at each position, with the 8 players sorted by value over replacement. I also display the “dropoff” in projected points for the next best 2 players at the same position. If a player has a high dropoff, you should consider targeting them because that position drops in value very quickly. Finally, using the custom rankings for your league settings, I calculate the difference between a player’s overall rank and his average draft position (ADP). Positive values mean the player’s rank for your league is higher than ADP (i.e., he is under-valued according to ADP and you should consider drafting him). Negative values mean the player’s rank for your league is lower than ADP (i.e., he is over-valued according to ADP and will likely be drafted by others in your league too early in the draft).
Note on risk: although bench players are important in the case of a starter’s injury or under-performance, it is generally best to draft starters with minimal risk to ensure solid, if not superior, performance. On the other hand, one should accept more risk with bench players because such a move has a low risk, high reward potential. It may also be worth noting that for bench players, value over replacement may be less important than a player’s upside. I’ve included players’ upside potential in the output, as defined by the players’ average projection plus the standard deviation of his projections across different sources.
Players Drafted: Select all players drafted by you or others (can type player’s name or scroll to select).
ADP: Source of average draft position to calculate the difference between your custom ranking and ADP (positive values means the player’s custom ranking is HIGHER than ADP–i.e., you should target them).
Typical Replacement for QBs: the position rank set to be the “typical replacement player” for a QB (default is 15 from FootballGuys).
Typical Replacement for RBs” the position rank set to be the “typical replacement player” for a RB (default is 36 from FootballGuys).
Typical Replacement for WRs: the position rank set to be the “typical replacement player” for a WR (default is 38 from FootballGuys).
Typical Replacement for TEs: the position rank set to be the “typical replacement player” for a TE (default is 8 from FootballGuys).
Passing Yards Per Point: How many passing yards are worth 1 fantasy point?
Points Per Passing TD: How many points is each passing touchdown worth?
Points Per Passing INT: How many points is each interception worth?
Rushing Yards Per Point: How many rushing yards are worth 1 fantasy point?
Points Per Rushing TD: How many points is each rushing touchdown worth?
Points Per Reception: How many points are receptions worth?
Receiving Yards Per Point: How many receiving yards are worth 1 fantasy point?
Points Per Receiving TD: How many points is each receiving touchdown worth?
Points Per Fumble: How many points is each fumble worth?
Maximum Risk Tolerance: Selects the maximum risk allowed for any player to be considered for inclusion in the optimal starting lineup. Players’ risk levels have a mean of 5 and a standard deviation of 2.
How much weight to give each source of projections when calculating projected points. If all weights = 1, a robust average is calculated. Otherwise, a weighted average is calculated. For instance, if you want to exclude ESPN projections, you would give them a weight of 0. If you want to give Yahoo projections twice the weight of CBS, you would give Yahoo a weight of 2 and CBS a weight of 1.
The Shiny App
Below is a preview of the Shiny App for optimizing your draft by picking the players that maximize your starting lineup’s projected points. For the actual Shiny App, go to: http://fantasyfootballanalytics.net:3838/Snake Draft/