How WAR Is Calculated on This Site
An adaptation of Baseball-Reference's methodology, using the stats this project actually tracks.
WAR (Wins Above Replacement) here is adapted from the framework described at
baseball-reference.com/about/war_explained_position.shtml.
It is not an exact replica — several inputs the official system uses (play-by-play
baserunning, double-play data, advanced defensive metrics) don't exist for this league, so the calculation
below is a principled simplification built from what this site's box scores and season stats actually contain.
Position players
Runs above replacement = Batting Runs + Baserunning Runs + Fielding Runs + Positional Adjustment + Replacement Runs, converted to wins.
- Batting Runs (Rbat) — a linear-weights formula (Pete Palmer’s classic Batting
Runs coefficients: singles 0.46, doubles 0.80, triples 1.02, home runs 1.40, walks/HBP 0.33, outs −0.25),
recentered so the league-average hitter that season (excluding pitchers) is exactly 0.
- Baserunning Runs (Rbr) — stolen bases (+0.30 runs each) and caught stealing
(−0.60 runs each), recentered the same way. Non-steal baserunning (first-to-third on a single, tagging
up, etc.) isn’t tracked in this project's data, so it isn't included.
- Double-play runs (Rdp) — set to 0 for everyone; this project doesn't track GIDP.
- Fielding Runs (Rfield) — set to 0 for everyone. A Range-Factor-based estimate was
attempted, but the underlying fielding data (assembled from several pasted spreadsheets over the life of this
project) contains individual data-entry errors severe enough to produce wrong results for specific players.
Rather than publish defensive value that's confidently wrong for an unknown subset of players, this component
was dropped rather than guessed at.
- Positional Adjustment (Rpos) — Baseball-Reference's own published 1885/1886
per-1,350-inning positional constants (C +10, SS +10, 3B +5, 2B +3, CF −8, RF −9, LF −9.5,
1B 0), prorated by innings played at each position. Pitchers get their own hitting-only adjustment computed
from BR's stated formula (−600 × league pitcher batting runs / league pitcher PA, applied per 600 PA),
then the whole season's positional runs are recentered to sum to zero.
- Replacement Runs (Rrep) — 20.5 runs per 600 plate appearances, BR's stated offensive
replacement-level constant, prorated by the player's own PA.
Pitchers
Pitching WAR is based on runs allowed per out, compared to the league average, then to a replacement-level
pitcher:
- Runs above average = (league runs-allowed-per-out − pitcher's own runs-allowed-per-out) × outs pitched.
- The replacement-level increment is league runs-per-out × (20.5−1.8)/100, matching BR's stated
formula, added on top of runs above average and converted to wins the same way as the batting side.
- Runs allowed (not just earned runs) are used, per BR's own methodology.
- No park factors, opponent-strength adjustment, or reliever leverage index are applied — this project
doesn't have the data to support them.
Runs to Wins
Runs above replacement are converted to wins using Runs Per Win = 10 × √(RPG / 9), where RPG is
that season's actual combined runs-per-game scoring environment (a standard simplification of BR's PythagenPat
approach). Higher-scoring seasons need more runs to produce a win; lower-scoring seasons need fewer.
In short: treat these WAR values as a reasonable, internally-consistent way to compare
players within this league and across its seasons — not as numbers directly comparable to real-world
Baseball-Reference WAR, which draws on data this project doesn't have.