Why Does ZiPS Hate The Milwaukee Brewers?

As the maintainer of the ZiPS prediction system, I answer a lot of questions about how it works and spitting out numbers. One question I get a lot is why the system keeps cutting the Milwaukee Brewers, which it has for the last five seasons and by a significant amount. Although I have talked about this issue quite a bit, mostly in interviews and on social media, answering that question in detail is necessary at this time. Of course, ZiPS isn’t alone in downplaying the Brewers. But as a single systems engineer for almost a quarter of a century, I am responsible for both being as transparent as possible and improving the model as much as I can.
So, how has ZiPS done with the Brewers historically? It turns out that since this program was founded, it is worse than any other major league franchise! Here are the results of ZiPS compared to Reality from 2005. I’ll note that the columns don’t exactly add up, as the ZiPS project spans 162-game seasons (or 60 games in 2020) and there are plenty of times when teams have played 161 or 163 games:
ZiPS Projected Wins vs. Reality, 2005-2025
| The team | ZiPS Preseason Wins | Real Success | Miss |
|---|---|---|---|
| The Milwaukee Brewers | 1655 | 1725 | -70 |
| Los Angeles Dodgers | 1823 | 1890 | -67 |
| New York Yankees | 1831 | 1893 | -62 |
| The Houston Astros | 1631 | 1688 | -57 |
| Tampa Bay Rays | 1686 | 1717 | -31 |
| Cleveland Rangers | 1709 | 1731 | -22 |
| Texas Rangers | 1621 | 1642 | -21 |
| Louis Cardinals | 1764 | 1782 | -18 |
| Miami Marlins | 1486 | 1502 | -16 |
| The 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 |
| The San Francisco Giants | 1665 | 1660 | 5 |
| Chicago White Sox | 1549 | 1543 | 6 |
| The Boston Red Sox | 1791 | 1781 | 10 |
| Minnesota Twins | 1637 | 1624 | 13 |
| Baltimore Orioles | 1544 | 1527 | 17 |
| The Detroit Tigers | 1635 | 1613 | 22 |
| The Cincinnati Reds | 1593 | 1570 | 23 |
| The Pittsburgh Pirates | 1511 | 1488 | 23 |
| Kansas City Royals | 1499 | 1474 | 25 |
| San Diego Padres | 1640 | 1606 | 34 |
| The New York Mets | 1706 | 1671 | 35 |
| The Arizona Diamondbacks | 1633 | 1592 | 41 |
| The Colorado Rockies | 1529 | 1482 | 47 |
| Washington Nationals | 1624 | 1576 | 48 |
| Chicago Cubs | 1714 | 1664 | 50 |
One source of error that is very difficult to control is what the team does during the last trading session. Many teams have overworked their preseason projections and added talent during the season; conversely, underperformers have a tendency to sell talent away. That’s a challenge to model, as it involves trying to name players who are not in the organization as part of the team, even though we have little knowledge of who those players will actually be four months in advance. I actually created a model based on a team’s quality, age, salary, recent record, and trade history to get an idea of the likelihood that a team would be a buyer or seller next season. But while it works, its accuracy isn’t at a point where I can include it as a guess.
Historically, the Dodgers and Yankees have been two of the most aggressive buyers in the league, so it’s no surprise to see them on ZiPS’ biggest miss list. But while the Brewers made some big moves during the offseason — the biggest one being arguably the CC Sabathia trade in 2008, which was one of the most successful trades of its kind ever — they’re not on the buying side as often as other franchise teams. So, what’s going on here?
First, here’s an overview of how the team’s projection percentages worked. Ideally, you want 10% of teams to exceed their 90th percentile prediction, 20% of teams to exceed their 80th, and so on:
ZiPS Projected Wins vs. Reality, 2005-2025
| Percentile | Percentage of Teams Passed |
|---|---|
| 90 of | 9.3% |
| 80 of | 21.0% |
| 70 of | 29.8% |
| 60 of | 41.5% |
| 50 of | 50.5% |
| 40 of | 58.8% |
| 30 of | 69.1% |
| 20 | 78.4% |
| 10 | 88.9% |
ZiPS does a great job at integration. Simply put, the basic function of a prediction system is to know the range of possible outcomes, and be wrong by the right margins the right amount of times. It would be easy to say “Hey, the predictions are working as they should have been put together, and some group will definitely have the worst 30 predictions, whatever,” but that doesn’t mean we shouldn’t investigate these issues and check if there is something systematic the model is missing. Especially in a situation like Milwaukee, where nearly two-thirds of the 21-year margin of error has come in the last five seasons (417 projected wins versus 463 actual wins).
You are not a FanGraphs Member
It appears that you are not yet a FanGraphs Member (or signed in). We’re not mad, just disappointed.
We get it. You want to read this article. But before we let you get back to it, we’d like to point out a few good reasons why you should become a Member.
1. Free Viewing! We will not mistake you for this ad, or any other.
2. Unlimited topics! Non-Members only get to read 10 free articles per month. Members are never cut off.
3. Dark mode and classic mode!
4. Custom player page dashboards! Choose the player cards you want, the way you want.
5. One-click data export! Use our predictions and leaderboards for your personal projects.
6. Remove images from the home page! (Honestly, this doesn’t sound that good to us, but other people wanted it, and we like to give our Members what they want.)
7. More Steam guesses! We have offer, percentage, and context neutral predictions available only to members.
8. Get the FanGraphs Walk-Off, a custom year-end review! Find out how you used FanGraphs this year, and how that compares to other Members. Don’t fall prey to FOMO.
9. Weekly mailbag column, for Members only.
10. Help support FanGraphs and all of our staff! Our members give us valuable resources to improve the site and bring new features!
We hope you will consider Membership today, for yourself or as a gift! And we realize that this has been a very long marketing article, so we’ve removed all other ads from this article. We didn’t want to overdo it.
The ZiPS target standings have two parts: the ratings themselves and the ratings of who ends up getting playing time. To get an idea of how much of ZiPS’ misses are errors in modeling versus errors in playing time, I often re-plot a team’s wins using each player’s actual playing time after the season ends. Re-examining the 2021-2025 Brewers using their preseason projections but the players’ actual playing time makes the issue much clearer:
Brewers ZiPS Wins vs. Reality
| A year | PS Preseason | ZiPS for Real Time Gaming | Real Success |
|---|---|---|---|
| 2021 | 83 | 93 | 95 |
| 2022 | 88 | 94 | 86 |
| 2023 | 84 | 87 | 92 |
| 2024 | 78 | 87 | 93 |
| 2025 | 84 | 90 | 97 |
Knowing each player’s actual playing time doesn’t eliminate mistakes, but it does reduce 46 wins to 12. In other words, ZiPS doesn’t do a bad job of guessing; Dan Szymborski did a poor job of predicting which players will end up getting playing time for the Brewers! Injuries are sometimes the reason for the discrepancy in playing time, but it often leads to teams underperforming their projections as regulars miss time. It’s not just the Brewers overthey did, they did while not being very good at avoiding injury; they’ve actually lost more wins than the average team due to IL stints over the past five years.
Instead, what seems to be happening is that the Brewers have been incredibly successful in giving more playing time to players who exceed their ratings. For example, there were 62 hitters who had seasons with at least 200 plate appearances for the Brewers from 2021 to 2025. As a team, ZiPS only underperformed by 1.5 wRC+ points in the combine (104.7 actual vs. 103.2 expected). But of the 33 hitters who exceeded their projected wRC+, 28 in them they found the appearance of more plates than I expected as my basic. The same is true for pitchers, especially relievers. Now, there’s a natural tendency for teams to give more playing time to big hitters and less to guys who don’t, but the Brewers have been more successful at this than the rest of the league. From 2021 to 2025, 81% of their eligible players who performed better than their expected wRC+ or ERA+ received more playing time than I expected as a baseline. To put that into context, the league-wide rate was below 61%, and no other team was above 70%.
So, how do I fix the Brewers’ projections? That’s a small problem I’m still working on. This offseason, I’ve tried to be aggressive in my thoughts on who will get playing time for Milwaukee based on the quality of their projections. As a result, ZiPS predicts that the team will win 85. Naturally, the Brewers are at a 99.7 win rate as of Wednesday morning. I may need to project more accurately the actual front offices; if the Brewers are better than anyone else at evaluating their talent with the knowledge they only have access to, it’s not something I can directly fix. Unless, of course, the Brewers decided to give me all their internal data, which seems unlikely. Or if I say, I caught Dan Turkenkopf in a big net and locked him in my tool shed until he spilled the beans. As much as I like to develop assumptions, I don’t think my employer would appreciate it if I did so by committing a corporate crime, so I’ll have to keep trying. Being wrong is how we develop predictive models, and let’s just say the Milwaukee Brewers continue to give me plenty of learning opportunities.



