Let’s Peruse Some Pitch Modeling Highlights From the WBC

During the championship game of the World Baseball Classic, a Nolan McLean sweeper made me jump off of my couch. It wasn’t even a strike; it just moved so much from such an innocuous starting point that I reacted instinctively. I clearly wasn’t alone; Davy Andrews wrote about how nasty McLean’s pitches look last week. “Dang,” I thought to myself after I’d calmed down. “It’s too bad someone hasn’t gotten PitchingBot to take a look at that one.”
Then I thought about that slightly longer and chuckled. That someone is me. PitchingBot lives in the cloud, but I have a duplicate copy isolated in a sandbox on my computer. MLB records Statcast data for WBC games. I have a machine that ingests Statcast data and turns it into pitch modeling grades. This wasn’t rocket science (give or take how you feel about the machine learning algorithms powering the model) – I took the data, fed it into the machine, and tinkered with the exact settings until I got model grades to come out.
The tournament features a wide variety of skill levels, from Paul Skenes down to semipros and high schoolers. Setting the population average equal to the average quality of WBC pitching would mean that the grades aren’t comparable to the ones we’re all used to looking at. Thus, I ran the PitchingBot model for every pitch in the WBC, but instead of using the WBC average to mean a 50 grade, I used the 2025 MLB average. That means the model is calibrated to how you’d expect the pitches thrown in the WBC to perform against average major league opposition.
I had to make one other methodological decision, which I’ll cover briefly in this paragraph before getting to the results. For pitch-level grades, I adjusted by count in keeping with the methodology developed for the PitchingBot Visualizer. I did so because count affects stuff grades in particular, and thus those work best with large samples to normalize the count distribution by player. In a two-week tournament, that’s not going to happen. I chose to normalize by count for pitch-level grades, but to report overall grades using the exact PitchingBot methodology with no modifications.
As it turns out, that McLean sweeper was no fluke. Here are the best stuff grades among pitchers who threw 50 or more pitches in the WBC:
| Pitcher | Position | Team | Pitches | Stuff Grade |
|---|---|---|---|---|
| Mason Miller | RP | USA | 73 | 82 |
| Edwin Díaz | RP | Puerto Rico | 58 | 74 |
| Eduardo Rivera | RP | Puerto Rico | 108 | 73 |
| Daniel Palencia | RP | Venezuela | 70 | 72 |
| Nolan McLean | SP | USA | 118 | 71 |
| Joseph Contreras | RP | Brazil | 71 | 67 |
| Luinder Avila | RP | Venezuela | 76 | 63 |
| Ben Simon | SP/RP | Israel | 61 | 62 |
| Keider Montero | SP/RP | Venezuela | 73 | 61 |
| Yoshinobu Yamamoto | SP | Japan | 122 | 61 |
That’s right, on a staff with Paul Skenes, Tarik Skubal, and Logan Webb, McLean had the best stuff. He had the best stuff by a lot, and the best stuff of any starter in the tournament. I broke it out by individual pitches to get a sense for what drove his grade. The answer? Everything:
| Pitch | Pitches | Stuff | Command | Overall |
|---|---|---|---|---|
| Slider | 40 | 63 | 56 | 59 |
| Sinker | 24 | 79 | 62 | 63 |
| Four-Seam | 22 | 68 | 70 | 69 |
| Curveball | 22 | 68 | 10 | 25 |
| Changeup | 6 | 59 | 58 | 61 |
| Cutter | 4 | 59 | 53 | 52 |
That’s a lot of gaudy stuff grades. The secondaries mostly matched his already-excellent 2025 numbers, but both fastballs graded out better in the WBC than they did last year. That’s partially a matter of throwing them harder – he was up by about two ticks in his two short-stint starts. It’s also partially a matter of them moving more. His sinker added two inches of arm-side fade even as he threw it harder. The WBC edition of his four-seamer had more induced vertical break despite the faster speed. Throwing harder and yet getting more movement anyway? That definitely explains the improvement.
That curveball command blemish? It’s real. McLean had trouble commanding the curve last year, as you can see from pitch model grades and also the fact that he landed it for a strike only a quarter of the time (league average is 43%). In fact, his poor curveball command is a great segue for a tourney-wide observation. The pitchers in the WBC had no command. Take a look at those top 10 pitchers by stuff grade, but this time with a few more statistics included:
| Pitcher | Position | Team | Stuff | Command | Overall |
|---|---|---|---|---|---|
| Mason Miller | RP | USA | 82 | 43 | 50 |
| Edwin Díaz | RP | Puerto Rico | 74 | 18 | 24 |
| Eduardo Rivera | RP | Puerto Rico | 73 | 28 | 36 |
| Daniel Palencia | RP | Venezuela | 72 | 35 | 40 |
| Nolan McLean | SP | USA | 71 | 52 | 56 |
| Joseph Contreras | RP | Brazil | 67 | 14 | 15 |
| Luinder Avila | RP | Venezuela | 63 | 50 | 50 |
| Ben Simon | SP/RP | Israel | 62 | 22 | 27 |
| Keider Montero | SP/RP | Venezuela | 61 | 34 | 35 |
| Yoshinobu Yamamoto | SP | Japan | 61 | 50 | 48 |
No one had a clue where the ball was going. I think that’s reasonable, in retrospect. It’s still spring training. It takes a while to get into regular-season form, and the WBC is also a disruption to routine. Instead of a normal low-pressure environment suitable for slowly rounding into form, you’ve got fans with cowbells, amped dugouts, and must-win situations. It’s a recipe for worse command, basically. It’s not just this list; if you take every pitch of the WBC in aggregate, the model spits out a result of 51 stuff, 42 command, and 40 overall.
Díaz, who had the worst command grade among major leaguers to appear in the tournament, was clearly working through some rust. He located around 30% of his sliders in the shadow zone — the edges of the strike zone and the area just outside of that — and missed way outside with many others. He’s closer to a 40% shadow zone rate in major league data. His fastball was even worse; he threw 28 of them, and only hit the strike zone 10 times. Even great pitchers aren’t always in peak form early in the year.
I want to give a particular nod to Joseph Contreras, son of Jose Contreras. He’s a Georgia high schooler and Vanderbilt commit eligible for the 2026 draft. He played for Team Brazil and dialed up some of the highest-octane stuff in the entire tournament. Just one problem: He couldn’t get anywhere near the strike zone. Here’s a shocking graph of his four-seamer locations:

