Analysis
OPS+ explained: how baseball's adjusted OPS really works
The OPS+ formula, the park and league adjustment underneath it, and the reason a figure of 145 does not mean a hitter was 45 per cent above average.
By CricketTaken EditorialPublished Analysis19 min read
A broadcast graphic puts 150 next to a hitter's name and the commentary says he has been fifty per cent better than the average major leaguer. Check that against his batting line and the arithmetic will not come out. His on-base plus slugging is not fifty per cent above the league's on-base plus slugging, and it never will be, because that is not what the number was built to say.
This is the standing confusion about OPS+ in baseball. The statistic is presented as a percentage, is read as a percentage, and behaves like one only by coincidence. The formula is short, published, and does exactly one clever thing. Once you can see the clever thing, every odd property of the number stops being odd.
Start with the statistic underneath it
OPS is on-base percentage added to slugging percentage. MLB's own glossary puts it plainly: OPS "adds on-base percentage and slugging percentage to get one number that unites the two." That is the whole construction. No weighting, no adjustment, no attempt to reconcile the two things being added.
The two things are worth looking at properly, because the trouble starts here.
On-base percentage asks how often a hitter avoided making an out. Hits, walks and hit-by-pitches sit on top; at-bats, walks, hit-by-pitches and sacrifice flies sit underneath. It is close to a genuine rate: the share of trips to the plate that did not end with the hitter gone.
Slugging percentage asks something entirely different. Total bases on top, at-bats underneath. A single is one, a double two, a triple three, a home run four. It is not a percentage at all in the ordinary sense, since its maximum value is four rather than one, and its denominator deliberately excludes the walks that on-base percentage counts.
So OPS adds a number bounded at 1.000 to a number bounded at 4.000, using two different denominators, and treats the sum as meaningful. It should not work. It works well enough to have survived decades of people pointing out that it should not, because the two components happen to capture the two things a hitter can usefully do, and because the sum tracks scoring closely enough to be worth quoting.
What OPS cannot do is tell you whether a given figure was any good. A batting line put up in a season when everybody hit, in a park where the ball carries, is not the same accomplishment as the identical line in a low-scoring year at sea level. That gap is the job OPS+ was invented to fill.
The OPS+ formula, and what each piece is doing
MLB publishes the calculation as:
100 x (OBP/lgOBP + SLG/lgSLG - 1)
Four moves, in order.
Divide each component by its own league average. The hitter's on-base percentage goes over the league's on-base percentage. His slugging goes over the league's slugging. Each division produces a ratio centred on 1.00, where 1.10 means ten per cent better than the league at that particular thing. This is the step that makes cross-era comparison possible: a hitter is no longer being measured on an absolute scale but against the people he actually played among.
Add the two ratios. A hitter exactly average at both gets 1.00 plus 1.00, which is 2.00.
Subtract one. The average hitter is now at 1.00 rather than 2.00. The subtraction has no deeper meaning than that. It is a recentring device, and it is also the single source of most of the misunderstandings that follow, because it makes the output look like a ratio when it is a sum.
Multiply by 100. The average hitter reads 100 and the decimal point disappears.
The park and league corrections do not appear as separate terms in that expression. They are folded into the league figures on the bottom of each fraction. MLB describes the result as one that "accounts for external factors like ballparks", and says the metric "adjusts so a score of 100 is league average, and 150 is 50 percent better than the league average." That last clause is the official description of the scale, and it is worth being careful about what it can and cannot mean, which is the subject of a later section.
- Compute on-base percentageHits, walks and hit-by-pitches over at-bats, walks, hit-by-pitches and sacrifice flies. The share of plate appearances that did not end in an out being recorded against the hitter.
- Compute slugging percentageTotal bases over at-bats. One for a single, two for a double, three for a triple, four for a home run, and walks excluded from both halves of the fraction.
- Take the season's league baselineThe same two figures computed across the whole league for that season, which is what makes the comparison a comparison with contemporaries rather than with history.
- Adjust the baseline for the parkThe league figures the hitter is measured against are shifted according to his home ballpark, so a hitter in a park that helps offence is being asked to clear a higher bar.
- Divide, twiceOn-base over league on-base. Slugging over league slugging. Two ratios, each centred on 1.00, each expressing an edge in proportional rather than absolute terms.
- Add the ratios and subtract oneAdding gives 2.00 for a league-average hitter, so one is subtracted to put average back at 1.00. This is presentation rather than mathematics, and it is where the number stops being a ratio.
- Multiply by 100 and roundThe published figure. A whole number, no decimal, and no units, because there are no units left to carry.
The order of operations for a single hitter's season. The park correction enters through the league baseline rather than through the player's own line.
What OPS+ in baseball actually measures, with numbers you can check
Every figure in this section is invented and chosen to be round, so the arithmetic can be done in your head. No real league or player is being described.
Take a constructed league where the average hitter posts an on-base percentage of .320 and a slugging percentage of .400. Take a constructed hitter in that league, in a park with no effect on scoring, who finishes at .384 and .500.
His on-base ratio is .384 divided by .320, which is 1.20. He reached base twenty per cent more often than the league.
His slugging ratio is .500 divided by .400, which is 1.25. He was twenty-five per cent better at slugging.
Add them: 2.45. Subtract one: 1.45. Multiply by a hundred: an OPS+ of 145.
Now do the comparison the commentary implies. His OPS is .384 plus .500, which is .884. The league's OPS is .320 plus .400, which is .720. Divide one by the other and he sits at 123 per cent of the league, which is to say twenty-three per cent better.
145 and 123 are both correct. They answer different questions. The first adds two proportional edges. The second takes the ratio of two sums. There is no arrangement of the arithmetic that makes them the same number, and no hitter for whom they will agree unless he is exactly league average.
The decomposition is what makes the figure readable. Rewrite the formula as 100, plus 100 times the on-base edge, plus 100 times the slugging edge, and the components fall out cleanly.
- The league-average baseline100
- On-base edge over the league20
- Slugging edge over the league25
The same invented hitter. The three parts add exactly, because OPS+ is a sum rather than a ratio: 100 for the baseline, 20 for the on-base edge, 25 for the slugging edge.
Show the numbers
| Item | Value |
|---|---|
| The league-average baseline | 100 |
| On-base edge over the league | 20 |
| Slugging edge over the league | 25 |
Read the figure that way and it becomes honest again. An OPS+ of 145 says this hitter's proportional edge in reaching base plus his proportional edge in slugging came to forty-five percentage points. That is a real and useful statement. It is simply not the statement that he produced forty-five per cent more than an average hitter, and the two get conflated in almost every place the number appears.
The number is not a rate, and here is the proof
A rate has a fixed relationship between its scale and the thing it measures. Doubling the number should mean doubling the underlying quantity. OPS+ does not behave that way, and you can demonstrate it without leaving the arithmetic.
MLB's glossary entry for wRC+, a different index built on the same convention of 100 for average, states the property a true index has: "Every point of wRC+ above or below 100 is equal to one percentage point above or below average." Nothing equivalent can be said about OPS+. A point of OPS+ is a point of combined proportional edge, and combined proportional edge is not a quantity anybody scores runs in.
Three fixed points on the scale make the shape of it obvious, and all three are properties of the formula rather than observations about anybody.
- 100League-average hitter
- 0Half the league in both components
- -100No times on base, no total bases
Derived from the published formula rather than from any season. The zero point is a hitter at exactly half the league's on-base and half its slugging; the floor is a hitter who never reached base and never recorded a total base.
That floor is the giveaway. A statistic whose worst possible value is minus one hundred is not measuring production on a proportional scale, because production cannot be negative. A hitter who does nothing at all is not producing minus a hundred of something. He is producing nothing, and the formula assigns him minus a hundred because subtracting one from zero and multiplying by a hundred is what the formula does.
There is a subtler consequence. Because the number is a sum of two ratios, two hitters with the same OPS can post different OPS+ figures, and a hitter with a higher OPS can finish below a hitter with a lower one.
Stay in the same constructed league, .320 and .400.
The patient hitter finishes at .400 on-base and .400 slugging. His OPS is .800. His ratios are 1.25 and 1.00, so his OPS+ is 125.
The slugger finishes at .352 on-base and .456 slugging. His OPS is .808, eight points higher. His ratios are 1.10 and 1.14, so his OPS+ is 124.
Higher OPS, lower OPS+, same league, same park. Nothing has gone wrong. The adjustment has done precisely what it was designed to do, and what it was designed to do is not preserve the ordering of the raw statistic.
The weighting quirk nobody mentions
The standing objection to OPS is that it treats a point of on-base percentage and a point of slugging percentage as equally valuable. FanGraphs states the case directly: OPS "overrates power hitters and underrates high-OBP guys", because "OBP is roughly twice as important as SLG in terms of its effect on run scoring."
Something interesting happens to that objection once you divide by league averages.
In raw OPS, one point of on-base and one point of slugging are worth the same, by construction. In OPS+ they are not, and the reason is arithmetic rather than intention. Dividing by a smaller denominator produces a larger ratio for the same absolute gain, and league on-base percentage is always smaller than league slugging percentage.
Work it in the constructed league. A hitter one point of on-base above the league sits at .321 over .320, which is 1.003125, adding 0.3125 to his OPS+. A hitter one point of slugging above the league sits at .401 over .400, which is 1.0025, adding 0.25. The ratio between them is 1.25, which is exactly league slugging divided by league on-base.
So OPS+ tilts towards on-base ability compared with the statistic it adjusts. The tilt is real, it is a free side-effect of the normalisation, and it moves in the direction the criticism says it should. It does not move far enough. If reaching base is worth something like twice what slugging is worth per point, a correction factor set by the ratio of two league averages will not close the gap, and it drifts from season to season according to a quantity that has nothing to do with run values.
Here is the honest summary of OPS+ as a weighting scheme. Accidentally better than OPS, deliberately worse than a statistic built from run values. That is why anybody with access to both reaches for something else when the question is close, and why the construction of ballpark corrections matters as much as the batting line they are applied to.
How the park adjustment actually enters
The park correction is the whole reason OPS+ exists rather than a simple league-relative OPS, and it is the part of the calculation people are vaguest about.
A park factor expresses how much a stadium changes scoring relative to a neutral one. Set at 100 for neutral, above 100 for a park that helps offence, below for one that suppresses it. The correction is applied to the league baseline in the denominators, so a hitter whose home park inflates offence is measured against a higher bar, and one in a suppressive park against a lower one. His own batting line is left alone.
Five things follow, and four of them are limitations.
It is a home-park correction, not a schedule correction. A hitter plays roughly half his games away, at a set of parks that differs from the set his rivals visit. Only the home park is in the adjustment. Two team-mates get identical treatment; two players in different divisions with wildly different road schedules get no correction for that difference at all.
It is normally a multi-year factor. A single season is not enough data to separate a park's effect from the quality of the hitters who happened to bat in it. Smoothing across several years fixes the noise problem and creates a lag problem. Move a fence, install a humidor, change the height of a wall, and the factor keeps carrying information about the park as it used to be.
One number is applied to a whole batting line. Parks do not distort every outcome by the same amount. A stadium can suppress home runs while creating doubles in an oversized outfield, or help left-handed pull hitters and nobody else. A single multiplier cannot express that, so it prices the average hitter's exposure to the park rather than this hitter's.
It corrects for the venue and not the opposition. Nothing in OPS+ knows which pitchers a hitter faced. A division of strong rotations and a weak one are treated identically.
Everything it does capture, it captures well. Altitude, the shape of an outfield, the run environment created by a city's weather. These are large, persistent, and would otherwise sit inside the raw number pretending to be talent. Stripping them out is worth putting up with the four caveats above.
Reading OPS+ in baseball without being fooled
Some things the number will not tell you, listed because each one gets asked of it anyway.
It is a rate, so it ignores playing time. A hitter at 160 across a quarter of a season and one at 160 across a full one share an OPS+ and did not contribute the same amount. The statistic that resolves that multiplies rate by opportunity, which is why the wins-above-replacement framework exists at all, and why it disagrees with OPS+ so often about who had the better year.
It contains no defence, no baserunning and no position. A catcher and a designated hitter with identical OPS+ figures did not deliver identical value, and the number has no mechanism for saying so.
It contains no luck adjustment. A hitter whose batted balls fell in at an unusual rate carries that straight into his on-base and slugging figures, and OPS+ passes it through untouched. The metric that isolates that particular effect is the rate at which balls in play become hits, and reading it alongside OPS+ is how you tell a genuine step forward from a season that will not repeat.
It has no built-in error bar. OPS+ is printed as a whole number, which invites people to compare 138 against 134 as though the gap were meaningful. Over a partial season it is not. The components are noisy, the park factor is estimated, and the league baseline shifts.
There is no pitching version of it. The equivalent index for pitchers is built from earned run average rather than from OPS, and it runs the division the other way, so that a lower earned run average produces a higher figure. Sharing the convention of 100 for average does not make the two numbers comparable.
OPS+ against wRC+, and what a disagreement tells you
wRC+ is the statistic OPS+ would be if it were rebuilt from scratch today. It prices each plate-appearance outcome by the runs that outcome is actually worth, sums the prices, adjusts for park and league, and scales the result so that, as MLB puts it, "a wRC+ of 100 means a league-average hitter, and a wRC+ of 150 means a hitter is 50% better than league average."
MLB's own glossary notes that the two are close relatives, saying wRC+ "is similar to OPS+, which adjusts a player's OPS to league average in the same way", and that "a hitter's wRC+ and OPS+ for a given season will almost always look very similar."
Almost always. The interesting cases are the exceptions, and they are predictable from what you now know about the formula.
A hitter who draws an unusual number of walks with modest power will tend to score better on wRC+ than on OPS+, because the run-value approach pays properly for reaching base while OPS+ pays only the accidental premium described earlier.
A hitter with extreme power and a poor on-base percentage will tend to do relatively better on OPS+, for the mirror-image reason. Slugging is being counted at closer to face value than its run value justifies.
A hitter with a large gap between his singles and his extra-base hits can move between the two, because slugging weights a home run at four times a single while the run values feeding wRC+ do not, since a single with runners on base does work that a coefficient of one cannot express.
None of that makes OPS+ wrong. It makes it a rougher instrument with a known and directional bias, which is a perfectly reasonable thing to use as long as you know which way the bias points.
Why 100 is not the middle of a leaderboard
The league baseline in the denominator is computed across the whole league, and the whole league includes every plate appearance taken by every hitter, not only the ones who lasted the season. The utility infielder who hit nothing in April and was sent down, the third catcher, the September call-ups, the pitchers in eras and leagues where pitchers batted: all of them are in the baseline.
A leaderboard is not. Leaderboards are filtered to qualified hitters, and qualification is a playing-time test that the worst hitters fail precisely because they were bad. The filter removes the bottom of the distribution from the display while leaving it in the calculation.
The consequence is structural. The typical qualified hitter sits above 100, because 100 is the average of a population that includes players nobody let bat five hundred times. Anyone who reads 100 as "the middle of the list of regulars" is reading the number as something it was never scaled to be. It is the middle of the league's plate appearances, which is a different thing.
The qualification test itself is set in the Official Baseball Rules rather than by the statistics sites. Rule 9.22(a) requires a player to be credited with as many plate appearances as his club had games scheduled, multiplied by 3.1, and the rule's own comment works the example: "if a Major League schedules 162 games for each Club, 502 plate appearances qualify (162 times 3.1 equals 502) a player for a batting, slugging or on-base percentage championship."
There is a provision underneath it that is worth knowing about, because it is a rare case of a governing body legislating for the flaw in a rate statistic. A player short of the requirement can still take the title if his figure would remain the highest after being charged with the missing plate appearances as outs. The rule is written for the batting, slugging and on-base championships rather than for OPS+, but the idea generalises cleanly. Charging a hitter's shortfall as outs is the crudest possible correction for a rate computed over too little playing time, and it is exactly the correction most people fail to make in their heads when they compare a partial season against a full one.
The rest of the plus family, and why the numbers do not swap
The convention of setting league average at 100 is shared by a family of statistics, and sharing a convention is not the same as sharing a scale.
The pitching counterpart runs the division the other way round. A pitcher's adjusted earned run average has to put the better performance above 100, and better means lower, so the league figure goes on top of the fraction rather than underneath it. That inversion means a pitcher's 130 and a hitter's 130 are describing different mathematical objects, and comparing them is a category error even though both sit on a scale marked from the same landmark.
OPS itself does get pointed at pitchers, in the form MLB's glossary calls "OPS against": the on-base plus slugging that opposing hitters managed off him. It behaves like a hitting statistic belonging to the wrong person, and the same park and league adjustments can be applied to it, which is why a pitcher's line can carry a plus figure that has nothing to do with his earned run average.
Team-level OPS+ exists too, computed the same way from the club's aggregate batting line, and it is more trustworthy than the individual version for the simple reason that a team's line has several times as many plate appearances behind it. The park adjustment is also cleaner at team level, because a club genuinely does play half its games in one building.
What none of these figures survive is arithmetic performed on them. Averaging two OPS+ figures does not produce the OPS+ of the combined line, adding them means nothing, and a difference of thirty points at 90 is not the same quantity of production as a difference of thirty points at 160. Indexes tell you where something sits. They are not a currency, and the moment somebody starts adding them up, the numbers have stopped describing baseball.
Where OPS+ is genuinely better than the alternatives
Three cases, because a page that only lists faults is not much use.
Old seasons. The run values that wRC+ needs are estimated from play-by-play records, and the further back you go the less of that survives. On-base and slugging can be reconstructed from a box score, which means OPS+ reaches a great deal of baseball history that the more sophisticated statistics cannot reach on the same footing.
Quick reading. Two inputs, one division each, one subtraction. A person can compute an OPS+ on the back of an envelope given a league line, and cannot compute a wRC+ without a table of coefficients. That matters more than it sounds, because a statistic you can reconstruct is a statistic you can audit.
Sorting the obvious. OPS+ separates a 160 hitter from a 90 hitter with total reliability. Nearly every disagreement between the adjusted statistics happens in the middle of the distribution, among hitters whose real difference is small. If the question is whether somebody was excellent, the rough tool answers it.
The pattern holds across the wider family of adjusted baseball statistics. The simple index is right about the large gaps and unreliable about the small ones, and almost every argument conducted with these numbers is an argument about a small gap.
A short worked comparison, start to finish
One more constructed case, again with invented round figures, to show the whole machine running.
Two hitters, same season, same league. League on-base .320, league slugging .400, as before.
Hitter One plays in a park that inflates scoring by ten per cent. His raw line is .352 on-base, .480 slugging, for an OPS of .832.
Hitter Two plays in a park that suppresses scoring by ten per cent. His raw line is .336 on-base, .420 slugging, for an OPS of .756.
On raw OPS, Hitter One is ahead by 76 points and it is not close.
Adjust the baselines. In the inflated park the bars become .352 on-base and .440 slugging. Hitter One's ratios are 1.00 and 1.0909, giving an OPS+ of 109.
In the suppressed park the bars become .288 and .360. Hitter Two's ratios are 1.1667 and 1.1667, giving an OPS+ of 133.
The ordering reverses completely. That is not a defect, it is the entire point of the exercise, and it is why a raw OPS quoted without its context is close to meaningless for comparing hitters at different addresses. The scaling in this example is deliberately simplified so the arithmetic stays visible. Real implementations differ in how much of a park factor they apply and to which components, which is one reason two publishers can print different OPS+ figures for the same season, and why a figure copied from one site should not be compared with a figure copied from another.
The four things to check before you quote an OPS+
Which season's league is in the denominator. The number is a comparison with contemporaries. A 130 in a low-scoring year and a 130 in a high-scoring one describe the same relative standing and very different raw production, and if the argument is about raw production the index is the wrong tool.
How many plate appearances are behind it. A rate over a short season is a rate with a wide error bar. The figure does not print one, and the same caution applies to every rate statistic on the site, from batted-ball quality measures upwards.
Whether the gap being argued about is bigger than the noise. Four points of OPS+ is not a finding. Forty is.
Whether the question is about a hitter or about a player. OPS+ is a hitting index and nothing else. If the answer depends on where he stood in the field or how he ran the bases, you need a statistic that contains those things, and OPS+ never will.
Run those four checks and the number becomes what it was always meant to be. A fast, park-aware, league-aware readout of how much better than his contemporaries a hitter was at the two things a box score records. Not a percentage. Not a measurement of runs. An index with a known shape and a floor at minus a hundred, right about the big questions, and not to be trusted with the small ones.
Common questions
What does OPS+ mean in baseball?
OPS+ takes a hitter's on-base plus slugging, compares each half of it with the league average for that season, and adjusts for the ballparks involved. The result is set so that 100 is the league-average hitter, above 100 is better than average and below 100 is worse. It is a context-adjusted index rather than a measurement of runs, and it says nothing about baserunning, fielding or position.
How is OPS+ calculated?
MLB publishes the formula as 100 x (OBP/lgOBP + SLG/lgSLG - 1). The player's on-base percentage is divided by the league's, the player's slugging is divided by the league's, the two ratios are added, one is subtracted so the scale recentres on 1, and the result is multiplied by 100. The league figures used in the division are adjusted for the park the player calls home, which is where the park correction enters.
Does an OPS+ of 150 mean the hitter was 50 per cent better than average?
Not in any sense you can check against his raw numbers. The figure is a sum of two ratios rather than a single ratio, so a hitter at 150 will not have an OPS 50 per cent above the league's OPS. What 150 does mean is that his on-base edge and his slugging edge, each measured proportionally against the league, add up to 50 percentage points.
Is OPS+ adjusted for the ballpark?
Yes, and that is the main thing it adds to plain OPS. The adjustment works through the league baseline the player is measured against rather than by rewriting his batting line, and it is normally built from a park factor calculated over several seasons rather than the one season in question. It corrects for the home park a player shares with his team, not for the particular set of away parks he happened to visit.
Should I use OPS+ or wRC+?
wRC+ is the better statistic if you want one number for a hitter's offensive value, because it prices each plate-appearance outcome by the runs it is actually worth instead of treating a point of on-base and a point of slugging as roughly interchangeable. OPS+ survives because it is simple, has been published for decades and needs only two familiar inputs. For most hitters the two figures land close together, and where they diverge the divergence itself is informative.
Filed under Baseball·baseball · mlb · baseball statistics · analytics · hitting