Below is a post I submitted to Reddit’s /r/fantasyfootball. I was and am trying to draw attention to my app, a fantasy football draft wizard. This post did mediocre. It got ~170 upvotes but was surpassed by another post warning about Fantasy Football Calculator. Apparently it’s a scam. I don’t like it either, but that’s because their ADP values are lies.

Anyway while my post below topped the subreddit for most the day, I only got 10-12 visits to the application, so I am posting it here to get some extra value out of it.

Overview

I am interested in how league settings affect draft strategy. Things like the number of teams and league scoring. My guess is that one-size-fits-all rankings/tiers are misleading for any non-vanilla league.

This post is about PPR: probably the most discussed FF setting. There was discussion on this sub earlier this week. And just this year, PPR became the new normal on NFL’s platform, so it’s especially worth considering if about to make the switch.

Figures

Change in rank

Player value over time

Players

Below are more players who are particularly affected by PPR for the 2019 season. The players below had the 20 largest absolute differences in value based draft rank position between PPR and standard leagues. The diff column below is the change in the player’s rank in a non-PPR versus a PPR league using a value based draft strategy (described at the bottom; 1.0-rank - 0.0-rank). A negative number means the player should be drafted sooner in a PPR league as compared to a non-PPR league.

nameposadp-stdadp-ppr0.0-rank0.5-rank1.0-rankdiff
Tarik CohenRB63.058.0755552-23
Zach ErtzTE28.524.8413824-17
Michael ThomasWR12.810.6332216-17
James WhiteRB63.356.0554740-15
Travis KelceTE15.815.021207-14
Vance McDonaldTE90.596.8989985-13
Jarvis LandryWR68.062.8745963-11
Will FullerWR84.383.082829412
Robby AndersonWR82.377.270728313
Marlon MackRB32.535.225323813
Mike WilliamsWR61.565.459637314
Tevin ColemanRB69.573.463697916
Darrell HendersonRB83.381.6868310216
Chris CarsonRB48.557.615243116
Derrick HenryRB32.536.811172918
Nick ChubbRB20.021.817273518
Jordan HowardRB86.087.677799619
Tyreek HillWR54.048.660678020
Sony MichelRB40.046.810193222
Rashaad PennyRB81.081.6909214656

Takeaways

If you’re in a PPR league, do what you were probably going to do anyway: wait longer on rush-dependent RBs like Nick Chubb, Jordan Howard, and Sony Michel. Think about getting a pass-heavy TE sooner than you would in standard. And definitely let some other team get Rashaad Penny if you’re in round 7.

Another news flash: avoid rankings or tiers that don’t specify whether it’s for a PPR league or not. But realize that generic rankings and tiers feed into ADP, since lots of drafters are looking at them. Look for players where their usage warrants an earlier pick than their ADP, like James White and Travis Kelce.

Methods

All the source code for this is available on Github (scrapers, Jupyter notebook, etc)

Player stat projections from CBS, ESPN, and NFL were averaged. Stats like estimated number of receptions, touchdowns, rushing yards, etc were stored from each site for each player. Season-end projections were calculated using ESPN’s standard scoring (below) with 0.0, 0.5 and 1.0 points per reception. The value of each player was calculated as that players’ expected points after the season versus their first replacement player. The replacement player for each position was one past than the typical number of players in that position drafted within 100 picks (via ADP data from FantasyPros). This is a more robust method than the number of starters per team + 1, since it better accounts for actual draft behavior (ex: kickers don’t start showing up in round 5).

Players reported here had an ADP <= 100 (with non-PPR or PPR scoring) or a value based rank <= 100 (with non-PPR or PPR scoring). In other words, they will be picked in every draft. Message me if you want to see more players, I chose top 20 to keep it focused.

points = { # standard ESPN scoring
 "pass_yds": 0.04,
 "pass_tds": 4.0,
 "pass_ints": -2.0,
 "receptions": 0.0, # the stat that's varied
 "reception_yds": 0.1,
 "reception_tds": 6.0,
 "rush_yds": 0.1,
 "rush_tds": 6.0,
 "fumbles": -2.0,
 "two_pts": 2.0,
 "kick_extra_points": 1.0,
 "kick_0_19": 3.0,
 "kick_20_29": 3.0,
 "kick_30_39": 3.0,
 "kick_40_49": 4.0,
 "kick_50": 5.0,
 "df_ints": 2.0,
 "df_tds": 6.0,
 "df_sacks": 1.0,
 "df_points_allowed_per_game": 0,
 "df_fumbles": 2.0,
 "df_safeties": 2.0,
}

Future

Let me know if there’s a particular stat or league setting that you’re interested in.

I started with PPR because it’s so commonly discussed. But it is also covered ground. Already, sites like FantasyPros separate out their ECRankings into non-PPR versus PPR ranks.

In the short-term I want to expand this approach to look at the number of teams in the league, number of QBs, points per passing touchdown, etc. Again, my guess is that those changes have knock-on effects for draft strategy that don’t present themselves in most existing rankings.

You can also manually play with settings like PPR via my draft assistant at https://www.ffdraft.app/. It has up-to-date (every 3hrs) aggregated projections with customizable league scoring and league size. You can change the value of receptions in Settings > Score to see how it affects value based rankings (ps: it’s best on desktop).