If those pitches were well-located, they’d play in the big leagues today. He sits 95-96 with excellent movement. It’s a good reminder that pitching is about more than just stuff; in fact, if you can’t get the ball in the strike zone, your stuff almost doesn’t matter. That’s why the model gave Contreras an overall grade that almost perfectly mirrored his command. Pitches like his – nasty, but nowhere near the zone – just don’t induce swings, no matter how good their shapes.
The best-graded players overall were the ones who displayed acceptable command:
| Pitcher | Position | Team | Stuff | Command | Overall |
|---|---|---|---|---|---|
| Atsuki Taneichi | RP | Japan | 56 | 68 | 65 |
| David Bednar | RP | USA | 53 | 68 | 62 |
| Jameson Taillon | SP | Canada | 53 | 71 | 62 |
| Paolo Espino | SP | Panama | 53 | 61 | 58 |
| Albert Abreu | RP | DR | 61 | 55 | 56 |
| Nolan McLean | SP | USA | 71 | 52 | 56 |
| Angel Zerpa | RP | Venezuela | 56 | 57 | 55 |
| Chihiro Sumida | RP | Japan | 46 | 51 | 55 |
| Matthew Boyd | RP | USA | 48 | 63 | 54 |
| Aaron Nola | SP | Italy | 55 | 58 | 54 |
That’s a window into the limits of small-sample data. If you ask the pitching models who the best pitchers at the WBC were, they’ll give you a list of guys who kept the ball around the strike zone. If you ask them who had the nastiest stuff, they’ll give you a list of guys who hurled explosive fastballs and sliders right into the dirt.
If there’s one takeaway I had from hooking up PitchingBot to WBC data, it’s that McLean’s stuff is as good as it looked to me on TV. But if there are two takeaways, it’s that international tournaments like this are incredible. Here, take a look at what PitchingBot thinks of the 10 guys who threw the most pitches in this year’s tournament:
| Pitcher | Team | Pitches | Stuff | Command | Overall |
|---|---|---|---|---|---|
| Paul Skenes | USA | 131 | 56 | 48 | 42 |
| Aaron Nola | Italy | 128 | 55 | 58 | 54 |
| Luis Severino | DR | 128 | 55 | 52 | 53 |
| Dylan DeLucia | Italy | 127 | 50 | 47 | 41 |
| Logan Webb | USA | 123 | 46 | 52 | 48 |
| Yoshinobu Yamamoto | Japan | 122 | 61 | 50 | 48 |
| Livan Moinelo | Cuba | 122 | 49 | 41 | 45 |
| Nolan McLean | USA | 118 | 71 | 52 | 56 |
| Ondrej Satoria | Czechia | 115 | 34 | 49 | 42 |
| Michael Soroka | Canada | 112 | 59 | 44 | 46 |
Name me a funnier grouping of three pitchers with nearly identical grades than Cy Young winner Paul Skenes, Guardians 40th-ranked prospect Dylan DeLucia, and full-time electrical engineer Ondrej Satoria. There’s a reason that stuff stabilizes more quickly than command. Skenes just wasn’t clicking on all cylinders in this tournament, which can happen to anyone. You know the old trope about a pitcher making one mistake and a hitter pummeling it? Try to figure out which of the five hanging sweepers thrown to righty Dominican batters (circled in red) got hit for a home run:

Don’t bother looking for which sweepers the opposition swung and missed at; Skenes didn’t miss a single bat with a breaking ball in the entire tournament. There’s just not a lot of predictive power to be found in 130 pitches, even if they’re thrown in an important competition.
Was it worth producing pitch modeling grades for the WBC? I think the answer is a clear yes, even if the results don’t revolutionize my understanding of the game. I love gawking at great pitches, and it’s even more fun when I have the numbers to back up how I feel. I love weird results; it’s delightful that Satoria and Skenes are equal here, and it’s delightful that a 17-year-old high schooler appears near the top of the stuff leaderboard. And if you’re looking for those leaderboards, you’re in luck. Here is a list of pitchers and stuff, command, and overall grades. Here is a list broken down by individual pitch types and adjusted for count. Happy perusing.
Ben is a writer at FanGraphs. He can be found on Bluesky @benclemens.
is pitchingBot still managed / updated by Cameron Grove? is he still pushing updates since he was hired by Cleveland? just curious