Fangraphs does an excellent job of tracking park factors for each MLB Stadium, but I’ve always wondered why it seems to over-rate the Rays bats while under-valuing their pitching. Everyone knows intuitively that each park plays differently when it comes to scoring runs, but a bit more nuance shows that each park favors various outcomes differently, as well. Currently, wRC+ appears to use the “basic” PF for adjusting wOBA for park, but this may not be the best approach. Come along for the ride as I attempt to find a better way to adjust for park effects.

First things first, what are the basic inputs for wOBA? We know that scoring runs is dependent upon getting on base and hitting for power. While OBP and SLG do a good job of representing each of these aspects they have flaws due to having different denominators (which is why you should almost never use OPS), but also due to their own inputs. OBP considers a walk and a home run to be of equal value while SLG considers a home run to be worth four times as much as a single, while not even including walks. The beauty of wOBA is that it combines both of these things and uses linear weights to derive the actual run expectancy of each outcome. You can scale these things to league offense, but I prefer to use the static coefficients that you find in the link above:

BB: 0.72 runs

1B: 0.90 runs

2B: 1.24 runs

3B: 1.56 runs

HR: 1.95 runs

You can also include HBP (0.75 runs) and ROE (0.92 runs) and shouldn’t include intentional walks in both the numerator and denominator, but these are extraneous to what we’re doing today, therefore, they will not be included going forward.

We have the coefficients of each result in one hand and in the other we have the frequency that each of these events happen in each park in the other so let’s see what happens when we put them together. First off, I want to clean some of this stuff up on the park-side. Instead of using just the 2013 park factors I used the last three years weighted 3:5:7, such that, 2011 carried a weight of three, 2012 used five, and 2013 the strongest weight at seven. This is an effort to increase the sample size, but also to acknowledge that more recent data should be considered more heavily. That gives us something like this:

We now have a good idea of the frequency of these events at each park, but we cannot just multiply this by our coefficients, because we still need to include the frequency of each event across MLB. Otherwise, we’re saying that singles occur as often as homers, and that’s just not the case. To that end I, again, weighted the last three years to get the likelihood of each event occurring per plate appearance:

BB: 8.0%

1B: 15.3%

2B: 4.5%

3B: 0.5%

HR: 2.5%

So now we can multiply each of these frequencies with each of the park factors and also multiply by the linear weight and then divide by the league average frequency of each even multiplied by the linear weight in order to derive what our wOBA component-adjusted Park Factor would look like. It’s rather messy, but here’s a formula:

(((a1B*b1B)*c1B)+((a2B*b2B)*c2B)+((a3B*b3B)*c3B)+((aHR*bHR)*cHR)+((aBB*bBB)*cBB))/((a1B*b1B)+(a2B*b2B)+(a3B*b3B)+(aHR*bHR)+(aBB*bBB))

Where:

a = Weighted Average Park Factor for that component

b = League Average Frequency of that component

c = Linear Weights Run Value of that component

That give us this expanded chart:

The column “wOBA” is the output of all this tedious work and I have also included the “Basic” adjustment that I believe Fangraphs is currently using to scale wOBA to wRC+. The last column on the right shows the inflation/deflation between each measure with a positive number showing that the “Basic” adjustment inflates the affect of the park while the opposite being the case where there is a negative.

In the case of the Rays, they’ve been treated as if their park deflates offense at a rate of 5% relative to league average when my method shows that figure to be more like 2% so “Basic” is over-adjusting Rays batters at around 3% more than it needs to. Here’s a look at how this affects the past seven years:

This isn’t going to be the difference between league best and worst, but with all the time put into these things and their evolution over a number of years (decades) I feel this is a more precise measure for adjusting wOBA to wRC+. Like any first attempt, I welcome any and all feedback to take this from the crazy thoughts of a madman and turn it into something that all can agree is capturing real affects. Provide commentary below or hit me @sandykazmir.

I will be using these adjustments going forward for the matchup tool that Ian and I have been developing over the last couple of years. Tweaks will be easy to implement so don’t be bashful.