Wednesday, May 29, 2024

An update to pwOBA+ (Pitchers)

I’m proud to announce that I have updated pwOBA+, my predictive pitching metric.

Predictive weighted on-base average plus factors in a predictive strikeout rate (pK%), a predictive walk rate (pBB%), a predictive weighted on-base average on contact (pwOBAcon), and a pitcher’s HBP%.

pK% variables

  • new: whiff% with 2 strikes and K%
  • returning: swing% in the heart zone, whiff% in the heart zone, whiff% in the chase zone, and average fastball velocity
  • out: swing% in the shadow zone, whiff% in the shadow zone, and % of non-whiff swings ending in foul balls (swings)

pBB% variables

  • new: BB%, contact%, first pitch CSW%, balls in play / pitches, and % of swings that result in foul balls
  • returning: strike% and % of pitches thrown when the pitcher is ahead in the count that result in swings
  • out: % of strikes that are foul balls (swings only), % of 3-1 and 3-2 pitches that are swung at, and O-Contact%

pwOBAcon variables

  • new: % of BBEs that are hit at an EV of at least 100 mph and a LA of at least 0 degrees
  • returning: Solid contact%, poorly/under%, and flares/burners%
  • out: Barrels%

Prior to this update, the formulas for pK%, pBB%, and pwOBAcon were based off of only one set of consecutive player-seasons (2017 to 2018). They are now built off of three (2015 to 2016, 2016 to 2017, and 2017 to 2018), which reduces the chances of model being problematically overfit to my data.


  1. Pitchouts and intentional balls are excluded when necessary (for strike% for instance)
  2. Sacrifice bunts and intentional walks are excluded from TBF denominators (this rule applies for wOBA as well)
  3. pwOBAcon variables have bunts removed, and the response variable for pwOBAcon was non-bunt wOBAcon
  4. To adjust for year, I divide each stat by the league average for that particular season
  5. Linear models were used for the three metrics above

pwOBA might just be the most predictive publicly available pitching metric.

R^2 of the following metrics in 2018 to 2019 ERA (min. 250 TBF) … this was out-of-sample testing for my model

  1. pwOBA+ (.1222)
  2. SIERA (.1046)
  3. pCRA (.09703)
  4. xFIP (.0956)
  5. kwERA (.08871)
  6. FIP (.08117)
  7. tERA (.07362)
  8. ERA (.05093)

R^2 of the following metrics in 2018 to themselves in 2019 …

  1. kwERA (.4327)
  2. pwOBA+ (.4072)
  3. SIERA (.3524)
  4. xFIP (.3173)
  5. pCRA (.3162)
  6. tERA (.1523)
  7. FIP (.1297)
  8. ERA (.05093)

Another metric that seeks to better predict pitcher performance is Forecasted Run Average. Dan Richards, the creator of this stat and a writer for Pitcher List, set the minimum playing time requirement for FRA at 100 innings. The R^2 of 2018 pwOBA+ to 2019 ERA for pitchers that logged 100 innings in both years is .1886, greater than the R^2 of 2018 FRA to 2019 ERA (.1569).

Here are the pitchers who posted the lowest pwOBAs last year (min. 500 TBF)

  1. Gerrit Cole
  2. Just Verlander
  3. Max Scherzer
  4. Jacob deGrom
  5. Noah Syndergaard
  6. Stephen Strasburg
  7. Chris Sale
  8. Lucas Giolito
  9. Charlie Morton
  10. Shane Bieber

Here are the lowest single-season pwOBA+s from 2015 to 2019

  1. Chris Sale (2018)
  2. Clayton Kershaw (2016)
  3. Clayton Kershaw (2015)
  4. Gerrit Cole (2019)
  5. Corey Kluber (2017)
  6. Clayton Kershaw (2017)
  7. Jacob deGrom (2018)
  8. Chris Sale (2017)
  9. Jake Arrieta (2015)
  10. Justin Verlander (2019)

You can gain access to the password-protected 2020 pwOBA leaderboard (as well as the 2020 pK%, pBB%, pwOBAcon [hitters and pitchers], and more) by making a $5 payment through either Venmo (@MaxSportsStudio) or PayPal (email is Once you’ve done that, DM me on Twitter (@MaxSportsStudio), and I will provide you with the passwords (the 2020 leaderboards will be available for free once I publish the first leaderboard of the 2021 season).

pwOBA can help one win in fantasy (and in real life) by identifying pitchers one would expect to pitch at a higher/lower level a season from now.