clock menu more-arrow no yes mobile

Filed under:

Opinions Were Like Kittens, I Was Giving Them Away: Should WAR Be Based on xFIP?

This morning in the comments, we discussed the differences in calculating WAR between the baseballprojection (rWAR or Rally WAR) method and the fangraphs (fWAR) method.  In gauging position players, the two groups tend to be fairly similar, differing mostly in how they determine the value of a player's fielding contributions -- the rally system uses Sean Smith's TotalZone (TZ) and fangraphs uses Mitchel Lichtmann's Ultimate Zone Rating (UZR).  For some players, there is quite a bit of divergence between the fielding metrics but, on the whole, the systems are pretty convergent in terms of position player evaluation.  When evaluating the contributions of pitchers, on the other hand, the systems tend to diverge because of a distinct difference in methodology -- Rally determines a pitcher's value (on a per-inning basis) based upon the number of runs he actually yields whereas fangraphs determines a pitcher's per-inning value based on how many runs they expect him to yield according to his Fielding Independent Pitching (FIP) statistic, which is based solely on strikeouts, walks, and homeruns.  There are benefits and drawbacks to each method but I prefer the fangraphs method, as it does not reward pitchers for contributions made by exceptional fielders or fortuitous bounces on balls in play.

However, while I do think the fangraphs (FIP-based) method is preferable to the rally method, I think it could be signficantly improved by modeling WAR on xFIP (which, as discussed earlier this week, normalizes a pitcher's HR/fly-rate to league-average) because most pitchers seem to have very little control over whether or not flyballs become homeruns.  Unfortunately, fangraphs does not allow you to query WAR based on xFIP.  After the jump, I will outline a quick-and-dirty method for those of us interested in doing so.

The very first thing to do is determine the relationship between Wins Above Replacement and Runs Above Replacement.  While it's usually around 10 runs = 1 win, it depends on how many runs are being scored across the league.  MLB-wide offence is down in 2011.  Go to the pitcher leaderboards for value and divide an AL pitcher's Runs Above Replacement by his WAR (e.g., Ricky Romero, 17.4 RAR / 1.9 RAR = 9.16 Runs / Win).

The first step to this is exporting data from fangraphs to your spreadsheet program (most windows users probably have MS Excel, though -- and I know this makes me sound prickish -- I just have OpenOffice Calc), a fairly easy task.  To do this, simply query the fangraphs pitcher WAR leaderboard and click "export to Excel" or "export to CSV."  Once you have the data, you can estimate league-adjusted replacement-level FIP based on whichever pitcher is closest to zero RAR (runs above replacement) in the league you want (today, I used Wade Davis's 4.94).  Now that you know what replacement-level FIP is, you're halfway there.  

Divide that FIP by nine to determine FIP replacement-level runs per inning.  Now, depending on how you want to deal with this, you can either convert this FIP replacement-level runs per inning to xFIP or just use it as a proxy.  If you want to convert it, determine how much average xFIP differs from average FIP.  Else, you can just use FIP replacement-level as a proxy for xFIP replacement-level.  Today, for example, the ratio of xFIP : FIP is 1.01 so multiply your per-inning replacement-level estimate by 1.01.  I found that:

Replacement-Level = [(4.94) / 9] (1.01) = 0.554 runs per inning

Now you can take whichever pitcher you're interested in (as an example, we'll use Ricky Romero) and divide his xFIP by nine to estimate how many runs per inning he is likely to give up by xFIP.  We find that, by xFIP, Romero is likely to yield:

(3.5) / 9 = 0.389 runs per inning

Now, some very simple arithmetic gets you where you need to be.  Subtract Romero's per-inning xFIP from the replacement-level per-inning xFIP estimated during the previous step (0.554 - 0.389 = 0.165).  This is the number of runs Romero saves above replacement-level per inning.  Finally, multiply the difference by the number of innings Romero has pitched [ (0.165) (118) ] and you have your xFIP-based RAR (19.47).  Convert RAR to WAR based on the very first step by dividing xFIP RAR by RAR/WAR (19.47 RAR / 9.16 RAR/WAR = 2.13) and you're done!  By xFIP-based WAR, Romero has been worth 2.13 wins -- slightly better than he appears by FIP-based WAR.

What do you guys think -- is an xFIP-based method better or worse than an FIP-based method?  What about the Rally method?  Anyone think we should periodically run the numbers to determine league leaders based on xFIP WAR?

 

UPDATE:

As WAR is park-adjusted, to find replacement-level FIP, optimally, another pitcher from the same team should be used but make sure it is a starting pitcher if you're comparing him to a starter.

UPDATE 2:

After exporting all the data, I created the fields necessary to query xFIP-based WAR (xWAR).  I estimated replacement-level FIP by league and estimated xFIP by separating out the ratios by league.  I estimated RAR/WAR by the values given on player value pages (so, while FIP is not park-adjusted, RAR/WAR is).

 

Name IP FIP fWAR xFIP xWAR
Roy Halladay 127.1 2.15 4.5 2.4 4.04
James Shields 128.2 3.07 2.9 2.8 3.48
Justin Verlander 135.2 2.88 3.6 2.98 3.41
Cole Hamels 116 2.34 3.8 2.58 3.36
Cliff Lee 122 2.55 3.6 2.75 3.22
David Price 118 2.68 3.3 2.89 3.1
Clayton Kershaw 116.2 2.49 3.4 2.73 3.08
Felix Hernandez 129 2.82 3.3 3.11 3.08
CC Sabathia 129.2 2.66 3.9 3.23 2.91
Dan Haren 116.2 2.69 3.3 3.07 2.81
Tim Lincecum 112.1 2.73 3 2.83 2.78
Jered Weaver 123.1 2.45 4 3.47 2.46
Jaime Garcia 105.1 2.87 2.5 3.03 2.34
Tim Stauffer 106 3.02 2 3 2.33
Anibal Sanchez 109 3 2.5 3.05 2.32
C.J. Wilson 117.2 3.25 2.7 3.45 2.23
Chris Carpenter 114.2 3.26 2.1 3.26 2.14
Edwin Jackson 99.2 3.12 2.5 3.29 2.12
Ricky Romero 118 3.69 1.9 3.5 2.11
Jon Lester 110.1 4.02 1.5 3.47 2.07
Madison Bumgarner 98.2 2.54 2.9 3.15 2.06
Justin Masterson 113.2 3.12 2.6 3.54 2.06
Scott Baker 105.2 3.44 2 3.41 2.05
Matt Garza 84 3.07 2 2.84 2.02
Daniel Hudson 116 2.69 3.4 3.46 1.97
Erik Bedard 90 3.54 1.4 3.24 1.94
Bud Norris 105 3.44 1.7 3.27 1.91
Ian Kennedy 116.2 3.34 2.4 3.44 1.9
Ryan Dempster 106.1 3.94 1.5 3.33 1.89
Tommy Hanson 89.1 3.14 1.8 3.06 1.87
Tim Hudson 100 3.19 2 3.29 1.86
Matt Cain 113.1 2.97 2.7 3.5 1.83
Jonathon Niese 104 3.51 1.6 3.37 1.8
Jhoulys Chacin 104.2 4.18 1.3 3.32 1.8
Gio Gonzalez 102 3.29 2 3.56 1.79
Michael Pineda 102 3.08 2.2 3.54 1.77
Yovani Gallardo 110.1 3.77 1.4 3.46 1.76
Trevor Cahill 112.1 3.84 1.4 3.65 1.76
Ricky Nolasco 110.1 3.43 2 3.49 1.75
Brandon Morrow 75
2.3 3.2 1.71
Derek Lowe 101.2 3.49 1.6 3.4 1.67
Shaun Marcum 99.2 3.24 1.9 3.4 1.67
Doug Fister 110.1 3.19 2.2 3.78 1.61
Ervin Santana 110.1 4.28 1 3.78 1.61
Chris Narveson 91.2 3.3 1.7 3.38 1.57
Carlos Carrasco 94 3.46 1.7 3.65 1.51
Josh Tomlin 102.2 3.99 1.2 3.74 1.51
Alexi Ogando 97.2 3.34 2.1 3.71 1.5
Hiroki Kuroda 108.2 3.77 1.3 3.61 1.47
Josh Beckett 98 3.24 2.3 3.79 1.47
Chad Billingsley 100.1 3.3 1.8 3.58 1.45
Brett Anderson 83.1 3.88 1 3.5 1.45
Jordan Zimmermann 102.2 2.71 2.8 3.68 1.44
Max Scherzer 102.2 4.06 1.2 3.8 1.42
Jair Jurrgens 104.2 3.07 2.2 3.66 1.42
Gavin Floyd 101 3.91 1.5 3.82 1.39
Zach Britton 98.2 3.83 1.5 3.82 1.38
Wandy Rodriguez 91 3.86 1 3.52 1.35
Derek Holland 100 4.28 1.1 3.91 1.31
A.J. Burnett 106.2 4.43 0.9 3.91 1.3
Kyle Lohse 110 3.67 1.4 3.76 1.3
Fausto Carmona 102.1 4.8 0.3 3.98 1.27
Jason Marquis 99.1 3.7 1.4 3.73 1.24
Jason Vargas 113.1 3.58 1.7 4.05 1.24
Nick Blackburn 101.1 4.5 0.6 3.9 1.22
Kyle McClellan 85 4.63 0.1 4.11 1.21
Jeremy Guthrie 110 4.1 1.3 4.04 1.2
Philip Humber 96.2 3.5 1.9 3.98 1.18
Chris Capuano 90.2 4.07 0.7 3.64 1.15
Jeff Francis 103.1 3.98 1.4 4.06 1.13
Luke Hochevar 110.2 4.75 0.6 4.16 1.11
Mike Leake 83.1 3.77 1.2 3.69 1.1
Mat Latos 87 3.57 1 3.74 1.09
R.A. Dickey 102.2 4.19 0.7 3.85 1.09
Colby Lewis 100 4.81 0.5 4.04 1.08
Ubaldo Jimenez 91 3.68 1.7 3.82 1.08
John Danks 94 4.13 1.2 3.98 1.07
Charlie Morton 91.2 3.56 1.4 3.82 1.04
Carl Pavano 108.1 3.91 1.4 4.17 1.04
Brett Myers 109.2 5.06 -0.3 3.93 1.03
Jeff Karstens 91.2 4.7 0.1 3.78 0.98
Brian Duensing 86.1 3.69 1.4 4.06 0.94
Livan Hernandez 108.2 3.65 1.6 4.05 0.93
Mark Buehrle 106 4.02 1.5 4.25 0.91
Ted Lilly 96 4.44 0.4 3.97 0.9
Clay Buchholz 82.2 4.26 0.9 4.07 0.87
Chris Volstad 93.1 4.72 0.2 3.76 0.86
Matt Harrison 90 4.13 1.1 4.18 0.84
Ivan Nova 91.2 4.41 0.8 4.2 0.83
Freddy Garcia 85 4.06 1.1 4.18 0.82
Paul Maholm 108 3.79 1.3 4.11 0.81
Jake Westbrook 93.1 4.09 0.7 3.98 0.81
Randy Wolf 105.1 4.17 0.8 4.11 0.79
Jake Arrieta 88 4.57 0.6 4.2 0.77
Rick Porcello 83.2 4.35 0.7 4.18 0.77
Kevin Correia 107 4.15 0.9 4.17 0.77
Carlos Zambrano 112 3.85 1.6 4.18 0.76
Bronson Arroyo 101.2 5.55 -0.5 4.1 0.72
Jeremy Hellickson 96.1 4.13 0.9 4.38 0.7
John Lannan 98.1 4.22 0.8 4.2 0.67
Brad Penny 103.2 4.39 0.9 4.44 0.66
Jonathan Sanchez 89.2 3.93 1 4.18 0.6
Jo-Jo Reyes 88.2 4.37 0.7 4.39 0.58
Clayton Richard 94.2 4.13 0.4 4.28 0.53
Joe Saunders 100 4.92 0.3 4.32 0.51
Dustin Moseley 93.2 4.01 0.5 4.28 0.49
Travis Wood 93.1 4.1 1 4.34 0.47
Mike Pelfrey 100.2 4.75 0 4.42 0.4
J.A. Happ 87.2 4.35 0.4 4.39 0.33
Jason Hammel 100.2 4.31 1.1 4.49 0.31
Tyler Chatwood 94 4.35 0.7 4.74 0.26
James McDonald 85.2 4.69 0.2 4.56 0.23
Javier Vazquez 83.1 4.58 0.3 4.63 0.1
Wade Davis 98.2 4.94 0 5.1 -0.13