simpleWAR — A Collegiate Version
The wealth of information that was presented to us during COVID has been a boon. So much, that sometimes, information slips through the cracks.
One example is the calculation of naiveWAR by Tom Tango. Tango, Senior Data Architect for MLB, wrote a blog introducing naiveWAR and its calculation. Think of Wins Above Replacement but a simplified version. While this article came out in 2020, I didn’t see it until last year (so many bookmarks to go through).
Within this calculation, I thought, why not try it for college baseball (specifically Division I)? I mean I did calculate collegiate linear weights before, why not this?
So, I’m excited to introduce simpleWAR, which is naiveWAR but at the college level.
Let’s use an example of my alma mater, the University of Illinois at Chicago, who went 35–20 (.636) in 55 games last season.
Stats can be found here: https://uicflames.com/sports/baseball/stats/2024
PITCHERS
We will start with the pitchers, since, like Tango said, it is easier. We create a metric called Wins Above Team (WAT). The Flames allowed 363 Runs on 475 IP, or 0.764 runs per IP. Using their pitcher who threw the most innings, Brandon Bak (88.2 IP or 88.667 IP), he should have given up 67.8 runs, or 67.8 xR/IP (not rounding the 0.764 runs per IP). However, he gave up just 52 runs, putting him at 15.7 runs above expected. We then convert runs to a wins scale, and if you went through my collegiate linear weights article, you can calculate it for yourself at get 11 runs/win (R/W). We use that number to get WAT.
xR/IP = 88.667 * 0.764 (not rounded) = 67.8
WAT = (xR/IP — Runs Allowed)/(R/W) = (67.8–52)/11 = 1.4
Now, we get the “games” calculation. The Flames played 55 games, which we will use the same fraction of games assigned to the pitchers (3/7), which is 24 games. With the team total of 475 IP, we give a game for every 19.8 IP. With that being said, Bak’s 88.2 IP gets 4.5 games (Games_calc).
“games” = team games * (games assigned to pitchers) = 55 * (3/7) = 24
game/IP = team IP / “games” = 475 / 24 = 19.8
Games_calc = player IP / game/IP = 88.667 / 19.8 = 4.5
Going from games to wins, we then take the wins per game:
wins per game = wins/total games = 35/55 = 0.636
And we calculate the wins calculation (wins_calc):
wins_calc = Games_calc * wins_per_game = 4.5 * 0.636 = 2.8
Finally, we have games and wins. Let’s set the replacement level to be 0.25 (less overall talent in college baseball).
simpleWAR then is (WAT+wins_calc) — replacement level times Games_calc. Ex:
simpleWAR (sWAR) = (WAT+wins_calc) — (replacement level * Games_calc) = (1.4 + 2.8) — (0.25*4.5) = 3.2
Do it for everyone and see below. When you sum up the wins_calc, you get 15.1, which then divided by 35 is 3/7.
BATTERS
Hitters are a little bit more complicated, but still solvable. Here, we need team runs (R), team RBI, team HR, team Outs, and team PA.
Outs and PAs are a little more difficult to calculate at the college level, but here’s a way to do it:
Outs = At-Bats (AB) — Hits (H) + Sac Flies (SF) + Sacrificies (SH)
PA = At-Bats (AB) + Walks (BB) + Hit By Pitch (HBP) + Sac Flies (SF) + Sacrifices (SH)
SO, using UIC’s totals, we get:
396 runs
364 RBI
66 HR
1379 Outs
2259 PA
Our team Runs Per Out (TR/Out) can now be calculated:
TR/Out = (R+RBI-HR)/Outs = (396 + 364–66)/1379 = 0.503
Now that we know that, we can compute an individual’s WAR.
We will use Kendall Ewell, one of the best hitters in D1 Baseball last season (he’s #3 on the UIC Stats page).
Ewell scored 56 runs, recorded 69 RBI, hit 21 home runs, and recorded 129 outs in 255 PA.
so his Total Runs Participated In (TR):
TR = (R+RBI-HR) = 104
His expected Total Runs Participated In (xTR):
xTR = (TR/Out * Outs) = 0.503 * 129 = 65
We can now calculate WAT (Wins Above Team):
WAT = (TR-xTR)/Runs_Win = (104–65)/11 = 3.6
We now calculate “games” and Games/PA (G/PA):
“games” = Games Played * (games assigned to non-pitchers) = 55 * 4/7 = 31
Games/PA = Team PA / “games” = 2259 / 31 = 72.9
Then, we compute the Games_calc:
Games_calc = player PA / Games/PA = 255 / 72.9 = 3.6
Convert that to wins:
wins_calc = Games_calc * wins per game = 3.5 * 0.636 = 2.2
we can now compute simpleWAR (sWAR):
sWAR = (WAT+wins_calc) — (replacement level * Games_calc) = (3.6 + 2.2) — (0.25 * 3.6) = 4.9
Adding the wins calc column, we get 19.7, which divided by 35 is 4/7.
As well, adding 19.7 and 15.1 on the Pitching side equals 35 wins after rounding.
There are limitations to calculating this, as you can see. There’s no account for defense, baserunning, and we use runs as the baseline for WAR. This serves as a step 1 as part of a series to explore different routes we could take it to include limited public info at the collegiate, like defense and baserunning.
Here’s a Shiny App to see every D1 WAR player season from 2021–2024.
Want to calculate it for yourself? Head to this google sheet and make a copy and try it out with any team: https://docs.google.com/spreadsheets/d/1OaRLRwrsK0M3TagwBNZLl-42jFEeOsTIYq7VflUgTOg/edit?usp=sharing