I’m doing a brief review of Python again, as it relates to things that draft fans might like, and note that the random and statistics modules all seem pretty useful.

So, the design goal here is: can we make a good enough simulation to tell us something about draft strategy. Can we learn something about BPA versus need by using Python code? Right now I don’t have an answer, but I can show you some of the approach so far.

One thing I’ve found if you’re moving from another language into Python, that you can eliminate a lot of scope issues if you’ll do certain substantial bits of work in a Python class. The scope of self variables is easy to measure and then you’re not wondering whether the common variable in Python has exactly the same scope, as say, a lexical in Perl.

So for now, we present the Playa class, a “draftable” object.


import random
from statistics import mean
from pprint import pprint

random.seed()

class Playa:
    def __init__(self, oldid=0):
        self.value = random.randrange(1,101)
        self.pos = self.getposition()
        self.id = oldid + 1
        self.drafted = False
        self.meanshift = -1000.0

    def __repr__(self):
        return "Playa id:{0:3d} pos:{1:s} val:{2:3d}".format( self.id, self.pos, self.value )

    def out(self):
        return "id:{0:3d} pos:{1:s} val:{2:3d}".format( self.id, self.pos, self.value )

    def getposition(self):
        poslist = ["QB","RB","WR","FL","SR","TE","LT","LG","RT","RG","OC"]
        return poslist[random.randrange(0,11)]

    def draft(self):
        self.drafted = True

This object will allow us to generate players and then associate them with teams. Players can be identified by their id, a draft value can be derived from their real value (1-100), and a logical variable shows whether they are drafted or not.

I’m only using offensive positions in this simulation. And since more and more teams use a slot receiver as opposed to a fullback, we have “SR” in our position charts.

If with 32 teams, you generate 320 players per draft, then the values of 1 to 100 break nicely, as real value of 91 to 100 are first round talent, 81 to 90 are second round talent, and so on.

Advertisements

I’ll continue posting my odds, though this has not been the best season for them. Jacksonville continued to be best modeled by their median point spread, as opposed to their playoff formula. Philadelphia outperformed any reasonable prediction of their play once Wentz went down.

My system gives an edge to New England. Philadelphia played a tougher schedule but lacks playoff experience by my system. There is no home field in the Superbowl.

Super Bowl Playoff Odds
Home Team Visiting Team Score Diff Win Prob Est. Point Spread
New England Patriots Philadelphia Eagles 0.586 0.642 4.3

Video has become available, in the right places, of the 1950 Sugar Bowl, Oklahoma and LSU, and early in that video, you see LSU line up with a pair of split ends. And interestingly, the defensive ends of Bud Wilkinson’s 5-2 go out with them.

okie-5-2-1950-sugar-bowl-dends-cover-recvrs

And this is important because the answer to the question of when did 5-2 defensive ends acquire pass responsibilities is, more or less, right from the start. This isn’t a ad-hoc defense that Bud cooked up. Oklahoma was playing this defense all that year (1). You see the 5-2 all through the video, tight and loose. And to the question of which was an older keying defense, the Oklahoma is absolutely older than the 6-1 Umbrella (Oct of 1950, as opposed to the January bowl game), and so is older than Tom Landry’s 4-3 inside/outside.

So where did these stand up defensive ends come from? As far as I can tell, common practice. In the 1950 game, you’ll see LSU on defense with 4 players in a 3 point stance, flanked by two players in a two point stance. That’s a 6-2 defense, 1940s style.

Sugar-Bowl-1950-Okla-Split-t-w-flanker-vs-LSU-6-2-front

And images from the 1945 Sugar Bowl (Alabama – Duke) show it wasn’t unique to LSU.

Ala-Duke-1945-SugarBowl-Ala-6-2-def-standup-defensive-ends

I’ve had coaches I respect tell me that Bud’s 5-2 has antecedents in General Neyland’s defenses. I have seen some video of the 1952 TN team but none that quite shows the kind of flexibility shown by Bud on the first image in this article.

Dan Daly has a new blog and I think people should check it out. Doug Farrar is supposedly working on an article about Clark Shaughnessy and I hope it turns out well. It’s not easy to disambiguate facts in Shaughnessy’s time frame and I hope he does his homework on that one.

Notes

1. Keith, p 55.

Bibliography

Keith, Harold, Forty-seven Straight: The Wilkinson Era at Oklahoma, University of Oklahoma Press, 1984.

Outside of the New England game, all the games were good and exciting, from the final goal line stand by the Eagles, to the win with ten seconds left by the Vikings. The Jacksonville Jaguars are just not well managed by this system. It was easy to see that through the year that they were a boom or bust team. They could win big or lose big, and in the game with the Steelers, they were enough in “win big” mode that the Steelers could not keep up.

Philadelphia won because of their stout defense, a Nick Foles that gave them a AYA of 8.2 for the game, much akin to Carson Wentz’s average.

To remind people, the 2017 worksheet is here, and the methodology is here. The odds for the next round are below.

Conference (NFC/AFC) Playoff Odds
Home Team Visiting Team Score Diff Win Prob Est. Point Spread
Philadelphia Eagles Minnesota Vikings -0.604 0.353 -4.5
New England Patriots Jacksonville Jaguars 1.872 0.867 13.9

