Simplified Analysis: OPS and xFIP


Jayne Kamin-Oncea-Imagn Images

Over the years, I’ve gone to the cutting edge of stats to find advantages. I can go into a deep analysis on any player’s fantasy value, but there isn’t always time to analyze each player’s profile. For a shortcut, I use OPS to evaluate hitters and xFIP and botERA for pitchers. They give me a good predictive look, especially in a small sample. Besides those stats, I might make a cursory look at BABIP and Contact% for hitters and K%-BB% for pitchers.

Note: Recent plate appearances could be the #1 stat to follow for hitters, but I’m going to focus on production stats.

Hitters: OPS Rules Supreme

It’s hard to value hitters with traditional stats because each league has its own rules. For this reason, I’ve found OPS to be the best general stat to use. Here are our Player Rater values at different OPS values.

You Aren't a FanGraphs Member
It looks like you aren't yet a FanGraphs Member (or aren't logged in). We aren't 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 of the good reasons why you should become a Member.
1. Ad Free viewing! We won't bug you with this ad, or any other.
2. Unlimited articles! Non-Members only get to read 10 free articles a month. Members never get cut off.
3. Dark mode and Classic mode!
4. Custom player page dashboards! Choose the player cards you want, in the order you want them.
5. One-click data exports! Export our projections and leaderboards for your personal projects.
6. Remove the photos on the home page! (Honestly, this doesn't sound so great to us, but some people wanted it, and we like to give our Members what they want.)
7. Even more Steamer projections! We have handedness, percentile, and context neutral projections available for Members only.
8. Get FanGraphs Walk-Off, a customized year end review! Find out exactly how you used FanGraphs this year, and how that compares to other Members. Don't be a victim of FOMO.
9. A weekly mailbag column, exclusively for Members.
10. Help support FanGraphs and our entire staff! Our Members provide us with critical resources to improve the site and deliver new features!
We hope you'll consider a Membership today, for yourself or as a gift! And we realize this has been an awfully long sales pitch, so we've also removed all the other ads in this article. We didn't want to overdo it.

An R-squared of .44, with stolen bases and playing time not being accounted for. Here is the rank at different OPS values.

OPS to Fantasy Player Rater
OPS Auction Calculator Rank
1.000 1
.950 3
.900 8
.850 19
.800 46
.750 108
.700 257
.650 609

Ideally, hitters with projected/actual OPS values over .700 should be targeted, with a .650 OPS being the minimum.

I came to a similar conclusion in this year’s The Process when I included stolen bases.

My goal with this tool is to get a quick idea of a hitter’s roto 5×5 value given his OPS and potential stolen bases. I like using OPS since it correlates with a hitter’s overall fantasy value (once stolen bases are included). This formula takes the two inputs and comes up with a projected draft slot. I use this as a quick way to value players with incoming news, after I’ve already calculated all my draft values. To find the values, I used 2024 ADP (top 450 picks) and the hitters’ stats (OPS and SB). My plan was not to create a formula to value the top players but instead to focus on regular Joes. The studs are well
known, have guaranteed jobs, and are universally drafted in the first few rounds. There is no need to calculate a value for these studs.

The formula I ended up with is:
ADP: 8.66*OPS^(-10.5)-8.1*SB+8.7
R-squared: .566

Considering no plate appearances were taken into account, I’m surprised with the strong correlation.

From the formula, I created this simple table.

Without being able to steal bases, a hitter’s value drops once they have a sub-.700 OPS.

While other fancy stats, like wOBA and wRC+, capture a player’s overall production, they adjust the hitter’s talent based on league and park factors. Fantasy games don’t adjust for these other factors. All they care about is whether the batter hit a home run, and it doesn’t adjust the contribution depending on the park.

Honorable Mention #1: BABIP

With a small data sample, I might adjust a hitter’s OPS based on their BABIP. If I see a BABIP value over .350 or under .250, I regress them to the closest value. Usually, fewer than 10 qualified hitters have a BABIP over .350 or under .250, I assume the breakout will not outperform the league’s best bats.

For a back-of-the-napkin adjustment, I double the amount BABIP is regressed by and adjust the player’s OPS by that amount (both OBP and SLG take a hit). The numbers don’t work out perfectly, especially if a lot of home runs are involved (they don’t count towards BABIP). Here is an example using Tommy Edman.

Currently, Edman has a .432 BABIP and triple slash line of .351/.431/.491 leading to a .922 OPS, making him an elite hitter. I need to cut his BABIP by 82 points to get it to .350. I use that number to cut both his OBP and SLG each by .082 or .164 total off his OPS. His resulting OPS would be .758 or around the 100th best hitter.

Honorable Mention #2: Contact%

Hitters need a minimum level of Contact% to make it in the league. From the 2026 Edition of The Process, I found:

Those in the 64%-70% Contact range are in trouble of losing playing time while those under 64% are
short for the league.

Currently, no qualified batter has a Contact% under 64%. While there are exceptions (Munetaka Murakami), the rule has held up.

Pitchers: xFIP (and botERA)

My fondness for xFIP and botERA comes from these two tables from the 2025 edition of The Process. The first table shows how predictive stats are after one month compared to the rest-of-the-season value. The other one looks season-to-season.

R-Squared from One Month to Rest-of-Season

R-squared Season-to-Season

Five stats live near the top: Pitching+, SIERA, K%-BB%, botERA (botOvr on an ERA scale), and xFIP.

Listing all five is a complete waste of time, so I need to cull the herd. Pitching+ and K-BB% don’t make the cut because they aren’t on an easy-to-understand ERA scale. For SIERA, I wish it were on our pitcher’s Splits page like xFIP, but it’s not, so it goes away.

The major issue with botERA is that it’s also not available on our splits page, so I mainly reference xFIP even though it may not be as predictive as the other stats.

And when it comes to a backup, I like going with botERA. It is on the same ERA scale as xFIP, so the values can easily be compared. Second, its inputs are completely different than xFIP, so it can show if the two agree or disagree for different reasons.

Honorable Mention #1: K-BB%

I will sometimes use K-BB% when comparing a pitcher split like versus handedness. It’s predictive going forward, and sometimes the differences are stark.





Jeff, one of the authors of the fantasy baseball guide,The Process, writes for RotoGraphs, The Hardball Times, Rotowire, Baseball America, and BaseballHQ. He has been nominated for two SABR Analytics Research Award for Contemporary Analysis and won it in 2013 in tandem with Bill Petti. He has won four FSWA Awards including on for his Mining the News series. He's won Tout Wars three times, LABR twice, and got his first NFBC Main Event win in 2021. Follow him on Twitter @jeffwzimmerman.

4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
scottbotMember since 2024
2 days ago

You just cannot fake a good xFIP: it probably likes GB heavy guys that aren’t awesome for whip and guys without sufficient stuff to suppress homers at a level that will keep them in mlb for long too much but the inputs are not noisy.

Last edited 2 days ago by scottbot