MLB Data Warehouse

MLB Data Warehouse

Share this post

MLB Data Warehouse
MLB Data Warehouse
Modeling & Predicting Expected xwOBA

Modeling & Predicting Expected xwOBA

I messed around with predicted expect wOBA

Jon A's avatar
Jon A
Apr 30, 2025
∙ Paid
6

Share this post

MLB Data Warehouse
MLB Data Warehouse
Modeling & Predicting Expected xwOBA
2
Share


I have coded up a little machine learning model that grades pitches by their movement and location, and then shows the scores as a predicted xwOBA. So, basically, it looks at each individual pitch (its movement and location) and then looks at the history of pitches most like it and then sees how things usually turn out on those pitches.

So now I have a “predicted xwOBA” number for every pitch thrown. And that lets us do some cool stuff by comparing predicted vs. actual.

Let’s look at a few examples before getting into some application. Here is the model’s choice for worst pitch of the season:

A gross, slow, hanging curveball right into the meat of the strike zone. And Ke’Bryan Hayes let it go.

Here’s the model’s pick for best pitch in the zone:

Painted, high movement sinker up and in to a lefty. Beautifully done.

But no scores are given out unless a pitch is put in play, because there is no actual xwOBA value assigned to a pitch that isn’t put in play (since xwOBA is based on launch angle and exit velocity). So, to show the point, let’s look at the two extremes so far this season.

Here is a pitch from Elvin Rodriguez to Santiago Espinal that had a super high predicted xwOBA of 1.12 (a bad pitch). However, Espinal’s weak popup generated just a .039 xwOBA.

The Espinal is assigned -1.08 for that. On the flipside, here’s a pitch from Chase Dollander to James Wood that the model thought would generate a low xwOBA, but Wood punished it for a homer:

So he gets a +1.89 for that. And then to get a full score, we can take the average of those differentials. I call it xwOBA OE (expected xwOBA over expectation).

It has been added to the dashboard.

Your league leaders:

  1. Aaron Judge .145

  2. Pete Alonso .130

  3. Fernando Tatis Jr. .126

  4. Marcell Ozuna .117

  5. Corbin Carroll .114

  6. Jorge Polanco .103

  7. Oneil Cruz .099

  8. Kyle Tucker .099

  9. Salvador Perez .094

  10. Shohei Ohtani .088

One good way to see if a hitting stat is any good or not is to make sure that Aaron Judge is on top. And he is, so that’s good. Your league’s worst:

  1. Joc Pederson -.136

  2. Kyle Isbel -.132

  3. Alan Roden -.125

  4. Patrick Bailey -.116

  5. Jeimer Candelario -.115

  6. Maxwell Muncy -.096

  7. Michael Massey -.094

  8. Tommy Pham -.090

  9. Taylor Walls -.088

  10. Hunter Renfroe -.088


So this gives you some idea about what hitters are doing with the opportunity given to them.

You can also filter down to just balls put in play on the dashboard with that “Contact” dropdown:

It doesn’t change much, here are the top 20:

  1. Aaron Judge

  2. Corbin Carroll

  3. Oneil Cruz

  4. Fernando Tatis Jr.

  5. Shohei Ohtani

  6. Cal Raleigh

  7. Pete Alonso

  8. Spencer Torkelson

  9. Salvador Perez

  10. Ben Rice

  11. Mike Trout

  12. Jonathan Aranda

  13. Byron Buxton

  14. Marcell Ozuna

  15. Rafael Devers

  16. Jorge Polanco

  17. Dillon Dingler

  18. Freddie Freeman

  19. Seiya Suzuki

  20. James Wood

Bottom 20:

  1. Joc Pederson

  2. Santiago Espinal

  3. Alan Roden

  4. Kyle Isbel

  5. Mookie Betts

  6. Jacob Young

  7. Nolan Arenado

  8. Jeimer Candelario

  9. JJ Bleday

  10. Tommy Pham

  11. Bo Naylor

  12. Joey Ortiz

  13. LaMonte Wade Jr.

  14. Ozzie Albies

  15. Kyle Farmer

  16. Luis Arraez

  17. Ernie Clement

  18. Michael Massey

  19. Nico Hoerner

  20. Trea Turner

A few alarming names there! Those (former?) stud hitters are under-performing big time on contact this year.


Application

I’d mostly use this to evaluate waiver wire hitters. We can look at some the low-owned guys popping up here right now:

This post is for paid subscribers

Already a paid subscriber? Sign in
© 2025 Jon A
Privacy ∙ Terms ∙ Collection notice
Start writingGet the app
Substack is the home for great culture

Share