Yet Another Projection System: A Brief Introduction to OOPSY
I have been publishing projections in some form or other since 2019, making painstaking improvements to my process along the way. To borrow an expression from Dan Szymborski, my projections have now reached a level of “non-craptitude” such that I am content — though no projector is ever truly content — to share them with you here at FanGraphs. This article introduces OOPSY, your friendly neighborhood projection system.
OOPSY aims to summarize all of the information you see on a player page — a whole slew of component statistics from different years, leagues, levels, and teams, compiled at different ages — in an attempt to make it easier to evaluate players. I have always found it difficult to account for all of this information in my head without the help of a projection system, and now I have one.
Like many popular projection systems, OOPSY takes MARCEL as a starting point, adding methodological innovations to account for additional complexity (MARCEL projects all rookies to be league average, for example). OOPSY uses its own approach to account for all of the usual factors captured by popular projection systems: league scoring environments, aging effects, major league equivalencies (with inspiration from Clay Davenport) to account for (minor and major) leagues and levels that boast differing quality of competition, park effects (both minor and major league), historical performance weighted by recency and, perhaps most importantly, regression to the mean, with statistics subject to more random variance regressed more heavily. Instead of regressing every player to the same mean as MARCEL does, OOPSY regresses players to different means based on their probability of making the majors, which is assumed to be a function of their age relative to level (based on historical data), with complex-level players regressed to a worse mean than Triple-A players, for example.
Taken together, my approach makes it easier to compare player performance at different ages, from different leagues. It has made the peak (late-20s) version of the projections an insightful way to rank prospects, for instance, producing rankings that align fairly well with traditional industry prospect lists. (You can find this offseason’s RotoGraphs projection-based prospect rankings for hitters here and for pitchers here.)
OOPSY aims to keep up with the industry’s never-ending onslaught of data by incorporating important new metrics as soon as is feasible. For pitchers, OOPSY accounts for Stuff+ (the system uses revised Stuff+ figures, which will be available at FanGraphs soon); you may have seen Eno Sarris referencing these projections under the moniker of “ppERA” at The Athletic since 2023. Here I’ll note that while Stuff+ moves a few projections a lot, the traditional statistics continue to weigh heavily in the pitching projections. OOPSY also accounts for velocity and the usual component statistics, such as strikeout rate, walk rate, and groundball rate.
Last year was my first year (quietly) publishing a slimmed down version of my hitter redraft projections based on traditional components. OOPSY now accounts for the new swing speed data published at Baseball Savant, as well as barrel rate per batted ball event, since barrels have consistently been found to be the best indicator of quality of contact (wOBAcon) skill. OOPSY also accounts for the usual hitter component statistics, e.g., K%, BB%, HR%, etcetera. The traditional components and barrel rate are the foundation of the hitting projections, but swing speed does have a substantial impact on a few players. For instance, Giancarlo Stanton has done his best to break the system, with a 20-point projected wRC+ boost thanks to his elite swing speed. Even if the way I account for the swing speed metric overrates Stanton — which is definitely possible — early indications suggest it helps improve the projections overall (e.g., swing speed helps predict offensive performance when splitting 2024 into two halves). As more data becomes available, the projections will be able to capture the impact of swing speed more precisely.
For both arms and bats, incorporating highly reliable indicators of talent — like Stuff+, barrels, and swing speed — might explain why OOPSY appears to be bolder at the extremes. For instance, OOPSY projects Aaron Judge for a 199 wRC+ in 2025, which is similar to where he has landed over his last few monster seasons, but is probably more bullish than you’ll see him projected by other systems. OOPSY is similarly extra-bullish on Yordan Alvarez, Juan Soto, and Shohei Ohtani (note: OOPSY and Steamer assume similar league averages). For arms, OOPSY is comparatively bullish on the ERA projections for its top two starters, Paul Skenes and Tarik Skubal, and projects 14 relievers for a sub-3.00 ERA in 2025, compared to six for Steamer.
OOPSY does not capture the following factors, although I hope to eventually add these in: amateur performance, foreign pro league performance (DSL, KBO, NPB, etc.), and minor league Statcast data. OOPSY borrows defensive value projections from Steamer and playing time projections from the FanGraphs Depth Charts (I like that these are readily available and updated often). For what it’s worth, I don’t much care which playing time projections you use with my rate projections, even if prominent annual reviews of projections may eventually judge me for it.
While my hitting and pitching projections have held their own relative to other prominent systems in terms of forecast accuracy, I do not claim that my system is revolutionary, nor that it is necessarily the best among the various alternatives — not that you should believe me if I did, given the tendency of forecasters to find evidence confirming the superiority of their own systems. Projection systems are the result of hundreds of subjective decisions by the analyst, with many opportunities to do things slightly (or very!) differently. For instance, I use my own flavor of aging curves and major league equivalencies, and include variables like Stuff+ and swing speed that may not yet be captured by other systems. Methodological diversity may be why averaging the prominent projection systems tends to be an effective approach.
OOPSY is a fake acronym, an homage to making errors while playing the infield growing up, and to making mistakes more generally, the fallibility of humankind. It aims to stay humble, to be transparent about the fact that projection systems are built upon different assumptions. My hope is that it adds another worthwhile perspective to the analyst’s toolkit — you can at least take comfort in knowing I rely on it heavily for my own baseball-related decisions.
I’m not sure if maybe there is a bug in how defensive projections are being retrieved or if I’m misunderstanding something. There are some pretty wide discrepancies in projected DEF for OOPSY vs. Steamer + depth charts. E.g., PCA is projected for 6.5 defensive runs by Steamer + depth charts but only 2.1 by OOPSY. This isn’t a huge deal if people just use your projections for offense, but people will inevitably look at projected WAR and see a 0.5 win difference that is almost entirely due to this discrepancy.
Thank you — we are working on fixing this. It should line up perfectly with steamer def (with dc playing time) in the end!
This should be corrected now.
Awesome, thanks!
Really nice work, they seem to pass the eye test and I think I prefer these to steamer, especially for pitchers. Projections have been around for a while, but we don’t really see many describe their methodology or updates to the systems. I know Dan talks about his updates to ZiPS in his weekly chat from time-to-time. Love that you are transparent about which statcast features are included.
Thanks, and good to hear the transparency is appreciated 🙂
Thank you for the hard work!
I noticed that in the Auction Calculator with OOPSY that toggling QS or SV+HLD does not give updated player values. It looks like OOPSY does project QS and HLD so I assume this is a site glitch.
This is fixed too.
Given the name of the system, I definitely began reading this article expecting it to be a parody.
How about Out Of the Park Sucker Yes!
I was hoping y’all would help me with a post-hoc acronym lol
Overall Outstanding Projection System for You
Our Outstandingest Projection System Yet?
OOPSY?
A missed opportunity to call it YAPS – Yet Another Projection System.
Dammit how’d I miss this!
I attempted to use OOPs in the auction calculator ithout success. When will it be integrated?
We just fixed so it should work now.
Great. Thanks!
The projection system seems somewhat-to-pretty down on Ragans. Too many walks? Any thoughts?
It’s quite close to Steamer besides a few less Ks…Ragans is hurt by Kauffman… I use the Savant park factors that find Kauffman suppresses K% quite a bit
There is something very, very funny happening with Miles Mastrobuoni’s projection – while it would be very bad for my Mariners, I almost want to see how someone could be worth 1.7 offensive WAR, 1.9 baserunning WAR, and -18.8 defensive WAR in 70 PAs.
Haha shoot — agree -188 defensive runs seems a bit harsh!
This is corrected!
Thank you for your hard work, Jordan. Your extensive explanation of OOPSY was much appreciated as well. Thanks you for sharing,
Really excited to start incorporating this system into my draft prep! It’s always great to get new analysis from someone who’s as smart as Jordan is.
On your point about projection systems post-mortem – it’s always seemed obvious to me that we should be bifurcating grading into (1) rates and (2) playing time since they are so different. Personally, I’d be more interested in the system with the best root means square error of the top 350 projected hitters/pitchers than I would be their “dollar value”, which comingles playing time.
Other Overall Player Statistical augurY?
Other Overall Player Statistical hYpothesis?
Is Ariel Cohen still doing his Projection comparison posts? Will your projection system be available for that this year or do we need to wait until next year?
I’m sure they’ll be included, but I can already tell you they won’t “win” as they don’t use atc for playing time, which is important for that analysis
Reference made to Auction Calculator and the various filters one can choose to run the results. My question is for the group; in a 4×4 mixed 15 team, what “ filter” works best on 1. Hitting projections 2. Pitching.
Maybe I am missing the link, but is there a way to get the entire NL spreadsheet of projections?
Each projection leaderboard has an “Export Data” link at the top right of the results. At least it does for me.
It fills my heart with great joy that there is a projection system named OOPSY. Like they could’ve made it a very serious vibe, trying to be respected like the statisticians they are. But instead they did the lords work and named a sabermetric tool oopsy. “What’s his oopsy projection for this year?” “Well we cleared the bannana peels from the field and put the sprinkler heads *under* the ground so pretty low”.
haha you understand
Do Steamer and ZiPS not incorporate bat speed and Stuff+?
eventually, probably
Really interesting and exciting to see a new projection system, especially one that feels so different to the others. My early and uneducated guess is that the system is probably overrating some raw power guys a little and underrating some guys who manage to hit for game power without high raw power, but it is also definitely capturing something the other projection systems struggle with — the power outliers that get regressed too much. Excited to see at the end of the season how this compares to zips, steamer, and the bat x!
It was tricky to incorporate bat speed in away that didn’t overrate the power guys and underrate the contact guys too much haha–I was glad arraez didn’t come in too much lower than steamer. It helped that going from 63 mph to 68mph avg bat speed didn’t help much — it was only above 70ish that an additional mph led to improved performance. Stanton projection does feel aggressive but every projection system is gonna have some annoying outlier projections!
Now this is the bold crazy hot take spewing uncle of projection systems I’ve always wanted. Here are some WAR projections:
Justin Turner: -0.4
Carlos Santana: 0.7
Oneil Cruz: 4.3
Shohei Ohtani: 9.6
Love it
“Bold hot take spewing uncle of projections” …I’ll take it lol
I’ve been trying to make a system that incorporates all of this stuff (statcast, stuff+ etc) the last few seasons but my data skills are not great. I’ve always felt that marcels based models miss “skill” metrics like swing decisions, hitting the ball super hard, running super fast and at the right times etc. I know some of the other systems model this stuff, but like another commenter said, their methodologies are always in a black box (understandably). Anyway, I’m glad you at at least confirm some of the stuff in the model and I’m excited to play around with the projections. Will their be more info in the future? Thank you!
projection systems are a dynamic thing so ill publicize when making tweaks or updates, you’re free to inquire about anything else, dms are open!
It’s crazy that, on a rate basis, Eloy Jimenez and Anthony Santander are projected to be very similar players. One just signed a minor league contract, the other is projected to get $80M+. Not criticizing OOPSY as Steamers projections are similar but just scratching my head trying to figure this out.
One has been healthy enough to play 460 games over the past three seasons, the other 302.
eloy is underrated imo but it helps that santander can actually play the field, and teams do care that santander is coming off a couple of good seasons (unlike eloy!)
Great explanation, will be curious to see how this compares to BAT X.
p.s. (literally) – so Eno was kidding about the “PS” standing for “Process Stats”? 🙂
me and eno did discuss some sort of post-hoc acronym that’d include “process stats” lol, but gonna let readers decide what the acronym means ultimately, maybe
OK, put me down for Oligarch’s Omniscient Pursuit of Soothsaying, Y’all
Any consideration to adjusting bat speed via swing length in some way before including in the model? Since on napkin math shorter swing + higher bat speed seems to be better than longer swing + longer bat speed: https://medium.com/@chapcunningham28/baseball-savants-bat-speed-what-does-it-mean-and-how-should-we-use-it-c2cbc467cb22
Or to go even further, a normalized swing length that doesn’t punish players for pulling balls out in front: https://skykalkman.substack.com/p/normalizing-swing-length
Might help rein in the big projections for Morel/Stanton types?
i played around with adding length too (see my bluesky tweets from november 23 @rosenjordanblum) but ultimately decided it was too noisy to include yet…maybe in the future
Excellent reading, thanks for sharing and for making so much of your methodology public.
Wonder if Squared Up% could help further, or if that would be thumb on the scale too much (kind of reverse-engineering exit velocity at that point.) Almost all of your big gainers are Stanton, The Cruz’s, Jordan Walker, Big Christmas – bottom quintile squared-up guys, while your big droppers include the squared-up superstars like Arraez/Kwan.
squared-up has a weird relationship with future outcomes (it won’t let me hyperlink but see my piece from last year, “A Way-Too-Early Look at the Importance of Bat Speed,” and squared-up, blasts, etc don’t offer the same reliability in super small samples like bat speed does, which is a big part of its appeal (it can quickly capture changes in talent, like velo for pitchers)…I think kwan and arraez getting dinged a bit is justified, but also don’t want to penalize them excessively so Ill for sure keep looking for ways to improve my model in the future (fwiw I think OOPSY will be more optimistic on these two than the BAT X, which also gives a lot of weight to statcast measures). Thanks 🙂
I’ll check it out, thanks!
So I’m not one to nitpick here and I believe that oopsy is definitely incorporating some things that are needed.
BUT.. I have yet to find a player that I would assume to see a 10-25 point wOBA variance between steamer in either direction that I’ve been off on when doing a random player search.
Stanton isn’t the only outlier BTW. Jo Adell, Schwarber, the list goes on on elite bat speed guys that seem to break the system and then you have the Xavier Edwards/jacob Wilson/steven Kwan guys who break it in the other direction.
It looks like oopsy is simply assuming the bat speed guys are going to have a few more hits and all of them will be home runs and these end up looking like career year lines for a lot of guys.
Help me understand why I shouldn’t be skeptical here. It just feels like oopsy has a “type” of hitter it likes and a “type” it doesn’t. Which leads me to believe the weighting on the bat speed is not correct in some way?
If you look at past data (see hyperlinks in the stanton paragraph), you’ll see bat speed helps project future performance (wrc+) compared to a model that’s based on traditional metrics (one that does not include bat speed). but having good bat speed doesn’t automatically help a projection, it only helps if a guy’s bat speed suggests my traditional wrc+ projection for him is too low (put differently, projected performance is regressed on two variables at the same time, bat speed, and projected performance based on traditional variables). so like christian walker, brandon nimmo, matt olson, ketel marte have good bat speed but their projection is approx the same as steamer. Re: stanton, he is the biggest outlier, and those other guys, e.g., adell/kwan are helped/hurt by bat speed, but it should come as no surprise that a system that incorporates bat speed tends to like guys with good bat speed more than one that does not. FWIW, THE BAT X, which captures statcast also, but probs not bat speed (yet), will prob be more similar to me on arraez and kwan, if not lower (as the other statcast metrics it incorporates are correlated with bat speed)…I don’t mind you being skeptical, which is a healthy approach with all projections, but the weight on bat speed is directly related to how much bat speed helped improve outcomes when forecasting past data.
Love the response Jordan thanks. That helps for sure. Looking forward to seeing how this shakes this year. Love what you’re doing with this
Thanks joe!