After posting an excellent 125 wRC+ over his first two seasons, James Wood is establishing himself as one of the best hitters in baseball this year. The 23-year-old National is running a 169 wRC+, third best among qualified batters, and he’s on pace for 43 homers, 26 stolen bases, and 7.2 WAR. Everybody knows the parameters of Wood’s game by now. He’s 6-foot-6, extremely choosy at the plate, and so spectacularly powerful that his proclivity for whiffs and groundballs barely holds him back. This year, he’s improved on both fronts, dropping nearly 10 percentage points from his groundball rate and adding nearly four points to his contact rate on pitches in the strike zone. It’s huge news – James Wood-huge even – and if he can hold on to even some of those gains, he’s going to live at the top of the leaderboards for a long, long time. Today, however, we’re going to talk about a leaderboard where Wood ranks dead last.
If you head over to Baseball Savant’s new ABS challenge leaderboard, you’ll find Wood all the way at the bottom. A big caveat before we get going: The challenge system is very new, and because each player challenges so few times, the sample sizes are very small. Moreover, everyone involved is still adjusting to the system, so the trends we’re seeing now are likely to change. In this article, I’m going to be overreacting to these early numbers. It’s way too soon for big proclamations. However, I don’t think it’s too soon to look for patterns and draw some early conclusions about players who stand out as starkly as Wood does. End of caveat.
Now let’s go to the leaderboard and sort by either Net Overturns or Net Runs. There’s Wood, dead last. According to Statcast’s reckoning, an average batter who saw the same pitches Wood has seen would have made 4.8 more successful challenges and netted their team 1.4 more runs. No player has been worse, and even if you ignore the advanced numbers for a moment, Wood’s record tells you all you need to know. He’s made 13 challenges. He’s won three of them and lost 10. For those of you keeping score at home, that stinks. The average batter has won 47% of their challenges, twice as many as Wood. Read the rest of this entry »
Last Friday, after missing the entire 2025 season due to Tommy John surgery, Gerrit Cole fared well in his return to the Yankees rotation, firing six scoreless innings against the Rays even while struggling to miss bats. On Wednesday night in Kansas City, Cole truly looked back, this time throwing 6 2/3 scoreless innings while striking out 10 Royals without issuing a walk. The former Cy Young winner’s reassuring performance is a welcome development for a rotation that has weathered some high-profile absences — and will have to continue doing so.
The Yankees began the season with Cole, Carlos Rodón, and Clarke Schmidt all recovering from elbow surgeries, and while the first two have now returned, Max Fried — their most valuable pitcher last season — has been sidelined for a spell, as has 2024 AL Rookie of the Year Luis Gil. Nonetheless, the team’s rotation has been one the game’s best thus far, leading the majors in WAR (7.5), leading the AL in FIP (3.22), and ranking a close second in the league in both ERA (2.98) and strikeout rate (24.5%). Despite backing that unit with the most potent offense in the league, the 34-22 club finds itself trailing the Rays (34-19) by 1 1/2 games in the AL East.
Prior to last Friday, Cole’s last competitive appearance in the majors had been a reminder of a golden opportunity lost: His inexplicable failure to cover first base in the fifth inning of Game 5 of the 2024 World Series fueled the Dodgers’ comeback from a 5-0 deficit on a night they ended up clinching the title. Limited to 17 starts that season due to nerve irritation and edema in his elbow after finally bringing home a Cy Young award in 2023, Cole made just two appearances in spring training last year before being diagnosed with a torn UCL and undergoing surgery. He progressed enough in his recovery to make two brief appearances in Grapefruit League games this spring, then continued his rehab by making six starts spread across three minor league levels before returning to the Yankees. Read the rest of this entry »
Cole Carlon Photo: Joseph Rondone/USA Today Network via Imagn Images
This year, I’ve mostly been focused on minor league coverage — those pesky lists don’t write themselves — but with the draft on the horizon and four conference tournaments happening in one metro, I flew down to Phoenix last week. Eric split his time between the Mountain West, West Coast, and WAC tournaments while I sat on the Big 12’s signature event in Surprise. It was a strange week in some respects. The top two, and maybe even top three, guys on my pref list aren’t eligible until next year’s draft, thanks in part to injuries that knocked a couple of the league’s best prospects out of the tournament entirely. Moreover, the relatively brief nature of a single-elimination tournament means I didn’t come away with a complete impression of a lot of players, including guys who will presumably be drafted relatively early.
With that in mind, I encourage you to consider this a rundown of what I saw rather than a definitive list of the top prospects from the league. These are just my observations from the field, and do not reflect a more holistic evaluation process. Eric and I will do more work on the Draft Board as we get closer to July, a process which may shift how I or we think about some of the players covered below, and we’ll likely add other players from the Big 12 into the mix. With a nod to how short the look was in some cases, where applicable, I’ll share the questions I have about some of these players going forward alongside my notes.
2026 Draft Class
As mentioned above, a few of the league’s top dogs were stuck in the kennel. Sawyer Strosnider, arguably the Big 12’s most projectable hitter, missed TCU’s one-and-done after injuring his ankle in practice the week before. His teammate Chase Brunson, another potential high pick, missed the game with knee trouble. Finally, Kansas was able to lift the trophy without first baseman Brady Ballinger, who was nursing a hamate injury. He’s a power hitter who entered the season with draft helium, though he has seen his stock take a bit of a tumble after only hitting seven homers as a junior. Read the rest of this entry »
InsertWittyNameHere: Are there rules about player walk up songs? Could someone just have spoken word slam poetry or a Rodney Dangerfield No Respect joke?
12:03
Dan Szymborski: There are some rules, though I’m not sure precisely WHERE they’re written down
12:03
Dan Szymborski: 15 seconds, no inappropriate lyrics, themes, etc.
12:03
Dan Szymborski: and it has to be licensed
12:04
Guest: With Jared Jones expected to return this weekend are the Pirates better off running a 6 man rotation to help limit innings for Ashcraft, Mlodzinksi etc.. or send Chandler to AAA for his control issues.
For today’s FanGraphs Feature Focus, I’ll be taking a look at one of my favorite site features: our Weather Splits. Michael Baumann spotlighted these splits back in 2024, and the format of the page hasn’t changed since then. So while I’ll walk you through how the Weather Splits work and where to find them, I’ll mostly be showcasing some of the silly leaderboards they can help to generate.
To create the leaderboards in this piece, I toyed around with the Weather Split Ranges on the Splits tab of the Splits Leaderboard:
Those Weather Split Ranges aren’t mutually exclusive or siloed off from the rest of the splits. For example, by changing the Wind Speed filter and adding the Wind Direction sub filter, we can see which players have hit multiple home runs with the wind blowing in at 10 mph or more:
Against the Wind: Multiple Home Runs With 10+ MPH Winds Blowing In
Bob Seger would be proud of Ryan Jeffers, who is currently on the IL after undergoing hamate surgery but still tops this leaderboard as the only player with a trio of homers against significant winds. If you click into the full leaderboard, you’ll notice that Auto PT is on:
When that’s the case, the leaderboard will smartly adjust the minimum playing time depending on how restrictive your search is, sometimes setting no minimum at all. You can always set your own minimum in the Filters section. The Temperature filter is even more straightforward to use, though here I’ll note that our filters don’t automatically eliminate indoor or retractable roof stadiums. That’s done with the Ballpark Type filter:
Applying those two filters in tandem, I made a list of the pitchers who’ve done especially well when it’s either chilly or flat-out cold, and they’re actually exposed to those elements:
The Cold Never Bothered Me Anyway: Sub-2.00 FIP in 59 Degrees or Colder
While the ball doesn’t carry as well in cooler temperatures, it can also cause pitchers to experience grip troubles, even at a relatively balmy 57 degrees. But that hasn’t affected the pitchers on this leaderboard.
The Weather Splits are also a great excuse to take a crash course in barometric pressure, which I had to do in order to understand our various splits. Per Maximum Weather Instruments, which sells barometers and other pressure measurers, normal air pressure is considered 1,013.25 millibars. Anything above that is considered high pressure, so I set my minimum at 1,014. These relievers are the guys most frequently used in high-pressure situations… in both senses of the word:
Under Pressure: Most High-Leverage Batters Faced in High Pressure, as Reliever
Did I really do this research and make a whole leaderboard just so I could make an “Under Pressure” joke? I choose to exercise my Fifth Amendment rights, Your Honor.
I made leaderboards for these three splits, but we’ve got plenty more within the Weather tab of the Splits Leaderboard. Beyond the ranges for temperature, pressure, and wind, you can also set ranges for air density and elevation. The Ballpark Type and Weather tabs at the top also include some binary filters that you can combine (e.g., rain and drizzle, or fog and haze):
As with ballpark type and leverage, the weather ranges can be combined with both each other and the binary weather filters. For instance, you could look at high winds in warmer weather only, or rain in colder weather only.
Our Weather Splits are available going back to 2010, and the entirety of the Splits Leaderboard can be accessed regardless of whether you’re a FanGraphs Member. But if you want to export to Excel to more easily compare player performance across splits, you have to be a Member. If you’d like to sign up for a Membership, you can do so here.
Joe Ryan is about as steady a pitcher as you’ll find in the big leagues. Since his first full season in the majors, 2022, Ryan has never made fewer than 23 starts. He’s never thrown fewer than 135 innings nor more than 171, and his season-by-season WAR has stayed between 2.2 and 3.1. He hasn’t been a front-end starter, but he’s making just $6.2 million, which is a tremendous bargain. He was a hot commodity who somehow stayed put during the Twins’ fire sale last summer; if Minnesota is out of contention again, you’ll probably hear his name come up at this coming deadline, as well.
It also helps that Ryan is having a career year at the right time. He’s already at 2.1 WAR on the season, and we’re only about a third of the way through the calendar. That puts him fifth in the league. He’s also sixth in FIP, 12th in strikeouts, and 10th among qualified starters in K-BB%. Read the rest of this entry »
As the caretaker of the ZiPS projection system, I answer a lot of questions about both how it functions and the numbers that it spits out. One question I get a lot is why the system has consistently underrated the Milwaukee Brewers, which it has over the last five seasons and by a significant margin. While I’ve talked a little bit about this issue, mostly in offhand remarks in chats and on social media, addressing that question in detail is probably necessary at this point. Of course, ZiPS isn’t alone in underrating the Brewers. But as the system’s sole developer for nearly a quarter of a century, I have a responsibility to both be as transparent as possible and improve the model as much as I can.
So, how has ZiPS done with the Brewers historically? Well it turns out that since the system was first developed, worse than it has with any other major league franchise! Here are the results for ZiPS vs. Reality since 2005. I’ll note the columns don’t precisely add up, as ZiPS projects full 162-game seasons (or a 60-game one in the case of 2020) and there are a bunch of times that teams played 161 or 163 games:
ZiPS Projected Wins vs. Reality, 2005-2025
Team
Preseason ZiPS Wins
Actual Wins
Miss
Milwaukee Brewers
1655
1725
-70
Los Angeles Dodgers
1823
1890
-67
New York Yankees
1831
1893
-62
Houston Astros
1631
1688
-57
Tampa Bay Rays
1686
1717
-31
Cleveland Guardians
1709
1731
-22
Texas Rangers
1621
1642
-21
St. Louis Cardinals
1764
1782
-18
Miami Marlins
1486
1502
-16
Atlanta Braves
1734
1747
-13
Philadelphia Phillies
1699
1712
-13
Seattle Mariners
1605
1609
-4
Toronto Blue Jays
1676
1677
-1
Los Angeles Angels
1683
1681
2
Athletics
1625
1623
2
San Francisco Giants
1665
1660
5
Chicago White Sox
1549
1543
6
Boston Red Sox
1791
1781
10
Minnesota Twins
1637
1624
13
Baltimore Orioles
1544
1527
17
Detroit Tigers
1635
1613
22
Cincinnati Reds
1593
1570
23
Pittsburgh Pirates
1511
1488
23
Kansas City Royals
1499
1474
25
San Diego Padres
1640
1606
34
New York Mets
1706
1671
35
Arizona Diamondbacks
1633
1592
41
Colorado Rockies
1529
1482
47
Washington Nationals
1624
1576
48
Chicago Cubs
1714
1664
50
One source of error that’s really difficult to control for is what a team does at the trade deadline. Many of the teams that have overperformed their preseason projections have added talent during the season; conversely, underperformers have a tendency to trade talent away. That’s challenging to model, since it involves trying to project players who aren’t currently in the organization as part of the team, even though we have little idea who those players will actually be four months in advance. I actually created a model based on team quality, age, payroll, recent record, and trade history to get an idea of the likelihood a team will be a buyer or seller in an upcoming season. But while it sort of works, its accuracy isn’t up to the level where I’d include it as part of a projection.
Historically, the Dodgers and Yankees have been two of the league’s most aggressive buyers, so it isn’t surprising to see them atop the list of the biggest ZiPS misses. But while the Brewers have made some big in-season moves — the biggest arguably being the CC Sabathia trade in 2008, which was one of the most effective trades of this type ever — they aren’t on the buy side as frequently as some of the other underprojected teams. So, what’s going on here?
First, here’s an overview of how the percentiles for team projections have worked out. Ideally, you want 10% of teams to exceed their 90th-percentile projection, 20% of teams to exceed their 80th, and so on:
ZiPS Projected Wins vs. Reality, 2005-2025
Percentile
Percentage of Teams That Exceeded
90th
9.3%
80th
21.0%
70th
29.8%
60th
41.5%
50th
50.5%
40th
58.8%
30th
69.1%
20th
78.4%
10th
88.9%
ZiPS does a pretty good job in the aggregate. To put it simply, the basic job of a projection system is to know the range of possible outcomes, and be wrong by the appropriate margins the proper number of times. It would be easy to say “Hey, projections work as they’re supposed to in the aggregate, and some team is inevitably going to have the worst projections of the 30, so whatever,” but that doesn’t mean that we shouldn’t investigate these issues and assess whether there’s something systemic that the model is missing. Especially so in a case like Milwaukee, where nearly two-thirds of the 21-year error comes from the last five seasons (417 projected wins vs. 463 actual wins).
The ZiPS projected standings have two components: the projections themselves and the estimates of who actually ends up with playing time. To get an idea of how much of the ZiPS misses are errors in projection compared to errors in playing time, I will frequently re-project team wins using the actual playing time for each player after the season is done. Re-projecting the 2021-2025 Brewers using their preseason projections but the players’ actual playing time makes the issue a lot clearer:
Brewers ZiPS Wins vs. Reality
Year
ZiPS Preseason
ZiPS Knowing Actual Playing Time
Actual Wins
2021
83
93
95
2022
88
94
86
2023
84
87
92
2024
78
87
93
2025
84
90
97
Total
417
451
463
Knowing each player’s actual playing time doesn’t eliminate the errors, but it whittles the missing 46 wins all the way down to 12. In other words, ZiPS isn’t doing a bad job with the projections; Dan Szymborski has done a poor job guessing which players will end up with playing time for the Brewers! Injuries are sometimes a reason for playing time discrepancies, but they typically result in teams underperforming their projections as regulars miss time. Not only have the Brewers overperformed, they’ve done so while not being particularly good at avoiding injuries; they’ve actually lost slightly more wins than the average team due to IL stints over the last five years.
Instead, what appears to be happening is that the Brewers have been extraordinarily successful at giving more playing time to players exceeding their projections. For example, there were 62 hitters who had seasons with at least 200 plate appearances for the Brewers from 2021 to 2025. As a group, ZiPS only underestimated them by 1.5 points of wRC+ in the aggregate (104.7 actual vs. 103.2 projected). But of the 33 hitters who exceeded their projected wRC+, 28 of them received more plate appearances than I had as my baseline expectation. The same is true for pitchers, especially relievers. Now, there’s a natural tendency for teams to give more playing time to players who are outperforming their projections and less to guys who are underperforming, but the Brewers have been notably more successful at this than the rest of the league. From 2021 to 2025, 81% of their qualifying players who outperformed their expected wRC+ or ERA+ got more playing time than I expected as a baseline. To put that into context, the league-wide rate was just under 61%, and no other team was above 70%.
So, how do I fix the Brewers’ projections? That’s a bit of a craggy problem that I’m still working on. This offseason, I tried to be more aggressive in my assumptions about who would get playing time for Milwaukee based on the quality of their projections. As a result, ZiPS forecast the team for 85 wins. Naturally, the Brewers are on pace for 99.7 wins as of Wednesday morning. I may need to more accurately project actual front offices; if the Brewers are simply better than everyone else at evaluating their talent with information only they have access to, it’s not something I can directly correct for. Unless, of course, the Brewers decide to just give me all their internal data, which seems unlikely. Or if I, say, catch Dan Turkenkopf in a giant net and imprison him in my tool shed until he spills the beans. As much as I like improving projections, I don’t think my employer would appreciate if I did so by committing federal crimes, so I’ll simply have to keep trying. Being wrong is how we improve predictive models, and let’s just say that the Milwaukee Brewers continue to give me a lot of opportunities to learn.
When he broke in with the Brewers last season, Jacob Misiorowski was tough to miss, unless you were a hitter trying to catch up to his ridiculous velocity. The gangly 6-foot-7 righty announced his presence by reaching 100.5 mph on his first major league pitch and topping out at 102.2 mph in five no-hit innings against the Cardinals in Milwaukee on June 12. He followed that up with six perfect innings against the Twins before yielding a walk and a homer, and was named to the National League All-Star team as an injury replacement after just five starts. He soon leveled off, and finished with comparatively unspectacular numbers — he was an afterthought in the NL Rookie of the Year voting — but this season is a different story. The 24-year-old righty has dominated hitters like a true ace, and has improved in practically every important statistical category.
Misiorowski’s latest outing, once again facing the Cardinals in Milwaukee, was both a gem and an awe-inspiring display of firepower. Monday’s effort began with an unprecedented, if somewhat unproductive, barrage of six consecutive four-seam fastballs to JJ Wetherholt, each clocked at 103.0 mph or higher — but four of them were well outside the strike zone, resulting in a walk:
Misiorowsi overcame the leadoff walk, escaping the inning by throwing just seven more pitches on back-to-back three-pitch strikeouts of Iván Herrera and Alec Burleson, then a first-pitch groundout by Jordan Walker. In fact, he retired 15 straight hitters after the walk, again completing five no-hit innings before yielding a leadoff single to Pedro Pagés in the sixth. The Cardinals turned that into a run after speedster Victor Scott II replaced Pagés on a forceout, took third on a single to right field by Wetherholt, and scored on a grounder by Herrera, but Misiorowski stuck around to complete the sixth and seventh innings before departing with a 4-1 lead. The Brewers won, 5-1. Read the rest of this entry »
That statement was true on Opening Day, when the Rays were projected by FanGraphs Depth Charts to win 79.9 games and finish last in the AL East. It’s true again Wednesday morning, after the Rays fell 6-1 to the Orioles for a third straight loss on Tuesday night. But for much of the time in between, the truthiness of that statement wasn’t so clear.
In the last six weeks, the Rays have rattled off a five-game winning streak, two six-game winning streaks, and a seven-game winning streak. Though they no longer hold the best record in the majors, they still boast the top record in the American League, at 34-18. No team has done more to improve its standing during the first third of the season.
They’re just doing it… weird. While the Rays have the second-best record in baseball, they’re 14th in batter WAR and 12th in pitcher WAR. They don’t have a single player in the top 50 on the combined WAR leaderboard and have just three in the top 100.
Instead, the Rays are outperforming both their ability to score and prevent runs, and their ability to turn those runs into wins. The story of their season to this point is no doubt centered on the sticky concepts of luck, fortune, and deservedness. How much should we adjust our expectations for a team, perhaps, playing above its head? Read the rest of this entry »