Baseball Economist

This is an attempt to replicate J.C. Bradbury's Marginal Revenue Product estimates of player values in his book, "The Baseball Economist," described in Chapter 13 and the footnotes. I tweaked the intercept values on the regression to make the RS/RA estimates balance out to league average team.

These estimates do not include park adjustments, unlike the ones Bradbury provides. Since he provides no details of his park adjustments or the method he uses to apply them, I thought this was best. In the future I may attempt to back-figure Bradbury's park adjustments.

This is simply a description of his method, not an endorsement or advocacy of it.

```SELECT b.playerID
, b.yearID
, b.teamID
, @PA := (AB + BB + HBP + SF) AS PA
, @PCT_PA := @PA/T_PA AS PCT_PA
, @OBP := ROUND( (H + BB + HBP) / @PA, 3) AS OBP
, @SLG := ROUND( (H + 2B + 2*3B + 3*HR) / AB, 3) AS SLG
, ROUND(@RS := 3012.54 * @OBP + 1688.17 * @SLG + 29.18 * IF(b.lgID="AL",1,0) - 972.734579) AS RS
, ROUND(@RSAA :=(@RS - 744.166700) * @PCT_PA,2) AS RSAA
, ROUND(@ValAA := (.126 * @RSAA + .000665*POW(@RSAA,2)) * 1000000) AS \$ValAA
, ROUND(54500000 * @PCT_PA + @ValAA) AS MRP
, Salary
FROM bdb.batting b
, (SELECT teamID, lgID, (AB + BB + HBP + SF) AS T_PA FROM bdb.teams WHERE yearID = 2005) t
, bdb.salaries s
WHERE b.yearID = 2005
AND b.teamID = t.teamID
AND s.yearID = 2005
AND b.playerID = s.playerID
AND b.teamID = s.teamID
AND AB > 0
ORDER BY MRP Desc;

SELECT p.playerID
, p.yearID
, p.teamID
, @ip := (IPOuts/3) AS IP
, @PCT_IP := @ip/T_IP AS PCT_IP
, @K9 := 9 * SO/@ip AS K9
, @BB9 := 9 * BB/@ip AS BB9
, @HR9 := 9 * HR/@ip AS HR9
, ROUND(@RA := (-25.83 * @K9 + 60.65 * @BB9 + 249.5 * @HR9 - 2957.069187 + 26.64 * IF(p.lgID="AL",1,0) + 3400.108063)) AS RA
, ROUND(@RABA := (744.166700 - @RA) * @PCT_IP,2) AS RABA
, ROUND(@ValAA := (.126 * @RABA + .000665*POW(@RABA,2)) * 1000000) AS \$ValAA
, ROUND(54500000 * @PCT_IP + @ValAA) AS MRP
, Salary
FROM bdb.pitching p
, (SELECT teamID, (IPOuts/3) AS T_IP FROM bdb.teams WHERE yearID = 2005) t
, bdb.salaries s
WHERE p.yearID = 2005
AND p.teamID = t.teamID
AND s.yearID = 2005
AND p.playerID = s.playerID
AND p.teamID = s.teamID
ORDER BY MRP Desc;
```
page revision: 0, last edited: 23 Feb 2009 03:34