Background reading:

Part I

Part II

Part III

I’m going to assume you have read the first three parts of this series; today, I want to go through how to adjust passer rating by era while keeping the weights of 5, .25, 20, and 25 on the four variables. As a reminder, here are the formulas used for the four variables in passer rating, once you ignore the upper and lower limits:

A = (Cmp% – .30) * 5

B = (Y/A – 3.0) * .25

C = TD% * 20

D = 2.375 – Int% * 25

Adjusted Completion Percentage

For completion percentage, we can do a simple era adjustment because the multiplier is not directly tied to league average. Instead, league average is intended to be 20% higher than the floor, which is 0.30 in the original formula. So we need to rewrite completion percentage as simply

A = (Cmp% – (League_Avg_Cmp% – 0.20) ) * 5

So in an environment where the league average completion percentage was 50%, you would insert 0.3 in the blue parenthetical; in 2016, tho, you would insert 43.0%.

Adjusted Yards per Attempt

Just like with completion percentage, we can do a simple era adjustment because the multiplier is not tied to the league average rate. Here is the current formula:

B = (Y/A – 3.0) * .25

Remember, the goal was to make B = 1 for league average, and since we divide the result in the parenthetical by 4 (or multiply by 0.25), it’s easy to figure out that the average Y/A was supposed to be 7.0. League average in this metric hasn’t changed much, but we can still era-adjust this simply with the following formula:

B = ( Y/A – (League_Avg_Y/A – 4.0) ) * .25

For 2016, we would insert 7.2 into the blue parenthetical. It gets a little bit trickier with the next two.

Adjusted Interception Rate

Let’s skip ahead to this one, since we have been focusing on it the last two days. Here is the current formula:

D = 2.375 – Int% * 25

In an environment where the league average INT rate is 5.5%, this “works” in producing a result of 1.0 for the average passer. But to keep the multiplier at 25 and also adjust for era, we must use the following formula:

D = 2.375 – (Int% * 25 + (1.375 – 25 * LgAvgINT_Rate) )

For 2016, you get a result of 0.8 in the blue parenthetical; with a 2.3% interception rate, that would cause the full parenthetical to sum to 1.375, giving us a 1.0 result for an average passer. This is what we described yesterday, and we can use a similar formula for touchdown rate.

Adjusted Touchdown Rate

Here is the current, simple formula:

C = TD% * 20

But again, we don’t want the multiplier of 20 to fluctuate, which was intended to work with a 5.0% touchdown rate. Instead, we need something like this:

C = TD% * 20 + (1 – 20 * LgAvgTD_Rate)

For 2016, this involves adding 0.14 as the constant. That’s because the league average TD rate was 4.3%; so an average passer would get 0.86 before you add what’s in the parenthetical, which is simply 1 minus 0.86. This is a clean solution that keeps the value of a TD at 80 yards (putting aside whether that’s good or proper, it at least doesn’t change the internal structure of passer rating).

New Formula

Here are the new formulas for each of the four variables:

A = (Cmp% – (League_Avg_Cmp% – 0.20) ) * 5

B = ( Y/A – (League_Avg_Y/A – 4.0) ) * .25

C = TD% * 20 + (1 – 20 * LgAvgTD_Rate)

D = 2.375 – (Int% * 25 + (1.375 – 25 * LgAvgINT_Rate) )

This is essentially what the designers of passer rating would have done in 1972 if they were worried about era adjustments, in my opinion. This would have resulted in substantially the exact same formula for the 1973 season, but would have a built in era adjustment.

If you want to put this into excel, you can use the following formula:

=IF(C2>223,SUM(MEDIAN(0,2.375,(D2/C2-(H2-.2))*5),MEDIAN(0,2.375,((E2)/C2-(I2-4.0))*0.25),MEDIAN(0,2.375,(F2/C2*20)+(1-20*J2)),MEDIAN(0,2.375,2.375-((G2/C2*25)+(1.375-25*k2))))/6*100,0)

With the following cells containing these values:

C2 = Attempts

D2 = Completions

E2= Passing Yards

F2 = Passing Touchdowns

G2 = Interceptions

H2 = Lg_Avg_Cmp%

I2 = Lg_Avg_Y/A

J2 = Lg_Avg_TD%

K2 = Lg_Avg_INT%

Using this formula, every passer in 2016 sees a decline of 22.59 points in their passer rating. That’s a good thing: it adjusts for era without changing the order within a given season. Seeing a bunch of passer ratings in the 60s and 70s would take some getting used to, but based on league averages of 63.0%, 7.15 Y/A, 4.30 TD%, and 2.27 INT%, we get the following results:

Rk Att Cmp Yds TD Int Passer Rating Passer Rating+ 1 Matt Ryan*+ 534 373 4944 38 7 117.1 94.5 2 Tom Brady* 432 291 3554 28 2 112.2 89.6 3 Dak Prescott* 459 311 3667 23 4 104.9 82.3 4 Aaron Rodgers* 610 401 4428 40 7 104.2 81.6 5 Drew Brees 673 471 5208 37 15 101.7 79.1 6 Sam Bradford 552 395 3877 20 5 99.3 76.7 7 Kirk Cousins 606 406 4917 25 12 97.2 74.6 8 Derek Carr* 560 357 3937 28 6 96.7 74.1 9 Andrew Luck 545 346 4240 31 13 96.4 73.8 10 Marcus Mariota 451 276 3426 26 9 95.6 73.0 11 Ben Roethlisberger* 509 328 3819 29 13 95.4 72.8 12 Ryan Tannehill 389 261 2995 19 12 93.5 70.9 13 Matthew Stafford 594 388 4327 24 10 93.3 70.7 14 Russell Wilson 546 353 4219 21 11 92.6 70.0 15 Andy Dalton 563 364 4206 18 8 91.8 69.2 16 Alex Smith 489 328 3502 15 8 91.2 68.6 17 Colin Kaepernick 331 196 2241 16 4 90.7 68.1 18 Tyrod Taylor 436 269 3023 17 6 89.7 67.1 19 Philip Rivers 578 349 4386 33 21 87.9 65.3 20 Carson Palmer 597 364 4233 26 14 87.2 64.6 21 Jameis Winston 567 345 4090 28 18 86.1 63.5 22 Eli Manning 598 377 4027 26 16 86.0 63.4 23 Trevor Siemian 486 289 3401 18 10 84.6 62.0 24 Joe Flacco 672 436 4317 20 15 83.5 60.9 25 Carson Wentz 607 379 3782 16 14 79.3 56.7 26 Blake Bortles 625 368 3905 23 16 78.8 56.2 27 Case Keenum 322 196 2201 9 11 76.4 53.8 28 Cam Newton 510 270 3509 19 14 75.8 53.3 29 Brock Osweiler 510 301 2957 15 16 72.2 49.6 30 Ryan Fitzpatrick 403 228 2710 12 17 69.6 47.0

Current passer ratings are out of control, so these adjustments will allow us to compare passers across different eras. We’ll do that tomorrow using this formula. For now, let me know your thoughts in the comments.