Analysis


Bill traded up to pick 7 to get QB Josh Allen.

Josh Allen Trade
Buffalo Bills Buccaneers Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
7 32 12 35
53 22
56 19
Total 32 Total 76
44 2.38

~~~
The Cards moved up to pick 10 to draft Josh Rosen
~~~

Josh Rosen Trade
Cardinals Raiders Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
10 41 15 28
79 18
152 9
Total 41 Total 55
14 1.34

~~~
Saints move up to get Marcus Davenport, DE
~~~

Marcus Davenport Trade
Saints Packers Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
14 29 27 25
147 8
(25) 24
Total 29 Total 57
28 1.97

~~~
Bills go up to get Tremaine Edmunds
~~~

Tremaine Edmunds Trade
Bills Ravens Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
16 32 22 27
154 12 65 21
Total 44 Total 48
4 1.09

~~~
Packers trade again to get Jaire Alexander
~~~

Jaire Alexander Trade
Packers Seahawks Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
18 29 27 25
248 5 76 17
188 5
Total 34 Total 47
13 1.38

~~~
Titans trade up for Rashaan Evans
~~~

Jaire Alexander Trade
Packers Seahawks Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
18 29 27 25
248 5 76 17
188 5
Total 34 Total 47
13 1.38

~~~
Ravens trade 2019 assets to get their QB
~~~

Lamar Jackson Trade
Ravens Eagles Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
32 23 52 22
132 11 125 15
(48) 25
Total 34 Total 62
28 1.82
Advertisements

The first version of my Open Source Draft Simulator I wrote in time to analyze the draft of 2001, and it was based on C++. Later on, in 2007, while trying to get a job, I rewrote the simulator in Ruby because I was trying to impress people that I could learn the language. I didn’t get the job. The Ruby simulator isn’t as statistically versatile, but it works on multiple sports.

I pulled out that ten year old code, in part to see if it still works, and part to see if I could make use of the data I had received from Ourlads. Ourlads does a 32 team needs list, which in general is the hardest part of setting up a draft simulator.

The ruby code, as downloaded, has a dependence on the module ‘rdoc/usage’. It is not essential, and I recommend you comment out or delete the line that says ‘require ‘rdoc/usage”. At that point you’ll have a working program. If all the warnings at the beginning bother you, remove the -w flag from the hash bang (first) line.

On Linux create all the files and then get rid of the ^Ms at the end of the lines. I had originally developed this sim on Windows. You can use perl to remove the ^M characters with something like perl -pre ‘s/\r//g’.

Data sources? Sports Illustrated has a top 100 list that works well. The top 100 list from NFL Draft Scout also yields useful results. I used Ourlads as my ‘serious’ set of needs, but Lance Zierlein has a set, as do other sites.

A typical rule file in my current setup is:

#
# rule file for Cleveland Browns.
#
rule need
#
needlist QB RB OL DB DE
#
cond QB max 1 high 
#
cond RB max 1

To note, with the SI top player set, if you don’t set QB to a “high” need, you’ll end up drafting Saquon Barkley number one. That’s one of the things I like about my own code. Slight changes in the needs of a single team can cause ripple effects throughout the draft.

A typical mock draft using this setup is:

ruby rubysim.rb -y 2018 -s football

This mock draft was made by rubysim.rb on 2018-04-16


Round 1.

1. Cleveland Browns select Sam Darnold, QB.
2. New York Giants select Bradley Chubb, DE.
3. New York Jets select Baker Mayfield, QB.
4. Cleveland Browns select Saquon Barkley, RB.
5. Denver Broncos select Josh Allen, QB.
6. Indianapolis Colts select Quenton Nelson, G.
7. Tampa Bay Buccaneers select Minkah Fitzpatrick, S.
8. Chicago Bears select Roquan Smith, LB.
9. San Francisco 49ers select Calvin Ridley, WR.
10. Oakland Raiders select Denzel Ward, CB.
11. Miami Dolphins select Vita Vea, DT.
12. Buffalo Bills select Josh Rosen, QB.
13. Washington Redskins select Josh Jackson, CB.
14. Green Bay Packers select Derwin James, S.
15. Arizona Cardinals select Connor Williams, OT.
16. Baltimore Ravens select Mike McGlinchey, OT.
17. Los Angeles Chargers select Tremaine Edmunds, LB.
18. Seattle Seahawks select Marcus Davenport, DE.
19. Dallas Cowboys select Da'Ron Payne, DT.
20. Detroit Lions select Harold Landry, DE.
21. Cincinnati Bengals select Leighton Vander Esch, LB.
22. Buffalo Bills select Courtland Sutton, WR.
23. New England Patriots select Derrius Guice, RB.
24. Carolina Panthers select Isaiah Oliver, CB.
25. Tennessee Titans select Maurice Hurst, DT.
26. Atlanta Falcons select Taven Bryan, DL.
27. New Orleans Saints select Christian Kirk, WR.
28. Pittsburgh Steelers select Rashaan Evans, LB.
29. Jacksonville Jaguars select Kolton Miller, OT.
30. Minnesota Vikings select Arden Key, DE.
31. New England Patriots select Isaiah Wynn, G.
32. Philadelphia Eagles select Justin Reid, S.

