What is an OPS? Part 4

Today we’ll cover the S in OPS, Slugging ratio.  The P in OPS stands for Plus, thus the formula


OBP is the chocolate, Slugging ratio (SLG) is the peanut butter and OPS is a Reece’s peanut butter cup.   Total Bases (TB) is a fundamental building block stat that SLG relies on.  It weights a 1B = 1, 2B = 2, 3B = 3, and HR =4.  Not too complicated!   This means it follows our Keep It Simple Stupid (KISS) principle to this data model.

Total Bases

Total Bases is an interesting concept and players accumulate these like they do Home Runs, Stolen Bases, etc.   Slugging ratio is simply


The range for this ratio is 0 – 4.   The definition of a percentage is “any proportion or share in relation to a whole.”  This requires a ratio with a range of 0 – 1 which SLG does not qualify.  Someone should fix the Wikipedia definition.

Since the Slugging stat implies actually hitting a baseball they chose not to include walks into Total Bases and thus, its denominator is the At Bat (AB) stat and not Plate Appearance which includes walks.  But what does this Slugging stat mean?

First let’s answer the question: “On average, how many total bases occur for each hit?”   We’ll use a post White Sox scandal dataset (1920 – 2016).  Adding up all TBs and Hs from every player every year we get:

TB / H = 1.505  (1920 – 2016)

This is very close to the fraction 3/2 and there might be a way to prove that TB/H always converges to that when the number of seasons approaches infinity.   For now we’ll just call this baseball equation true for all seasons.

TB = 1.5 * H  <— KISS

Since BA = H / AB , then

SLG / BA = ( TB / AB ) / ( H / AB ) = ( ( 1.5 * H / AB ) / ( H / AB ) = 1.5

Therefore SLG = 1.5 * BA  <— KISS

What does this mean?  If a batter has a BA of 0.300 his Slugging ratio should be 0.450,  If it is above, that hitter is hitting with more power, below, less than average power.   If we assume that baseball constant of 1.5 is close enough, just like we assume 9 innings is close enough to be considered an entire game for ERA, then that simplifies these equations drastically.  You can do the above calculation in your head.

This only tells you whether or not a hitter hits a lot of extra base hits.  This may be important for a manager determining a lineup but it does not describe that player’s actual value to the team’s wins and losses.  SLG and TB are game stats.

Now that we introduced TB let’s meander.  Runs Created uses TB.

What is Runs Created?

Runs Created was a Bill James concept to estimate runs from certain kind of hits and events that occur in the game.   Wikipedia has a page that describes it.  In its most basic form it boils down to this:

RC =  ( H + W ) * TB / PA

There are some algebra mistakes on that page but none of this matters.   There is quite a bit of unproven nonsense that follow which expand upon the above.  They take an end result and try to mold a formula to fit that end result.  This is not how math is supposed to work.

In the next part I’ll run some numbers using the above formula to see how close it is to the actual runs produced.  I do not know exactly how WAR is calculated but know Runs Created is a big part.  We pull in the WAR value stat to compare with ours.  When we see a disparity in batters it’s usually due to error in how they calculate RC.

Here is another way to estimate Runs Created:

RC = H / 2  <— KISS

Whenever you see an RHE line in a baseball game divide the H column by 2.  If that team’s runs exceeds the number of runs they are getting good value on their hitting.  How do we know this?

H / R = 2.01  ( 1920 – 2016 ) 

I suspect this too converges to an even 2 for some reason if there are an infinite number of seasons played.  The standard deviation for this from year to year is 0.1 so it’s pretty consistent.  This is another interesting baseball constant that can be used with game stats and simple enough to calculate in your head and possibly more accurate than all the various concoctions the Sabermetric crowd comes up with.

In Part5 we will continue this meander and show some Runs Created data and compare it to actual runs created.  Until then….