NFL Analysis with Python: Fantasy Scoring without TDs
Early in the NFL season, analysis is mostly theoretical. We see certain performances in weeks 1, 2, or 3, but we can only weight their importance very little in the scheme of things. We could see something like Mohamed Sanu scoring more fantasy points than Julio Jones in Week 1, but it would be foolish to deduce from this that Sanu is the better fantasy WR. Jones was the #1 WR in all of fantasy football last year, so it makes sense that performance would carry over to this season. And as it turns out, if we reacted too heavily to week 1’s results, we would have been dead wrong. Julio Jones has basically been his old self this season, despite a slow start, and Sanu has been basically irrelevant.
I usually lean too heavily on the “results don’t matter” side of things. Before I began researching for this article, I don’t think I could have named more than 3-4 players in the fantasy top 10 this season. But looking at fantasy performance 10 weeks into the season can certainly give us some valuable information, and it shouldn’t be ignored.
The issue is, while 10 games is much larger sample than 1, 10 games still is very little in the scope of things. Variance is very real in the NFL, and it can significantly skew players, or even entire teams, fantasy numbers.
I’m currently enrolled in a Data Science course in San Francisco, so I thought I’d use my new skills in Python (a programming language) to tackle this issue. I downloaded fantasy data on every player in the NFL this season, and created a new stat I call “No TD Fantasy Points.” The stat is very straightforward, how many fantasy points has this player scored this season if we don’t count TDs?
I felt like this was valuable for a couple of reasons. 1) It takes out some variance in the fantasy point stat, since TDs are worth so many points and are certainly a high variance statistic. But also 2) We have point projections for teams every week from betting lines, scoring is pretty predictable. Given a particular match up, a team can be projected to score as much as 28 points or as few as 17. What I think is valuable is how well is this person or team is performing independent of score, since we can scale this to how much they are projected to score each week.
Team Fantasy Points
Below is a table of Total Team No TD Fantasy Points this season. This isn’t adjusted for games played, so some teams will be higher than others simply because they haven’t had a BYE. I’ll clarify this in my analysis later.
ATL 695.60 NO 688.90 WAS 639.40 SD 634.60 OAK 621.40 PIT 605.80 ARI 604.90 TEN 602.20 TB 582.40 IND 581.30 CIN 577.40 DAL 574.40 DET 574.30 CLE 569.54 NYG 564.40 NE 563.90 GB 559.50 PHI 557.60 DEN 557.40 CHI 554.00 NYJ 552.80 JAX 552.40 BAL 552.20 SEA 550.32 KC 549.10 CAR 544.40 MIN 527.50 MIA 526.00 HOU 502.10 LA 493.10 BUF 457.60 SF 427.00
Here are my takeaways:
1) Atlanta and San Diego haven’t had a BYE yet this season, so their numbers aren’t quite as impressive as Washington, New Orleans, and Oakland. Washington’s place on this list surprised me the most, so I dug a little deeper. Washington is actually 4th in the NFL in yards per game, and are one of the more pass heavy teams in the NFL (since we get a point per reception, teams that pass a lot will score more fantasy points in general). However, their RZ scoring percentage is dead last in the NFL at 38%. Given this number was 58% last year with the exact same personnel, I think this is mostly Washington on the poor side of variance here. Guys like Jordan Reed, Kirk Cousins, and Jamison Crowder aren’t exciting names, but it’s possible these guys are significantly under-valued.
2) New Orleans offense is simply amazing. With Michael Thomas’ fumbling issues, I’m curious if Willie Snead and Brandon Cooks are in for some fantastic games vs Carolina.
3) San Francisco is at the bottom of this list, which makes some sense given how much they run the ball and how inept their offense has been, but this also seems unsustainably bad. The eye test says they have improved with Colin Kaepernick at the helm, and they do get a pretty inept passing D in New England at home in week 11. I think guys like Jeremy Kerley and Vance Mcdonald are sneaky plays.
Now let’s look at this on a micro level. I organized every players No TD Fantasy Points this season and divided it by games played. Here’s what I found (the number on the far right is No TD Fantasy Points Per Game):
player no_td_points no_td_points_pg
1 Le’Veon Bell 132.3 22.050000
2 David Johnson 166.3 18.477778
3 AJ Green 165.4 18.377778
4 Julio Jones 174.5 17.450000
5 Antonio Brown 156.0 17.333333
6 Stefon Diggs 136.0 17.000000
7 Amari Cooper 149.3 16.588889
8 DeMarco Murray 165.3 16.530000
9 Ezekiel Elliott 148.5 16.500000
10 Mike Evans 145.1 16.122222
11 Larry Fitzgerald 140.2 15.577778
12 Melvin Gordon 155.4 15.540000
13 TY Hilton 134.1 14.900000
14 Odell Beckham Jr 133.3 14.811111
15 Spencer Ware 112.6 14.075000
16 Jarvis Landry 126.6 14.066667
17 LeSean McCoy 112.5 14.062500
18 Greg Olsen 126.2 14.022222
19 Theo Riddick 98.0 14.000000
20 Jordan Reed 92.6 13.228571
Here are my takeaways:
1) Le’Veon Bell is incredible. He’s scored 3.5 more No Td Fantasy Points Per Game this season than any other player, and this is playing mostly with an injured Ben Roethlisberger and Landry Jones. It’s also amazing to note that Antonio Brown is also in the top 5, no other team has two players in the top 20. I am bullish on Pittsburgh’s offense as a whole, but I’m especially bullish on Bell.
2) Stefon Diggs is in the top 10, which took me surprise especially considering he had a few poor games in the middle of the year. Minnesota’s offense as a whole is quite bad, so Diggs isn’t going to score a ton of TDs, but it’s worth noting considering he’s been targeted so much in his last couple of games. He may have a poor showing in a tough match up vs Arizona, but expect him to have a big game against the Lions in week 12.
3) Jordan Reed is 20th, and given the Redskins unlucky performance in the RZ, I think he is an underrated fantasy play.
4) Spencer Ware seems like some to particularly be bullish on. Despite being knocked out in week 8 halfway through the game, and only receiving 58% snaps a game this season, he’s 15th on this list. He’s been a great player in terms of Yards After Contact the past 2 seasons, and has made vast improvements in the passing game this season. I project him at about 70% of snaps next week, and Kansas City has a sky high run point share. I think he’ll be vastly under-owned next week.View all posts by Max J Steinberg