Round 2.

33. Cleveland Browns select James Daniels, C.
34. New York Giants select Lamar Jackson, QB.
35. Cleveland Browns select Mike Hughes, CB.
36. Indianapolis Colts select Jaire Alexander, CB.
37. Indianapolis Colts select Ronnie Harrison, S.
38. Tampa Bay Buccaneers select Carlton Davis, CB.
39. Chicago Bears select D.J. Moore, WR.
40. Denver Broncos select Hayden Hurst, TE.
41. Oakland Raiders select Donte Jackson, CB.
42. Miami Dolphins select Ronald Jones II, RB.
43. New England Patriots select Mike Gesicki, TE.
44. Washington Redskins select Will Hernandez, G.
45. Green Bay Packers select Orlando Brown, OT.
46. Cincinnati Bengals select Billy Price, C.
47. Arizona Cardinals select Chukwuma Okorafor, OT.
48. Los Angeles Chargers select Rasheem Green, DT.
49. Indianapolis Colts select Sam Hubbard, DE.
50. Dallas Cowboys select James Washington, WR.
51. Detroit Lions select Brian O'Neill, OT.
52. Baltimore Ravens select Jessie Bates, S.
53. Buffalo Bills select Deon Cain, WR.
54. Kansas City Chiefs select Tim Settle, DT.
55. Carolina Panthers select Lorenzo Carter, DE.
56. Buffalo Bills select Martinas Rankin, OT.
57. Tennessee Titans select Armani Watts, S.
58. Atlanta Falcons select Harrison Phillips, DT.
59. San Francisco 49ers select Uchenna Nwosu, LB.
60. Pittsburgh Steelers select Dallas Goedert, TE.
61. Jacksonville Jaguars select Anthony Averett, CB.
62. Minnesota Vikings select DeShon Elliott, S.
63. New England Patriots select Tyrell Crosby, OT.
64. Cleveland Browns select Ogbonnia Okoronkwo, DE.

Round 3.

65. Buffalo Bills select Darius Leonard, LB.
66. New York Giants select Sony Michel, RB.
67. Indianapolis Colts select Desmond Harrison, OT.
68. Houston Texans select Mark Andrews, TE.
69. New York Giants select Mason Rudolph, QB.
70. San Francisco 49ers select Dante Pettis, WR.
71. Denver Broncos select Kerryon Johnson, RB.
72. New York Jets select Nick Chubb, RB.
73. Miami Dolphins select Jerome Baker, LB.
74. San Francisco 49ers select Equanimeous St. Brown, WR.
75. Oakland Raiders select Malik Jefferson, LB.
76. Green Bay Packers select Michael Gallup, WR.
77. Cincinnati Bengals select Ian Thomas, TE.
78. Washington Redskins select Frank Ragnow, C.
79. Arizona Cardinals select Geron Christian, OT.
80. Houston Texans select Kyzir White, S.
81. Dallas Cowboys select Jamarco Jones, OT.
82. Detroit Lions select Jeff Holland, DE.
83. Baltimore Colts select Josh Sweat, DE.
84. Los Angeles Chargers select Trenton Thompson, DT.
85. Carolina Panthers select D.J. Chark, WR.
86. Kansas City Chiefs select Braden Smith, G.
87. Los Angeles Rams select Kemoko Turay, DE.
88. Carolina Panthers select Dorance Armstrong Jr., DE.
89. Tennessee Titans select Tarvarus McFadden, CB.
90. Atlanta Falcons select Chad Thomas, DE.
91. New Orleans Saints select Jordan Lasley, WR.
92. Pittsburgh Steelers select Shaquem Griffin, OLB.
93. Jacksonville Jaguars select Rashaan Gaulden, CB.
94. Minnesota Vikings select Tre'Quan Smith, WR.
95. New England Patriots select Anthony Miller, WR.
96. Buffalo Bills select Simmie Cobbs Jr., WR.
97. Arizona Cardinals select Joseph Noteboom, OT.
98. Houston Texans select Nick Nelson, CB.
99. Denver Broncos select Rashaad Penny, RB.
100. Cincinnati Bengals select Jaylen Samuels, RB.

There are a number of ways to analyze a draft trade. You can do it by comparing the actual players selected (though that takes time), you can do it by trade value, as measured by a trade chart, or you can do it by using the Pro Football Reference statistic approximate value. There are charts of approximate value per draft choice and those charts can be used to calculate trade values and risk immediately.

