From the mlb web site:
Definition. OPS+ takes a player's on-base plus slugging percentage and normalizes the number across the entire league. It accounts for external factors like ballparks. It then adjusts so a score of 100 is league average, and 150 is 50 percent better than the league average.
From Fangraphs:
On-base Plus Slugging Plus (OPS+) has not gained as much widespread acceptance, but is a more informative metric than OPS. This statistic normalizes a player’s OPS — it adjusts for small variables that might affect OPS scores (e.g. park effects) and puts the statistic on an easy-to-understand scale. A 100 OPS+ is league average, and each point up or down is one percentage point above or below league average. In other words, if a player had a 90 OPS+ last season, that means their OPS was 10% below league average. Since OPS+ adjusts for league and park effects, it’s possible to use OPS+ to compare players from different years and on different teams.
From baseball reference which actually posts a "formula"
Compute the runs created for the league with pitchers removed (basic form) RC = (H + BB + HBP)*(TB)/(AB + BB + HBP + SF)
Adjust this by the park factor RC' = RC*BPF
Assume that if hits increase in a park, that BB, HBP, TB increase at the some proportion.
Assume that Outs = AB - H (more or less) do not change at all as outs are finite.
Compute the number of H, BB, HBP, TB needed to produce RC', involves the quadratic formula. The idea for this came from the Willie Davis player comment in the Bill James New Historical Baseball Abstract. I think some others, including Clay Davenport have done some similar things.
Using these adjusted values compute what the league average player would have hit lgOBP*, lgSLG* in a park.
Take OPS+ = 100 * (OBP/lgOBP* + SLG/lgSLG* - 1)
Note, in my database, I don't store lgSLG, but store lgTB and similarly for lgOBP and lg(Times on Base), this makes calculation of career OPS+ much easier.
Give me a break.
In other words according to its own definition, OPS+ accounts for external FACTORS as in more than one weighted factor. That is the very definition of multiple weighted factoring. So again, you are already corrupting your own data because you are employing multiple weighted factors in the one stat.
You will need Manfred to come clean on the rocket ship and then give you a number. The weighted factor for the baseball could be very easily defined once Manfred comes clean. I am sure the ball manufacturer knows exactly what he is manufacturing and what he was manufacturing in 2015, 2016, 1018 and now in 2019. Manfred has most particularly to come up with a number for the 2019 ball as it is so far beyond the pale that comparing season and career stats that include even the 2016 season are essentially meaningless unless your cause is to herald today's hitters as the "greatest of all time"......Ah-huh!
Once you have a weighted factor for the baseball, you could develop a stat for it but just as OPS+ is not a properly built stat, you will have to weight the baseball by itself, not glom it on to an already corrupted piece of data.
By the way, ERA+ is the same gibberish only applied to ERA.
Again, for those that want to have fun with numbers....be my guest. Anybody using these multiple weighted factor stats to negotiate contracts, draft or trade players or sign FA's needs his head examined.