In this piece, I’m going to take you through a step by step process of all the calculations necessary to compute FanGraphs’ version of wins above replacement for position players.
First off, you need to figure out the player’s wOBA (weighted on-base average). For the purpose of this article, we are going to use Christian Yelich as our sample. The formula used to contrive this metric is as follows (note that the weights vary from year to year, which I will address below; also, this stat can be found on FG):
In order to simplify things, I would recommend creating a custom leaderboard on FanGraphs with the stats from above.
Then, you should export the data to a spreadsheet.
After that, plug the above weights into the equation and divide by the sum of the hitter’s at-bats, unintentional walks, sacrifice flies, and hit by pitches.
The BB total that is listed on FanGraphs’ standard stats section includes intentional walks, so be certain that you subtract the player’s intentional walks from his total walks. That will give you that given hitter’s wOBA.
In order to convert wOBA into weighted runs above average (wRAA), you must first subtract the MLB average wOBA from the player’s wOBA. After that, you should divide by the wOBA scale, which can be found on FanGraphs (see earlier screenshot for the exact value). Lastly, multiply by the number of plate appearances that the hitter you are looking at has amassed.
Now, adjust wRAA for park and league.
MLB R/PA and park factors can be found on FanGraphs in the Guts! area of the site. It’s really important that I point out that the PA that are being multiplied in the formula above refer to that player’s plate appearances, not the majors/league-specific.
League specific wRC for non-pitchers can be seen on the leaderboard pages.
The final result is hitter’s batting runs, one major component of the all-encompassing fWAR total.
The base running aspect is fairly simple, as all stats that derive it can be found on FG.
For fielding runs, you add UZR and any positional adjustments that apply to the player.
Just when you think your calculation is almost complete, there is still significantly more work to do…
You can add National League BsR, Def (which is UZR + positional adjustment), and Bat to get that second parenthetical value.
Now it’s time for the penultimate step of the process: add in replacement level runs.
(570 * (2,429/2,430)) * (10.296 Runs Per Win / 186,516 MLB PA) * 580 Yelich PA = 18.242…
Now for the final equation…
There you have it. Only after calculating fWAR do you realize how complex of a stat it truly is.