The first round is over and in terms of predicting winners, not my best (by my count, 1-2-1, as we had Jax and Bills in a de facto tie). I was pleased that the model got Rams and Atlanta correct, and the Sunday games all came down to the wire. One or two plays and my formal results would have been impressive. Still, back to the predictions for this week.

To add some spice, we will predict results for New Orleans normally, and also as if Drew Brees is elite. Values in parentheses are the elite numbers. With elite status or no, Minnesota is still favored in this data set.

The only home team not favored is Philadelphia. We discussed this in part in this article.

Second Round Playoff Odds
Home Team Visiting Team Score Diff Win Prob Est. Point Spread
Philadelphia Eagles Atlanta Falcons -0.878 0.294 -6.5
Minnesota Vikings New Orleans Saints 1.231 (0.484) 0.774 (0.619) 9.1 (3.6)
New England Patriots Tennessee Titans 1.674 0.842 12.4
Pittsburgh Steelers Jacksonville Jaguars 1.915 0.872 14

Summary: Replacing Wentz with Foles removes about 6.5 points of offense from the Philadelphia Eagles, turning a high flying offense into something very average.

Last night the Atlanta Falcons defeated the LA Rams. Now we’re faced with the prospect of the Falcons playing the Eagles. I have an idiosyncratic playoff model, one I treat as a hobby. It is based on static factors, the three being home field advantage, strength of schedule, and previous playoff experience. And since it values the Eagles as 0.444 and the Falcons as 1.322, the difference is -0.878 (win probability in logits). The inverse logit of -0.878 is 0.294, which is the probability of the Eagles winning, and an estimated point spread would be a 6.5 point advantage for the Falcons.

Another question that a Falcons or Eagles fan might have is how much is Carson Wentz worth as a QB, in points scored? We can use the adjusted yards per attempt stat of Pro Football Reference to estimate this, and also to estimate how much Carson Wentz is better than Foles. We have made these kinds of analyses before for Matt Ryan and Peyton Manning.

Pro Football Reference says that Carson Wentz has a AYA of 8.3 yards per attempt. Nick Foles has a AYA of 5.4. Now lets calculate the overall AYA for every pass thrown in the NFL. Stats are from Pro Football Reference.

(114870 yards + 20*741 TDs – 45*430 Ints) / 17488 Attempts
(114870 yards + 14820 TD “yards” – 19350 Int “yards”) / 117488 Attempts
110340 net yards / 17488 yards
6.31 yards per attempt to three significant digits

So about 6.3 yards per attempt. Carson Wentz is 2 yards per attempt better than the average. Nick Foles is 0.9 yards less than the average. The magic number is 2.25 which converts yards per attempt to points scored per thirty passes. So Carson, compared to Foles, is worth 2.9 * 2.25 = 6.5 points per game more than Foles, and 4.5 points more than the average NFL quarterback.

This doesn’t completely encompass Carson Wentz’s value, as according to ESPN
‘s QBR stat
, he account for 10 expected points on the ground in 13 games, so he nets about 0.8 points a game on the ground as well.

Now, back to some traditional stats. The offensive SRS assigned to Philadelphia by PFR is 7.0 with a defensive SRS of 2.5. If Carson Wentz is worth between 6.5 and 7.3 points per game, then it reduces Philadelphia’s offense to something very average, about 0.5 to -0.3. That high flying offense is almost completely transformed by the loss of their quarterback into an average offense.

Note: logits are to probabilities as logarithms are to multiplication. Rather than multiplying probabilities and using transitive rules, you just add the logits and convert back. Logarithms allow you to add logarithms of numbers rather than multiplying them.

One of the ESPN folks posted FPI odds today, retweeted by Ben Alamar. The numbers are very different from my playoff formulas. The nature of those odds made me suspect that FPI is intrinsically an offensive stat, with the advantages and disadvantages of such a stat.

One of the issues I’ve has with offensive stats is that the confidence interval of any I’ve looked at, in terms of predicting playoff performance, is that those confidence intervals are on the order of 85%. Whatever flaws of my formulas, they fit to confidence intervals of 95%. The effects they touch on are real.

But still, the purpose of this is to compare FPI odds to the odds generated by some common offensive stats. We’re using Pythagorean expectation, as generated by my Perl code, SRS as generated by my Perl code, and median point spread, also calculated by my code.

Results are below.

FPI Odds versus Other Offensive Stats
Game FPI Pythag Simple Ranking Median Pt Spread
Kansas City – Tennessee 0.75 0.75 0.79 0.73
Jacksonville – Buffalo 0.82 0.89 0.86 0.73
Los Angeles – Atlanta 0.62 0.75 0.74 0.68
New Orleans – Carolina 0.70 0.73 0.74 0.78

 

The numbers correlate too well for FPI not to have a large offensive component in its character. In fact, Pythagorean odds correlate so well with FPI I’m hard pressed to know what advantages FPI gives to the generic fan.

Note: the SRS link above points out that PFR has added a home field advantage component to their SRS calcs. I’ll note that our SRS was calibrated against PFR’s pre 2015 formula.