A year ago, I represented the White Sox as their GM in the SB Nation offseason simulation and, with the assistance of a number of SSS member “co-GMs,” made 11 trades and signed six free agents. A review of the week:
As that last link would tell you, the roster we ended up with dropped us right on the doorstep of .500 — 83.15 projected wins. That’s 12 wins better than Rick Hahn did in 2019.
Now, projections are just projections, so on the eve of the start of this year’s SBN Offseason GM Simulation, let’s take a look back to see how the SSS White Sox actually did compared to the real roster. (All WAR figures are from Baseball-Reference except for the catchers, which are Baseball Prospectus’ WARP.)
Jason Castro ($8 million, $2 million paid by Minnesota Twins): 1.9 WARP in 79 games
Carson Kelly (minimum): 2.5 WARP in 111 games.
Averaged down to 162 games, that’s 3.8 WARP for $2.6 million.
Actual White Sox production: James McCann ($2.5 million): 1.0 WARP in 118 games Welington Castillo ($7.3 million): -1.3 WARP in 72 games.
Averaged down to 162, that’s -0.3 WARP for $10.8 million.
We lost Kevan Smith (free agency), Castillo (traded to the Angels), Omar Narváez (traded to Milwaukee) and Zack Collins (traded to St. Louis), so our catching depth took a hit in the sim. But adding two guys capable of major league starts to platoon, with Seby Zavala and Yermín Mercedes in the pipeline in case of emergency, kept us in OK position.
Running sim total: 3.8 WAR, $2.6 million salary
Running actual total: -0.3 WAR, $10.8 million salary
José Abreu ($16 million): 2.4 WAR
For simplicity’s sake, I’m just going to count Abreu as the 162-game 1B for both this simulated team and the real White Sox, and we’ll fold Yonder Alonzo in to the DH spot.
Our sim team also picked up Triple-A 1B-OF Luke Raley from the Twins, and though it appears he had an injury-shortened season, his OPS was .878 for Rochester. And as in real life, we swapped away Justin Yurchak for Manny Bañuelos; the good news for the sim Sox is our pitching depth so improved, Bañuelos didn’t even make our Opening Day roster.
Running sim total: 6.2 WAR, $18.6 million salary
Running actual total: 2.1 WAR, $26.8 million salary
Yoán Moncada (minimum): 4.6 WAR
Actual White Sox production: Yolmer Sánchez ($4.6 million): 2.1 WAR
Yeah, this is tricky, because I had Yoán sticking at second base, when in fact he moved to third. And I was prepare to dock Moncada some WAR for the move, but his 2018 at second base yielded 0.1 dWAR and this year at third he registered a -0.3 dWAR.
We can talk forever about how much better Moncada was at the plate strictly because of all the defensive pressure he was relieved of, being at third not second. But frankly, I don’t buy that. Moncada is certainly capable of solid if not great play at second, which is pretty much what he did this year at third.
The only second base loss was Camilo Quinteiro, who was dealt to San Francisco.
Running sim total: 10.8 WAR, $19 million salary
Running actual total: 4.2 WAR, $31.4 million salary
Tim Anderson ($1.4 million): 4.0 WAR
Running sim total: 14.8 WAR, $20.4 million salary
Running actual total: 8.2 WAR, $32.8 million salary
Evan Longoria ($14.667 million, with monies from the Giants and Tampa Bay Rays taking our obligation down to $6.5 million): 2.4 WAR in 129 games
Sánchez ($4.6 million): 2.1 WAR (divided by five, to get Yolmer about 30 starts at third): 0.4 WAR
Actual White Sox production: Yoán Moncada (minimum): 4.6 WAR
We also picked up Triple-A multi-position player Travis Demeritte from the Braves, who was dynamite for two-thirds of the season in Triple-A (.944 OPS) but floundered in a third for his major league debut (-1.1 WAR).
Running sim total: 17.6 WAR, $31.5 million salary
Running actual total: 12.8 WAR, $33.3 million salary
Eloy Jiménez (minimum): 1.4 WAR
Leury García ($1.6 million): 1.6 WAR
Actual White Sox production: same
Eloy was intended to be in my lineup from Opening Day on, and thankfully the White Sox ended up agreeing. Leury is intended to be another Swiss Army player, like Yolmer, so his production comes from several positions.
We also picked up multifaceted Triple-A star Keon Wong from the Rays, and he was pretty phenomenal at Durham, playing everywhere but first, catcher and pitcher and putting up an .839 OPS. Charlie Tilson was swapped back to the Cardinals.
Running sim total: 20.6 WAR, $33.6 million salary
Running actual total: 15.8 WAR, $35.4 million salary
Rusney Castillo ($12 million): 0.7 estimated WAR in 120 games
Curtis Granderson ($5.5 million): -0.6 WAR in 138 games
Averaged down to 162, that’s 0.6 WAR
Actual White Sox production: Adam Engel (minimum): 0.7 WAR;
Ryan Cordell (minimum): -0.6 WAR;
Tilson (minimum): -0.8 WAR
This was the biggest disaster of the simulation, as Castillo, meant to be our starting CF at a high-risk price, had just a .769 OPS for Triple-A Pawtucket (thus I am using Engel’s actual production as a comp for Castillo); safety net veteran Granderson, meant to play at all three OF positions, was also horrible in 2019. In neither case (real team or sim) is Leury getting credit for CF play, but that’s because we counted his full production in the LF slot above.
Running sim total: 21.2 WAR, $51.1 million salary
Running actual total: 15.1 WAR, $37 million salary
Domingo Santana ($2 million): 0.4 WAR
Actual White Sox production: Jon Jay ($4 million): -0.8 WAR;
Daniel Palka (minimum): -1.4 WAR;
Another risk that sort of went bust — but not as badly as the real White Sox went bust. Guys like Cordell and Tilson, who played in right field for the White Sox this year, aren’t counted here, as their full “production” was listed at CF.
Running sim total: 21.6 WAR, $53.1 million salary
Running actual total: 12.9 WAR, $41.5 million salary
Daniel Palka (minimum): -1.4 WAR
Actual White Sox production: Yonder Alonso ($8 million): -0.9 WAR;
Zack Collins (minimum): -0.2 WAR
Again, while I was counting on Palka as the sim’s main DH, all other players have been accounted for, so he’s the only one left to count; ditto Alonso and Collins for the real White Sox.
Running sim total: 20.2 WAR, $53.6 million salary
Running actual total: 11.8 WAR, $50 million salary
Carlos Rodón ($4.2 million): 0.1 WAR
Reynaldo López (minimum): 0.5 WAR
Gio Gonzalez ($12 million): 1.9 WAR in 19 games; adjusted to 32 games, 3.2 WAR
Lucas Giolito (minimum): 5.6 WAR
Chase Anderson: ($6.5 million): 1.8 WAR
Actual rotation: Rodón, Lopez, Giolito above plus Iván Nova ($9.2 million): 2.1 WAR; and a fifth-spot combo of Dylan Cease, Ross Detwiler, Dylan Covey and Bañuelos (minimum): -2.3 WAR
The sim team also added Triple-A starter Kolby Allard from the Braves and Michael Mercado from the Rays. We dealt away Jordan Guerrero, Jimmy Lambert, and Blake Battenfield as well. Allard ended up in Texas, where he earned 0.8 WAR in just nine starts. Mercado struggled quite a bit in Low-A.
Running sim total: 30.1 WAR, $77.3 million salary
Running actual total: 17.8 WAR, $64.9 million salary
Kelvin Herrera ($9 million): -0.4 WAR
Dylan Covey (minimum): -1.2 WAR
Sam Dyson ($5 million): 0.9 WAR
Manny Bañuelos (minimum): -0.4 WAR
Tyson Ross: ($5.5 million): -0.1 WAR
Caleb Frare: (minimum): -0.1 WAR
Danny Coulombe: ($3 million): estimated -0.4 WAR
Actual bullpen, Herrera, Jace Fry (minimum, 0.2 WAR), Alex Colomé ($7.3 million, 1.0 WAR), Aaron Bummer (minimum, 2.8 WAR), Josh Osich (minimum, 0.5 WAR), Evan Marshall (minimum, 1.8 WAR), José Ruiz (minimum, -0.1 WAR).
Yikes, what a disaster. I don’t even want to talk about it, except to say that there is more flexibility to improve the bullpen with Triple-A feeders than at other positions, so hopefully a guy like Coulombe crapping the bed could be remedied with supplements from Charlotte and the overall bullpen performance would not have been this bad. We also added Matt Bowman from the Cardinals (minimum salary, 0.3 WAR) and Boone Logan, who apparently had a change of heart and retired. So consider Bowman as one of the immediate call-ups.
Also, we dealt Fry to the Braves, Bummer to the Brewers, Carson Fulmer to the Twins and Nate Jones to the Cardinals.
Running sim total: 28.4 WAR, $101.3 million salary
Running actual total: 23.6 WAR, $83.2 million salary
So, all in all, our sim team finished at just more than $100 in payroll, for more than 28 WAR. The real White Sox spent $18 million less for five fewer wins. (The 2018 team WAR was 17.2.)
So if we use the hardest-edge replacement team wins (48), this sim roster war would place us at 76 wins (and because of the .4 extra and one less official game, I’ll say that’s a 76-85 record, for a five-win improvement on the real 2019.
Using a more miserly $4 million value per WAR, that would give the sim roster a $113.6 million value, or $12.3 in surplus value. The team projected to be even better than this, but alas, was not (the projection was for 83 wins, while the actual preseason White Sox projected to 68).
Strictly speaking, the $18 million extra we spent in the sim pretty much covers the five extra wins ... but the point is, we went for it. We spent more, to try to get better. Presuming the bullpen could have been better remedied, that’s two wins the sim team could have picked up, alone.
Hopefully Hahn and the front office will be more aggressive, and smartly aggressive, this coming season. We’ll see.