How to calculate Offensive Value
Today I will sum up how I would calculate the offensive value of a player according to widely available stats and without regard to league and era differences (remember that these differences will be accounted for in a later part of my formula).
Take a deep breath... and here we go.
**Warning: if your text size is set too big, the math below will look jumbled because I have no idea how to format math for the web without a special tool. You can adjust your text size using the "view" menu of your browser's main menu bar.**
First we need a foundation to build on, and because ultimately you win in baseball when you score more runs than the other guy, offensive value can be boiled down to how many runs does a player account for? Let's talk about a hypothetical player named "Bob" and let's begin with the obvious:
(HR + (runs-HR) + (RBI-HR)) = direct offensive output.
You have to treat homeruns separtely from runs and RBIs to keep big sluggers from double dipping or being penalized. These numbers can be skewed, though, by players like Fred McGrif who were essentially compilers with really long careers. I think we should give some weight to longevity, but I don't think an average 15-year player should eclipse an outstanding 10-year player, so for now, I suggest we put these numbers in a context of total plate appearances (PA).
(HR + (runs-HR) + (RBIs-HR)) / PA = basic offensive value.
Now we have another consideration: what about guys who were great, but did not have a great supporting cast? Let's define some variables.
1BP = the Batter immediately Preceeding Bob in the lineup,
2BP = the batter 2 spots ahead of Bob in the lineup,
3Bp = the batter 3 spots ahead...
and so on--you get the picture--until 5BP (I'm pretty sure it's impossible for any player batting more than 5 spots ahead of Bob to have any affect on his performance, but correct me if I'm miscounting).
Also,
1BA = the Batter immediately After Bob in the lineup,
2BA = the batter 2 spots behind Bob in the lineup...
and so on until 6BA (once again, the maxium number of trailing batters who could have affected Bob's place in history).
Ok, back to the math. Ideally, to adjust for unequal supporting players, we could normalize RBIs by how many runners were on base for Bob and which bases they were on. We would also normalize runs by the likelihood of the batters following Bob driving him in. Both of these fatctors are WAY too hard to calculate exactly, and beyond the scope of this discussion anyway. But I think both of these factors can be approximated using three simple modifications of the On-Base Plus Slugging (OPS) stats for the batters around Bob. For the batters preceeding Bob, the modified OPS needs to be downgraded to eliminate the influence of homeruns, since a homer by a batter preceeding Bob would negate the influence of all previous batters on Bob's stats by clearing the bases. Thus for batters 1BP through 5BP, the modified OPS would be calculated as
(AB(H + BB + HBP) + (TB - 4(HR))(AB + BB + SF + HBP)) = modOPS1
(AB (AB + BB + SF + HBP))
On the other hand, batters following should be rewarded rather than penalized for sacrifices. Their modified OPS would be calutated as
(AB(H + BB + HBP) + (TB + Sac)(AB + BB + SF + HBP)) = modOPS2
(AB (AB + BB + Sac + HBP))
Further refining the calculation, the 5BP would have a smaller all-time effect on Bob than the 1BP, just because there's more potential plays between their at-bats. The same would go for the 6BA compared to the 1BA so I will also introduce a factor that attempts to account for this difference. I have arbitrarily given this difference an exponential characteristic, but you can feel free to argue if this should really have a linear or other shape.
So now we have the formula:
(HR+((runs-HR)/((modOPS21BA + (.975)modOPS22BA + (.925)modOPS23BA + (.825)modOPS24BA + (.625)modOPS25BA + (.225)modOPS26BA)/6)) + ((RBIs-HR)/((modOPS11BP + (.975)modOPS12BP + (.925)modOPS13BP + (.825)modOPS14BP + (.625)modOPS15BP)/5))) / PA = near offensive value.
Let's boil this down into something we can chew on:
(HR+((runs-HR)/average modified and adjusted OPS for the 6 following batters) + ((RBI-HR)/average modified and adjusted OPS for the 5 previous batters) / Plate Appearances = near offensive value.
Now what about components of offensive value that are not reflected in runs and RBIs (like moving runners over for the next batter)? Well, I'm out of time, so I'll let you guys debate the formula for this variable in the comments. And I'll see what I can come up with for next time.


Leave a comment