Fixing xFIP, Pt. 1: Line Drives and Pop-Ups

One might argue that xFIP is slightly misaligned. One might make that argument in blog form, on the website FanGraphs, today, here, now.

One only might argue that xFIP is slightly misaligned because xFIP is commonly understood to serve a purpose distinct from FIP. FIP, aka Fielding Independent Pitching, is calculated as a function of strikeouts, walks, and home runs — that is, outcomes over which fielders bear no influence. The equation that underpins FIP is derived from a linear regression equation intended to resemble ERA, for ease of interpretation. Because it is based exclusively on outcomes, its purpose is more descriptive than predictive. In other word, it finds greater purpose describing what should have happened but not necessarily what will happen.

xFIP, on the other hand, seeks to achieve the inverse. A large swath of evidence exists to suggest home run-to-fly ball rate (HR/FB) for pitchers is incredibly noisy season to season. Sure, certain pitchers might anecdotally buck the norm — apparently, Michael Pineda was born to be a cafeteria lunch lady, serving up meatballs and taters — but, by and large, HR/FB is a fool’s errand to predict. Accordingly, xFIP replaced home runs with expected home runs, by way of multiplying the number of fly balls allowed by a pitcher by the league-average HR/FB, thereby normalizing home run damage, making it, in theory, a better descriptor (and perhaps a better predictor) of pitcher performance over time.

And therein lies the rub, although, if you missed it, you mustn’t be blamed.

HR/FB, the backbone of xFIP, is inherently flawed because:

  1. Home runs are never hit on infield fly balls (aka pop-ups), yet pop-ups are included in HR/FB (because pop-ups are included in all fly balls*); and
  2. Home runs occasionally are hit on line drives, yet line drives are not included in HR/FB.

*Fly ball percentage (FB%) includes both infield and outfield fly balls.

This has bothered me a long time, this seemingly minor but potentially substantial ideological discrepancy. If we seek to normalize home run behavior for pitchers, we should endeavor to do so in a way that is most theoretically appropriate. I’m not here to reinvent the wheel — there are significantly more complex ways to normalize home run behavior — but I, at least, can pick the low-hanging fruit and make subtle adjustments to existing metrics.

I sampled all qualified pitcher-seasons from 2010 through 2018 (n = 709) and calculated unique ratios of home runs to outfield fly balls and line drives. This abbreviates to HR/(oFB+LD), which doesn’t quite roll off the tongue, but it’ll do in a pinch.

Although HR/(oFB+LD) generally behaves proportionally to HR/FB…

HR/FB vs HR/(oFB+LD)
Season HR/FB HR/(oFB+LD)
2010 9.4% 6.8%
2011 9.7% 6.7%
2012 11.3% 7.5%
2013 10.5% 6.9%
2014 9.5% 6.3%
2015 11.4% 7.5%
2016 12.8% 8.5%
2017 13.7% 9.3%
2018 12.7% 8.5%

… HR/(oFB+LD) cannot be directly substituted for HR/FB in FIP or else it breaks the equation. If I simply plug in HR/(oFB+LD), all pitchers would suddenly “underperform” their ERA because their xFIPs would improve by several tenths of a run without merit.

To account for this difference, I ran a fresh regression, setting up the equation exactly as specified by xFIP, by virtue of FIP. (I also included year fixed effects, which is a component of FIP and xFIP, too, appearing in the form of the “year constant” term.) However, in lieu of normalizing home runs by all fly balls, I normalized home runs by, yes, outfield fly balls and line drives — the only batted ball events that can produce home runs (inside-the-park home runs notwithstanding).

The regression produced an adjusted r2 of 0.55 — weaker than FIP (r2 = 0.62) but a good deal stronger than the original xFIP (r2 = 0.42). What this means is, from a purely descriptive standpoint, xFIP that relies on outfield fly balls and line drives is a better description of “skill” (or “deserved” outcomes) than xFIP that relies on outfield fly balls and also pop-ups but not line drives.

From a predictive standpoint (by measure of correlation to next-year ERA), the original xFIP outperforms the new xFIP, but not significantly, resulting in r2 values of 0.20 and 0.18, respectively. Even SIERA hardly outperforms the new xFIP (r2 = 0.20), and its descriptive (same-year) value is notably weaker (r2 = 0.36).

Adjusted r2
ERA y+1 ERA
FIP 0.62 0.17
xFIP 0.42 0.20
SIERA 0.45 0.20
New xFIP 0.55 0.18

FIP, xFIP, and SIERA all boast ideological differences, yet none prevails as a superior predictive option. That “new xFIP” lands in the middle of an indistinguishable pack predictively while also prevailing above xFIP and SIERA descriptively lends merit to the original argument — the argument that xFIP might be theoretically misaligned, such that it artificially restricts its descriptive power.

