The purpose of this page is to post the full details of the Approximate Value method, Doug Drinen's method of putting a single numerical value on any player's season, at any position, from any year (for now, it's just any year since 1950).
What follows are Doug's words, describing how the system works and the thought process that went into its creation...
The Gruesome Details
You should consider this an evolving document, as I will probably be forever tweaking some of the constants described below. At this point, though, it's stable enough that I'm willing to post it.
Every team gets this many points to divvy up among its offensive players:
team_offense_points = 100 * (team offensive points per drive) / (league average offensive points per drive),
offensive points per drive = (7*(rushTD+passTD) + 3*FG) / (rushTD + passTD + turnovers + punts + FGA)
As a unit, the offensive line for a given team will share this many points:
team_points_for_o_line = 5 / 11 * team_offense_points
For each offensive lineman (and fullback and tight end), we define:
individual_points = [(games played) + 5*(games started)*(pos_multiplier)] * (all_pro_multiplier),
where pos_multiplier = 1.2 for tackles, 1.0 for guards and centers, 0.3 for fullbacks, and 0.2 for tight ends,
and all_pro_multiplier = 1.9 for first-team AP all-pro, 1.6 for second-team AP all-pro, and 1.3 for a pro bowler who was not first- or second-team all-pro. [NOTE: all_pro_multiplier is for tackles, guards, and centers only, not fullbacks or tight ends.]
Finally, each individual player receives this many points:
approx_value = (individual_points) / (sum of individual_points for all players on team) * (team_points_for_o_line)
Since we know the entire offensive unit will get team_offense_points, and we gave team_points_for_o_line of those to the line, we have:
team_points_for_skill_positions = team_offense_points - team_points_for_o_line
Now we split that up into two pieces:
team_points_for_rushers = team_points_for_skill_positions * (.22) * [(team_rsh_yards / team_total_yards ) / .37 ]
The .22 figure is again based on theory described in part II. The .37 is the average rushing-yards-to-total-yards ratio of all teams from 1970--present. So a team with a typical run-pass ratio will have 22% of its skill position points allotted to rushing. A team that was more run heavy will have more of its points allotted to rushing, and so on.
Now every individual player gets the following share:
approx_value = (rushing yards) / (team rushing yards) * team_points_for_rushers
Finally, we give a small bonus (or impose a small penalty) to running backs who had 200 or more carries and whose yards per carry average was much higher or lower than the league average:
bonus = .75 * [(yards per rush) - (league yards per rush by RBs)], if the player's yards per rush is better than league average.
penalty = 2 * [(yards per rush) - (league yards per rush by RBs)], if the player's yards per rush is worse than league average.
Note that quarterbacks, wide receivers, and anyone else who compiles rushing yards is eligible to get approximate value points at this stage.
Now onto the passers and receivers....
team_points_for_passers = (team_points_for_skill_positions - team_points_for_rushers) * .26. (see part II for an explanation of the .26.)
So that leaves:
team_points_for_receivers = (team_points_for_skill_positions - team_points_for_rushers) * .74.
Anyone who had a receiving yard gets this many AV points:
approx_value = (receiving yards) / (team receiving yards) * team_points_for_receivers
(Eventually, I might want to work in a touchdown bonus here, but for now there isn't one.)
And similarly for passers.
approx_value = (passing yards) / (team passing yards) * team_points_for_passers
And, as with rushers, we add an efficiency adjustment here:
bonus = .5 * [(Adjusted yards per attempt) - (League average adjusted yards per attempt)], if the player's AYPA was better than league average.
penalty = 2 * [(Adjusted yards per attempt) - (League average adjusted yards per attempt)], if the player's AYPA was worse than league average.
First a bit of a preface...
In part II I said this:
I’ll just state upfront that this is a case where I’m not necessarily opposed to tweaking the metric until it gives us results we’re happy with, instead of picking a theoretical basis and forcing ourselves to stick with it. As I quoted Bill James in the last post: “These approximations are not intended to tell you anything at all about the player that you do not already know.” They’re not supposed to teach us new things; they’re merely supposed to codify the things we already know, so it’s OK to cook the books a little bit until they do tell us what we already know. The problem here is that none of us really knows how to compare Tarik Glenn’s 2006 to Gary Clark’s 1991. And to the extent that we do “know,” we all “know” different things. The point is: while I do think we need some sort of theory to get us started in certain areas, I won’t be too apologetic about making some arbitrary changes if a strict application of the theory leads us to “wrong” answers.
On the offensive side, I let the theory drive the method for the most part, only tweaking the constants a little bit.
On the defensive side of the ball, things just aren't so clear. If we split a defense's production into rushing defense and passing defense, to what extent do then divvy up the passing defense points between pass rushers and pass defenders? I really don't have a clue how to answer that question in general. How much credit do linebackers get for pass defense versus run defense? I don't know. How do we account for the fact that some teams use three linemen and four linebackers and some do the opposite?
I'd rather admit ignorance than pretend to know. So where that leaves me is with defensive players being treated somewhat similarly to offensive linemen. That is, while stats will figure into it to some extent, a defensive player's rating will be largely based on how many games he played, how many games he started, how good his team was defensively, and whether he garnered any all-pro or pro bowl honors.
team_defense_points = 100 * [ (1 + 2 M - M^2) / (2 M) ],
where M = (team defensive points allowed per drive) / (league average defensive points allowed per drive)
team_points_for_front_7 = (2/3) * team_defense_points
team_points_for_secondary = (1/3) * team_defense_points
These two calculations come from the same theory that was used to determine some of the constants on the offensive side. Namely, this post.
Now, for all defensive players, we compute:
individual_points = [(games played) + 5*(games started) + sacks + 4*(fumble recoveries) + 4*(interceptions) + 5*(defensive TDs) + (tkl_constant)*(tackles)] + (all_pro_bonus),
tkl_constant = 0 if the year is before 1994, and otherwise, tkl_constant = .6 if the player is a defensive lineman, .3 if the player is a linebacker, and 0 of the player is a defensive back.
all_pro_bonus = (all_pro_level)*(year_multiplier),
all_pro_level = 1.5 for first-team all-pro, 1.0 for second-team all-pro, and 0.5 for pro bowler
year_multiplier = (year_constant) * (number_of_games_multiplier),
where year_constant = 40 for the pre-sack years (1970--1981) and 80 for the post-sack years (1982--present), and
number_of_games_multiplier = (number of games played by each team in that season) / 16
The point of all these fudge factors is to try to maintain a somewhat equal weight on making the pro bowl across seasons where the stat part of the equation is larger or smaller leaguewide. For example, in 2007, when players get credit for sacks and play 16 games, the stat part of the equation will tend to be larger than in 1972, where players don't get credit for sacks and played 14 games. Thus we need different bonuses, or else all-pro-ness will be diluted in 2007 compared to 1972.
Now, each front-seven player gets:
approx_value = [ (individual_points) / (sum of individual_points for all front-seven players on the team) ] * team_points_for_front_7
and each defensive back gets:
approx_value = [ (individual_points) / (sum of individual_points for all defensive backs on the team) ] * team_points_for_secondary
Every player gets one point of approx_value for each kick or punt return TD.