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 »
At 2:26 a.m. ET on Tuesday, ESPN’s Jeff Passan reported that the Athletics intended to call up their top pitching prospect, Gage Jump. First of all: Sweet Jesus, Jeff, go to sleep. If you keep burning the candle at both ends like this, you’re not going to be presentable for TV come October.
The A’s didn’t make the move official until Tuesday evening; Jump wasn’t on the 40-man roster, so they had to clear a roster spot by putting Aaron Civale on the IL with shoulder tendinitis and sliding Denzel Clarke over to the 60-day IL. The debut itself was a little rocky, as Jump allowed four runs and nine hits in five innings, but it’s exciting to see him in the majors all the same. And not just because of what it means for writers who traffic in song-lyric headlines. Read the rest of this entry »
It has been a good year for walks. Whatever you want to attribute it to – and trust me, I’ve done a lot of attributing – batters are drawing free passes more frequently than they have for a long time. Well, most batters. The San Francisco Giants didn’t get the memo. As a squad, the Giants have walked only 5.8% of the time this year. That’s last in baseball by a mile. The gap between them and the 29th-place Rockies is as large as the gap between the Rockies and the league average. What gives?
My investigation started with the 2025 Giants. Walk rate is a stable statistic on the whole. If you walk a lot in one year, you’re likely to walk a lot the next year. But the Giants were no slouches when it came to taking a free base in 2025. In fact, they had one of the highest team walk rates in baseball – 9.2%, fourth in the majors. In the second half of the year, they walked 8.7% of the time. The 10 Giants who batted most frequently had a combined 9.6% walk rate. Four of those players are no longer on the team, but they were actually hurting the average – the six remaining Giants who batted most frequently in 2025 posted an aggregate 10.2% walk rate.
As Keanu Reeves memorably put it: Whoa. These six have taken 61.5% of the Giants’ plate appearances this year. If they were walking at the clip they did last year, that would add a whopping three percentage points to the team’s overall walk rate, placing San Francisco squarely in the middle of the pack instead of historically low. Read the rest of this entry »
Ben Lindbergh and Meg Rowley banter about Craig Kimbrel’s new home, Colton Cowser’s walk-offs, Chris Taylor’s rapid retirement, unretirement, and re-retirement, whether the Mets should sell (and whom they could deal), the relative improvement of MLB’s worst teams, the Blue Jays’ (and Vladimir Guerrero Jr.’s) punchless contact, the historic hitting of this season’s MLB debutants, Gage Jump and the best-ever early returns for a draft class, whether the Athletics’ and Pirates’ production has been as lopsided as expected, an Oneil Cruz update, a trio of teams that has benefited from stable rotations, the Astros’ combined no-hitter, the Cubs’ extreme streakiness (and nondescript roster), more Giants innovations in thrusting, and Bryce Harper’s toothpaste/toothbrush technique, plus postscript updates.