You could calculate New xFIP manually using the equation above, if you’d like. (The constant term for 2019, as of now, is something like 0.834. I say “as of now” because it’s a moving target — as league-wide ERA changes, so, too, does the constant term.)

If not, you could make mental adjustments to xFIP in its current state according to a couple of intuitive rules of thumb. How does a pitcher’s line drive rate (LD%) compare to the league average? If it’s higher, then xFIP might be overrating his performance; if lower, then underrating. Same with infield fly ball percentage (IFFB%): if it’s higher, xFIP might be underrating his performance, and vice versa. It’s inexact, but, to be fair, all of this (gesturing broadly to sabermetrics) is inexact.

* * *

Here’s the “New xFIP” leaderboard, as of Sunday, May 12.

New xFIP Leaderboard
Name Team IP ERA Old xFIP New xFIP diff
Blake Snell Rays 43.0 3.56 2.49 2.62 0.13
Tyler Glasnow Rays 48.3 1.86 2.78 2.71 -0.07
Hyun-Jin Ryu Dodgers 52.3 1.72 2.50 2.77 0.27
Stephen Strasburg Nationals 57.0 3.63 2.71 2.89 0.18
Gerrit Cole Astros 55.7 3.88 2.33 2.94 0.61
Luis Castillo Reds 56.3 1.76 3.08 2.99 -0.09
Cole Hamels Cubs 49.7 3.08 3.57 3.30 -0.27
Caleb Smith Marlins 42.7 2.11 2.98 3.32 0.34
German Marquez Rockies 57.7 3.43 3.16 3.32 0.16
Max Scherzer Nationals 59.3 3.64 2.75 3.37 0.62
Noah Syndergaard Mets 49.0 5.14 3.41 3.37 -0.04
Carlos Carrasco Indians 40.3 4.91 3.14 3.50 0.36
Jacob deGrom Mets 47.0 3.26 2.93 3.51 0.58
Zack Greinke Diamondbacks 57.0 3.16 3.19 3.53 0.34
Max Fried Braves 44.3 3.25 3.32 3.59 0.27
Matthew Boyd Tigers 54.3 3.15 3.38 3.61 0.23
Luke Weaver Diamondbacks 45.3 2.98 3.53 3.66 0.13
Zack Wheeler Mets 49.7 4.35 3.34 3.66 0.32
Marcus Stroman Blue Jays 52.0 3.12 3.81 3.71 -0.10
Tyler Mahle Reds 45.3 3.97 3.02 3.71 0.69
Chris Sale Red Sox 44.0 4.50 3.46 3.72 0.26
Charlie Morton Rays 44.3 2.64 3.53 3.73 0.20
Jose Quintana Cubs 46.3 3.50 3.39 3.75 0.36
Justin Verlander Astros 57.3 2.51 3.56 3.77 0.21
Jon Lester Cubs 38.7 1.16 3.40 3.82 0.42
Frankie Montas Athletics 45.3 2.78 3.63 3.83 0.20
Mike Minor Rangers 53.7 2.68 4.17 3.86 -0.31
Pablo Lopez Marlins 41.0 5.93 3.82 3.87 0.05
Yusei Kikuchi Mariners 54.3 3.64 4.00 3.92 -0.08
Patrick Corbin Nationals 50.7 3.20 3.85 3.94 0.09
Zach Eflin Phillies 51.0 2.47 4.41 3.94 -0.47
Shane Bieber Indians 49.7 3.81 3.99 3.99 0.00
Jack Flaherty Cardinals 41.7 4.32 3.56 4.01 0.45
Masahiro Tanaka Yankees 52.3 3.44 4.00 4.05 0.05
Joey Lucchesi Padres 41.3 4.57 3.92 4.06 0.14
Madison Bumgarner Giants 55.7 4.04 3.47 4.08 0.61
Domingo German Yankees 43.3 2.70 3.94 4.10 0.16
Kyle Hendricks Cubs 42.3 3.19 3.81 4.11 0.30
Jon Gray Rockies 48.7 4.25 3.72 4.13 0.41
Jose Berrios Twins 59.0 3.05 4.13 4.13 0.00
Robbie Ray Diamondbacks 48.7 3.14 3.77 4.19 0.42
Walker Buehler Dodgers 43.3 4.15 3.96 4.22 0.26
Adam Wainwright Cardinals 43.3 4.15 4.17 4.24 0.07
Miles Mikolas Cardinals 54.0 3.83 4.33 4.30 -0.03
Yonny Chirinos Rays 42.3 3.61 4.42 4.35 -0.07
Jordan Lyles Pirates 38.7 2.09 4.48 4.36 -0.12
Eduardo Rodriguez Red Sox 43.7 4.53 3.76 4.38 0.62
Homer Bailey Royals 41.0 4.83 4.01 4.38 0.37
Trevor Bauer Indians 59.7 3.02 3.84 4.39 0.55
Kevin Gausman Braves 42.0 4.50 4.05 4.40 0.35
Trevor Williams Pirates 50.3 3.40 4.31 4.45 0.14
Jose Urena Marlins 46.7 4.82 4.52 4.48 -0.04
Wade Miley Astros 45.3 3.18 4.43 4.48 0.05
Anthony DeSclafani Reds 41.0 4.17 4.26 4.50 0.24
Andrew Cashner Orioles 42.3 4.25 4.84 4.53 -0.31
Martin Perez Twins 46.3 3.11 4.28 4.53 0.25
Brad Peacock Astros 42.7 4.01 4.19 4.54 0.35
Jake Arrieta Phillies 50.0 3.78 4.44 4.55 0.11
Jake Odorizzi Twins 42.7 2.32 4.49 4.58 0.09
Julio Teheran Braves 50.7 4.26 4.50 4.68 0.18
Zach Davies Brewers 46.7 1.54 4.72 4.69 -0.03
Joe Musgrove Pirates 40.7 4.20 4.43 4.72 0.29
Aaron Nola Phillies 46.3 4.86 3.88 4.73 0.85
Mike Fiers Athletics 51.0 5.12 5.18 4.74 -0.44
Mike Leake Mariners 47.3 4.37 4.69 4.79 0.10
Spencer Turnbull Tigers 44.7 2.42 4.46 4.80 0.34
Marco Gonzales Mariners 56.7 3.18 4.89 4.86 -0.03
Nick Margevicius Padres 41.3 4.14 4.87 4.90 0.03
J.A. Happ Yankees 43.3 4.36 4.91 4.91 0.00
Collin McHugh Astros 42.7 6.33 4.21 4.94 0.73
Rick Porcello Red Sox 43.7 5.15 4.97 4.98 0.01
Kenta Maeda Dodgers 44.7 4.03 4.66 5.01 0.35
Merrill Kelly Diamondbacks 46.0 4.70 4.66 5.02 0.36
Kyle Freeland Rockies 44.7 5.84 4.92 5.03 0.11
Aaron Sanchez Blue Jays 48.0 3.75 4.72 5.06 0.34
Jakob Junis Royals 48.3 5.77 4.63 5.08 0.45
Lance Lynn Rangers 47.7 5.48 4.53 5.14 0.61
Ivan Nova White Sox 44.3 6.29 4.44 5.15 0.71
Jeff Samardzija Giants 41.0 3.51 5.08 5.17 0.09
Jhoulys Chacin Brewers 45.3 4.57 5.43 5.23 -0.20
Brett Anderson Athletics 43.0 4.19 5.24 5.26 0.02
Michael Pineda Twins 40.0 5.85 4.71 5.27 0.56
Dylan Bundy Orioles 40.7 5.31 5.13 5.32 0.19
Reynaldo Lopez White Sox 50.0 5.58 5.46 5.38 -0.08
Brad Keller Royals 52.3 4.47 5.09 5.43 0.34
Dereck Rodriguez Giants 41.0 5.05 5.06 5.45 0.39
Jorge Lopez Royals 43.0 6.07 4.59 5.45 0.86
Sandy Alcantara Marlins 44.0 5.11 5.54 5.45 -0.09
Trevor Richards Marlins 42.3 4.46 5.57 5.52 -0.05
Tanner Roark Reds 41.3 3.27 4.81 5.58 0.77
Anibal Sanchez Nationals 41.0 5.27 5.37 6.21 0.84
Click headers to sort!

* * *

[Edit (5/21/19 8:32 pm ET)] It should be noted all calculations below relied on Statcast data rather than FanGraphs data. I had a moment of panic when I realized FanGraphs and Statcast data do not perfectly align in terms of how batted ball events (fly balls, etc.) are strung/coded. Fortunately, I am also able cross-validate the results below using FanGraphs data. The change to xFIP I recommended below still bears a substantial improvement in xFIP’s correlation with same-year ERA; its adjusted r2 improving from 0.44 to 0.53 — not exactly the same values shown below, but darn close. That’s all. Thanks![/Edit]





Two-time FSWA award winner, including 2018 Baseball Writer of the Year, and 8-time award finalist. Featured in Lindy's magazine (2018, 2019), Rotowire magazine (2021), and Baseball Prospectus (2022, 2023). Biased toward a nicely rolled baseball pant.

36 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Rotoholicmember
4 years ago

Carson got the job with Toronto despite this annoying writing style, not because of it.