​
​
Sign In
  • Support FanGraphs
    FanGraphs Membership
    FanGraphs Shirts
    FanGraphs Mugs
    Gift a Membership
    Donate to FanGraphs
  • Fantasy
    Fantasy Tools
    Fantasy Player Rater
    Auction Calculator
    Ottoneu Fantasy Baseball
    Signup, FAQ, Blog Posts
  • Blogs
    Blog Roll

    FanGraphs
      Podcasts: Effectively Wild

      FanGraphs Prospects

      RotoGraphs
        Podcasts: The Sleeper and The Bust | Field of Streams | Beat the Shift

        Community Research

          Archived Blogs: The Hardball Times | NotGraphs | TechGraphs | FanGraphs+
          Archived THT: THT Live | Dispatch | Fantasy | ShysterBall
          Archived Podcasts: FanGraphs Audio | Chin Music | UMP: The Untitled McDongenhagen Project | Stealing Home | Doing It For Bartolo | OttoGraphs |
        • Projections
          2025 Pre-Season Projections
          ZiPS, ZiPS DC
          Steamer
          Depth Charts
          ATC
          THE BAT, THE BAT X
          OOPSY
          2025 600 PA / 200 IP Projections
          Steamer600, Steamer600 (Update)
          2025 Updated In-Season Projections
          ZiPS (RoS), ZiPS (Update), ZiPS DC (RoS)
          Steamer (RoS), Steamer (Update)
          Depth Charts (RoS)
          ATC DC (RoS)
          THE BAT (RoS), THE BAT X (RoS)
          OOPSY DC (RoS)
          3-Year Projections
          ZiPS 2026, ZiPS 2027
          On-Pace Leaders
          Every Game Played, Games Played %
          Cy Young Award Projections

          Auction Calculator
        • Scores
          Today
          Live Scoreboard, Probable Pitchers
          Live Daily Leaderboards
          Win Probability & Box Scores
          2025, 2024, 2023, 2022, 2021, 2020, 2019
          AL Games
          NL Games
        • Standings
          2025 Projected Standings
          2025 Playoff Odds, Playoff Odds Graphs
          2024 ZiPS Postseason Game-By-Game Odds
          AL East
          AL Central
          AL West
          NL East
          NL Central
          NL West
        • Leaders
          Major League Leaders
          Batting: 2025, 2024, 2023, 2022, 2021, Career
          Pitching: 2025, 2024, 2023, 2022, 2021, Career
          Fielding: 2025, 2024, 2023, 2022, 2021, Career
          Major League Leaders - Rank
          Batting: Ranking Grid, Compare Players, Compare Stats
          Pitching: Ranking Grid, Compare Players, Compare Stats
          Splits Leaderboards
          Season Stat Grid

          Postseason Leaders
          Batting: 2024, (WS), (LCS), (LDS), (WCS), Career
          Pitching: 2024, (WS), (LCS), (LDS), (WCS), Career

          Spring Training Leaders
          Batting: 2025, 2024, 2023
          Pitching: 2025, 2024, 2023

          KBO Leaders
          Batting, Pitching
          NPB Leaders
          Batting, Pitching

          Minor League Leaders
          AAA: International League, Pacific Coast League
          AA: Eastern League, Southern League, Texas League
          A+: Midwest League, South Atlantic League, Northwest League
          A: California League, Carolina League, Florida State League
          CPX: Arizona, Florida
          R: Dominican Summer League
          College Leaders
          Batting, Pitching

          WAR Tools
          Combined WAR Leaderboards
          WAR Graphs
          WPA Tools
          WPA Inquirer
          Rookie Leaders
          Batters 2025, Pitchers 2025
          Splits Leaders
          Batters: vs L, vs R, Home, Away
          Pitchers: vs L, vs R, Home, Away
        • Teams
          Team Batting Stats
          2025, 2024, 2023, 2022, 2021, 2020
          Team Pitching Stats
          2025, 2024, 2023, 2022, 2021, 2020
          Team WAR Totals (RoS)
          AL East
          Blue Jays  |  DC
          Orioles  |  DC
          Rays  |  DC
          Red Sox  |  DC
          Yankees  |  DC
          AL Central
          Guardians  |  DC
          Royals  |  DC
          Tigers  |  DC
          Twins  |  DC
          White Sox  |  DC
          AL West
          Angels  |  DC
          Astros  |  DC
          Athletics  |  DC
          Mariners  |  DC
          Rangers  |  DC
          NL East
          Braves  |  DC
          Marlins  |  DC
          Mets  |  DC
          Nationals  |  DC
          Phillies  |  DC
          NL Central
          Brewers  |  DC
          Cardinals  |  DC
          Cubs  |  DC
          Pirates  |  DC
          Reds  |  DC
          NL West
          D-backs  |  DC
          Dodgers  |  DC
          Giants  |  DC
          Padres  |  DC
          Rockies  |  DC
          Positional Depth Charts
          Batters: C, 1B, 2B, SS, 3B, LF, CF, RF, DH
          Pitchers: SP, RP
        • RosterResource
          Current Depth Charts
          AL East
          Blue Jays
          Orioles
          Rays
          Red Sox
          Yankees
          AL Central
          Guardians
          Royals
          Tigers
          Twins
          White Sox
          AL West
          Angels
          Astros
          Athletics
          Mariners
          Rangers
          NL East
          Braves
          Marlins
          Mets
          Nationals
          Phillies
          NL Central
          Brewers
          Cardinals
          Cubs
          Pirates
          Reds
          NL West
          D-backs
          Dodgers
          Giants
          Padres
          Rockies
          In-Season Tools
          2025 Closer Depth Chart
          2025 Injury Report
          2025 Payroll Pages
          2025 Transaction Tracker
          2025 Schedule Grid
          2025 Probables Grid
          2025 Lineup Tracker
          2025 Minor League Power Rankings
          Offseason Tools
          2025 Free Agent Tracker
          2025 Offseason Tracker
          2025 Opening Day Tracker
        • Prospects
          Prospects Home
          The Board
          The Board: Scouting + Stats!
          How To Use The Board: A Tutorial
          Farm System Rankings

          Top Prospects List
          20252024
          AL
          BALCHWATH
          BOSCLEHOU
          NYYDETLAA
          TBRKCRSEA
          TORMINTEX
          NL
          ATLCHCARI
          MIACINCOL
          NYMMILLAD
          PHIPITSDP
          WSNSTLSFG
          2025 Preseason Top 100
        • Glossary
          Library
          Batting Stats
          wOBA, wRC+, ISO, K% & BB%, more...
          Pitching Stats
          FIP, xFIP, BABIP, K/9 & BB/9, more...
          Defensive Stats
          UZR Primer, DRS, FSR, TZ & TZL, more...
          More
          WAR, UBR Primer, WPA, LI, Clutch
          Guts!
          Seasonal Constants
          Park Factors
          Park Factors by Handedness
        • Sign In
        • Intro
        • Features
        • Offense
          • Complete List (Offense)
          • OBP
          • OPS and OPS+
          • wOBA
          • wRC and wRC+
          • wRAA
          • Off
          • BsR
          • UBR
          • wSB
          • wGDP
          • BABIP
          • ISO
          • HR/FB
          • Spd
          • Pull%/Cent%/Oppo%
          • Soft%/Med%/Hard%
          • GB%, LD%, FB%
          • K% and BB%
          • Plate Discipline (O-Swing%, Z-Swing%, etc.)
          • Pitch Type Linear Weights
          • Pace
        • Defense
          • Overview
          • Def
          • UZR
          • DRS
          • Defensive Runs Saved – 2020 Update
          • Inside Edge Fielding
          • Catcher Defense
          • FSR
          • RZR
          • TZ / TZL
        • Pitching
          • Complete List (Pitching)
          • PitchingBot Pitch Modeling Primer
          • Stuff+, Location+, and Pitching+ Primer
          • ERA
          • WHIP
          • FIP
          • xFIP
          • SIERA
          • Strikeout and Walk Rates
          • Pull%/Cent%/Oppo%
          • Soft%/Med%/Hard%
          • GB%, LD%, FB%
          • BABIP
          • HR/FB
          • LOB%
          • Pitch Type Linear Weights
          • SD / MD
          • ERA- / FIP- / xFIP-
          • Plate Discipline (O-Swing%, Z-Swing%, etc.)
          • Pace
          • PITCHF/x
            • What is PITCHF/x?
            • Pitch Type Abbreviations & Classifications
            • Heat Maps
            • Common Mistakes
            • PITCHf/x Resources
        • WE/RE/LI
          • RE24
          • Win Expectancy
          • WPA
          • LI
          • WPA/LI
          • Clutch
        • Principles
          • DIPS
          • Regression toward the Mean
          • Replacement Level
          • Sample Size
          • Splits
          • Projection Systems
          • Linear Weights
          • Counting vs. Rate Statistics
          • Park Factors
          • Park Factors – 5 Year Regressed
          • Positional Adjustment
          • Aging Curve
          • League Equivalencies
          • Pythagorean Win-Loss
          • Luck
        • WAR
          • What is WAR?
          • WAR for Position Players
          • WAR for Pitchers
          • FDP
          • fWAR, rWAR, and WARP
          • WAR Misconceptions
        • Business

        Calculating Position Player WAR, A Complete Example

        by Neil Weinberg
        September 19, 2014

        One of the hallmark statistics available at FanGraphs is Wins Above Replacement (WAR) and we’ve just rolled out an updated Library entry that spells out the precise calculations in more detail than ever before. There’s always been a clear sense of the the kinds of things that go into our WAR calculation, but we’re never just dropped an equation in front of you and said, “Here!”

        As of today, we’ve done that and I encourage you to go check out our basic primer on WAR and our detailed breakdown of how we calculate it for position players. If you’re a hands on learner, grab a pen and paper or spreadsheet and follow along. I’m going to walk you through a complete examples of how to calculate WAR for position players. Let’s use the 2013 version of Joey Votto as our exemplar.

        The basic WAR equation is:

        WAR = (Batting Runs + Base Running Runs + Fielding Runs + Positional Adjustment + League Adjustment +Replacement Runs) / (Runs Per Win)

        You can simply go to the value section of his player page and find everything that goes into the numerator and go to the Guts! page to get Runs Per Win for the denominator, but that’s probably not why you’re here. Let’s break it down component by component.

        Batting Runs

        To calculate Batting Runs, you want Weighted Runs Above Average (wRAA) and then you want to park and league adjust it. So let’s start by calculating his wRAA, although you can also find this pre-calculated on the site.

        To find his wRAA, you need his wOBA (.400), his PA (726), and some data about the league, specifically the league average wOBA (.314) and the wOBA Scale (1.277). Those values can be found here.

        wRAA = ((wOBA – lgwOBA)/wOBA Scale) * PA

        48.9 = ((.400-.314)/1.277)*726 

        On the site, it’s listed as 49.1, which is just a matter of rounding on the league constants. This will come up again, so keep it in mind. Some of the constants and park factors you see are rounded off so that the site isn’t a giant string of numbers. Try not to sweat it.

        So if we have 48.9 wRAA, let’s now go through the process of adjusting it for his home park (Park Factor = 101) and for the National League. To do this, we need the MLB R/PA (.110), the NL non-pitcher wRC (9783), and the NL non-pitcher PA (86,959).

        To convert wRAA into Batting Runs, you do the following:

        Batting Runs = wRAA + (lgR/PA – (PF*lgR/PA))*PA + (lgR/PA – (AL or NL non-pitcher wRC/PA))*PA

        46.3 = 48.9 + (.110 – (1.01*.110))*726 + (.110 – (9783/86959))*726

        Again, the number listed on the site is 45.9, which is the the result of not rounding until the end, but no one wants to see strings of nine digits. We now have Votto with 46.3 Batting Runs Above Average.

        Base Running Runs

        Base Running (BsR) is the sum of Ultimate Base Running (UBR) and Weighted Stolen Base Runs (wSB). You can’t calculate UBR by hand because it requires video tracking data from Baseball Info Solutions, but we provide it on the site. You can calculate wSB, however. The equation is as follows:

        wSB = SB * runSB + CS * runCS – lgwSB * (1B + BB + HBP – IBB)

        -0.8 = (6*0.2) + (3*-0.384) – 0.0035*(120 + 135 + 4 -19)

        League stolen base runs (lgwSB) is:

        lgwSB = (lgSB * runSB + lgCS * runCS) / (lg1B + lgBB + lgHBP – lgIBB)

        0.0035 = ((2693*0.2) + (1007*(-0.384))) / (28438 + 14640 + 1536 – 1018)

        As with all linear weights-based metrics, the runs values are estimates. In this case, the run value of a stolen base is set at .2 runs for all seasons. The run value of a caught stealing changes from year to year to reflect the changing value of runs and outs over the season.

        runCS = 2 x RunsPerOut + 0.075

        -0.384 = -1*(2 * (20255/130969) + 0.075)

        Runs Per Out is simply runs scored in the season divided by outs in the season. This leaves us with a runSB of 0.2, a runCS of -0.384, and a lgwSB of about .0035 to use as constants in the wSB equation.

        If we locate his UBR on the site (0.2) and add it to his wSB (-0.8) we arrive at -0.6 Base Running Runs Above Average. The site lists -0.5, again because of simple rounding differences.

        Fielding Runs

        FanGraphs uses Ultimate Zone Rating (UZR) for our fielding runs above average for each non-catcher position and Votto had a 2.2 UZR in 2013 at first base. That means he had 2.2 Fielding Runs Above Average in 2013.

        Positional Adjustment

        The positional adjustment allows us to compare players who played different positions, as fielding runs only compares players to the average player at their specific position. To calculate the positional adjustment for each player, you do the following:

        Positional Adjustment = ((Innings Played/9) / 162) * position specific run value

        -12.3 = ((1430.66/9) / 162) * -12.5

        You can find the positional run values per 162 games here and we are left with Votto with -12.3 positional runs relative to league average.

        League Adjustment

        Adjusting for league only has a small impact on player value, but it is done so that each league has exactly zero Runs Above Average for hitting, fielding, base running, and position.

        To find the league adjustment find the league specific values (AL or NL) and do the following:

        League Adjustment = ((-1)*(lgBatting Runs + lgBase Running Runs + lgFielding Runs + lgPositional Adjustment) / lgPA)*PA

        0.8 = (-1)*((-653.1 – 11.7 +74.0 +491.4)/92116)*726

        This leaves us with a league adjustment for Votto of 0.8 runs above average.

        Replacement Runs

        So far we’ve been talking in runs above or below average, but now we need to shift and refer to Votto’s performance relative to replacement level. To do this, we start with 570 WAR (or 57% of the total 1,000 WAR) and multiply it by the number of games in the season divided by 2,430 because position players make up 570 WAR per 2,430 games. We then multiply that by Runs Per Win divided by League PA to convert WAR into runs per PA and then we multiple that by the player’s PA to determine their share of runs.

        Replacement Level Runs = (570 * (MLB Games/2,430)) * (Runs Per Win/lgPA) * PA 

        20.7 = (570 * (2,431/2,430)) * (9.264/184873) * 726 

        This leaves Joey Votto with 20.7 replacement level runs.

        Putting it all together

        We’ve calculated all of the Votto specific numbers so far and need just one more piece of data. We need the MLB Runs Per Win, which is essentially the number of extra runs a team needs to score to add one win to their total. It varies yearly with the run environment and can be found here. For 2013, as we saw a moment ago, it is 9.264. The WAR equation listed at the top is as follows:

        WAR = (Batting Runs + Base Running Runs + Fielding Runs + Positional Adjustment + League Adjustment +Replacement Runs) / (Runs Per Win)

        6.2 = (46.3 – 0.6 + 2.2 – 12.3 + 0.8 +20.7) / (9.264)

        You’ll notice his WAR comes out to 6.2 instead of the listed 6.1, which is a simple rounding issue because I didn’t type out the long chain of digits that go with each of the various constants.

        So go ahead and try this yourself. It takes several steps because it’s an all-inclusive metric, but it’s all doable with basic addition, subtraction, multiplication, and division. No calculus or regression needed on your end. I’ll work on creating a file to share that does the arithmetic for you, but for now, you can use this post as a model for calculating WAR and as a framework if you want to vary the calculations in any way.

        Think the positional adjustment is wrong? Think UZR isn’t trustworthy? Want to give more credit to hitters than 57%? Want to swap in RE24 for Batting and wSB? You can do all of these things now and work from the same WAR framework. Enjoy.

        Questions? Ask them in the comments!





        The Beginner’s Guide to Using Statistics Properly
         
        Why It’s Always Better to Use Multiple Statistics

        Neil Weinberg is the Site Educator at FanGraphs and can be found writing enthusiastically about the Detroit Tigers at New English D. Follow and interact with him on Twitter @NeilWeinberg44.

        16 Comments
        Oldest
        Newest Most Voted
        Inline Feedbacks
        View all comments
        AC_Butcha_AC
        10 years ago

        How do you arrive at 2431 MLB games, when there are only 2430 games every year in MLB?

        -2
        Gabes
        10 years ago
        Reply to  AC_Butcha_AC

        In 2013 there was a game 163 between Tampa and Texas for the final playoff spot. MLB counts those as regular season games, not playoff games, so they count toward regular season stats, constants, etc.

        4
        AC_Butcha_AC
        10 years ago
        Reply to  Gabes

        My bad. I didnt check it was 2013. Thanks, Gabes.

        2
        Leo
        10 years ago

        This is great. It also seems like a good place to ask a question I’ve been wondering about for a while:

        Why isn’t there a rate stat comparable to WAR?

        WAR is fabulous as a counting stat, but when you want to compare two players who have played different amounts of time it requires adjustment. It’s easy enough to do this kind of adjustment on your own, but it still seems like a natural enough think for Fangraphs to include in its stats.

        1
        Leo
        10 years ago
        Reply to  Leo

        Should be “natural enough thing.”

        -1
        Bravos4evr
        10 years ago
        Reply to  Leo

        I reckon you could divide WAR by innings or plate appearances or wtvr you want to get a an actual “production/participation” rate if you wanted to and compare to your hearts content. (Now granted , the resulting number would probably be out 7-10 decimal places, but you would have a pretty darn accurate number to compare.

        EXAMPLE: Votto’s 2013 WAR was 6.1 if you divide that by 726 you get .008402 WAR per plate appearance, compare to Paul Goldschmidt who had 6.4 WAR in 710 PA’s for a WAR per PA of .00901

        1
        Neil WeinbergMember since 2020
        10 years ago
        Reply to  Leo

        Yeah, you would just divide by PA or IP for your rate stat. More typically, we might express it as WAR per 600 PA or WAR per 200 IP or whatever. So it’s really more a matter of “is this something that would be useful to have listed on the site?” And your rec is noted!

        1
        Leo
        10 years ago
        Reply to  Neil Weinberg

        Yep, it isn’t that hard to calculate on your own, but the same thing is true of a lot of stats on the site (WAR itself is just adding up a few other numbers and dividing by ~10). But at least for me, it comes up often enough to want an automated calculation.

        Anyway, your noting of my rec is noted (and appreciated)!

        1
        Bravos4evr
        10 years ago
        Reply to  Leo

        I formally note Leo’s noting of neil’s noting.

        2
        AC_Butcha_AC
        10 years ago

        What is the positional adjustment for pitchers hitting? Is it based on PA or IP? There was never a number thrown out here.

        I know B-Ref calculates the positional adjustment for pithcers y-t-y based on their hitting stats so they arrive at replacement level as a group.

        So how is this handled here at FG, Neil Weinberg?

        0
        Neil WeinbergMember since 2020
        10 years ago
        Reply to  AC_Butcha_AC

        I think it’s like 60 runs per 600 PA or thereabouts. I don’t think it changes every year. Can’t say for sure. Will have to look into it.

        0
        AC_Butcha_AC
        10 years ago
        Reply to  Neil Weinberg

        Well it seems like it changes year to year. The r² of batting runs and the pos. adj. for pitchers y-t-y is .98.

        linear regression formula is:

        pos.adj(wraa)=.86(wraa)-101.2

        so if all the pitchers were lg avg hitters their pos. adj. would be something like -100 runs.

        formula based on this:
        http://www.fangraphs.com/leaders.aspx?pos=p&stats=bat&lg=all&qual=0&type=6&season=2014&month=0&season1=1999&ind=0&team=0,ss&rost=0&age=0&filter=&players=0

        0
        Neil WeinbergMember since 2020
        10 years ago
        Reply to  AC_Butcha_AC

        Yeah, you might be right. I’ll have to see.

        0
        David AppelmanFanGraphs Staff
        10 years ago
        Reply to  AC_Butcha_AC

        The positional adjustment for pitchers is whatever it takes to zero out pitchers RAR on a plate appearance basis. Basically we assume that pitchers, as a whole, should have about 0 WAR as a positional player. It’s a little tricky to zero out completely, but it’s pretty close.

        0
        David
        10 years ago

        When a position player pitches, and let’s say, he gives up 6 runs, does that bring down his overall WAR?

        0
        Neil WeinbergMember since 2020
        10 years ago
        Reply to  David

        It goes in as WAR as a pitcher. So you can find Adam Dunn or Danny Worth listed separately as pitchers with WAR from their time on the mound.

        1
        You are going to send email to

        Move Comment

        Updated: Wednesday, May 14, 2025 6:52 AM ETUpdated: 5/14/2025 6:52 AM ET
        @fangraphs - Contact Us - Advertise - Terms of Service - Privacy Policy
        sis_logo
        All major league baseball data including pitch type, velocity, batted ball location, and play-by-play data provided by Sports Info Solutions.
        mlb logo
        Major League and Minor League Baseball data provided by Major League Baseball.
        Mitchel Lichtman
        All UZR (ultimate zone rating) calculations are provided courtesy of Mitchel Lichtman.
        TangoTiger.com
        All Win Expectancy, Leverage Index, Run Expectancy, and Fans Scouting Report data licenced from TangoTiger.com
        Retrosheet.org
        Play-by-play data prior to 2002 was obtained free of charge from and is copyrighted by Retrosheet.