The recent blockbuster trade by the Jets involves substantially more risk than the last five major trade ups in the NFL (here, here and here). To make these calculations I assume the Jet’s pick next year will be the 10th pick in the second round, hence the 42nd pick.

Trade for 3rd Pick
Jets Colts Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
3 45 6 39
37 28
49 20
42 25
Total 45 Total 112
67 2.49

 

With a risk ratio of 2.7 2,5, the risk incurred by the Jets is a bit less to what Washington put up with in the RGIII trade. It’s also comparable to the Earl Campbell trade. The last two trades were high risk – never paid back kinds of trades (though with Earl Campbell, the team’s competitiveness during his peak years may have been enough emotionally for the Oilers).

Update: recalculated risk, which now stands at 2.5 instead of 2.7.

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.

This would have been done earlier, but Pro Football Reference dropped its very handy chart of draft position versus AV. I started missing it more and more, and using the Wayback Machine I found it here.

The three major QB trades of 2017 were the trade for Mitch Trubisky, Patrick Mahomes, and Deshaun Watson. We will analyze them in sequence.

Mitchell Trubisky Trade
Chicago Bears 49ers Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
2 46 3 45
67 19
111 12
(71) 21
Total 46 Total 97
51 2.11

 

The Bears have a trade risk comparable to a typical trade for a #1 draft choice and a quarterback at that. The trade has less fundamental risk than Goff or Wentz. The comparable that comes to mind is Eli Manning. By contrast, the delta AV of the other two trades are substantially less.

Patrick Mahomes Trade
Chiefs Bills Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
10 41 27 25
91 17
(25) 24
Total 41 Total 66
25 1.61

 
Mahomes merely has to give six seven good years, and the trade ends up warranted. The issue in the case of Deshaun Watson is keeping him upright. A fistful of whole years almost as good as his freshman year in the NFL and he would end up bordering on Hall of Fame numbers.

Deshaun Watson Trade
Texans Browns Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
12 35 25 24
4 44
Total 35 Total 68
33 1.94

 

So here is wishing Deshaun Watson a healthy career from now on.

I didn’t expect another trade of this magnitude, and so quickly. But let’s crunch the numbers on this trade, and compare them to the 2016 Titans-Rams trade.

The Browns received from the Eagles, the #8, #77 and #100 picks in this draft. In 2017 they receive the Eagles first round pick. In 2018 they receive the Eagles 2nd round pick. The Eagles have received the #2 pick in this draft, and the Browns 4th round pick in 2017.

For the purposes of this calculation, we assume the Eagles will pick 20th in 2017 and 2018, and that the Brown in 2017 will rise from 2nd to 10th.

 

The AV costs of the 2016 Eagles Browns trade.
Eagles Browns Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
2 46 8 40
(138) 8 77 12
100 17
(20) 29
(52) 22
Total 54 Total 120
66 2.22

 

The Delta AV for both trades are the same, but since the Eagles received a lot less AV, the relative ratio of AV given to AV received is higher. The trade cost is the same, but the purchase is more highly leveraged.

Determining how to assess draft trades in the NFL is not hard (see here, here, and here). Ever since Pro Football Reference went through the trouble of determining what average AV can be assigned to a draft slot, it’s merely a matter of counting. The technique has some variance, as the draft slot of a future pick is not known. Even so, with a bit of conservative extrapolation, you can still get a feel for the overall cost of a trade.

 

First, the numbers:

 

The AV costs of the 2016 Rams Titans trade.
Rams Titans Results
Pick Average AV Pick Average AV Delta AV Risk Ratio
1 51 15 28
113 14 43 24
177 5 45 25
76 17
(20) 29
(84) 13
Total 70 Total 136
66 1.94

 

In the data above, we assume that the Rams will improve 5 slots in draft placement, so that the first and third they sent to the Titans would be picks 20 and 84. If the Titans end up 18th or 23rd, it’s notable that the difference in value at this point is less than the point-to-point deviation, so that kind of change won’t affect the calculation much. Pro Football Reference’s raw data are moderately noisy.

The Rams total investment is 136 AV, roughly equal to the career value of John Elway. That’s not entirely accurate, as the Rams actually received three picks in return, and if the other two return 19, then the player they pick at #1, to return the value of the investment, only has to yield 117 AV.Now, 117 points is about mid in between Phillip Rivers and Aaron Rogers in value.

Update: Johnny Unitas, at 114, is a closer comparable.

In terms of risk, the trade is riskier than the Eli Manning trade, and less risky than the RG III trade or the Earl Campbell trade. For 9 more AV than the RG III trade, they received 24 more AV in return.

Best of luck to the Rams. I hope their picks work out well for them.

Next Page »