Using xwOBA in the Shallows

Not everyone is playing in a high-stakes NFBC league. Some of us are just trying to beat our family members, friends, or random strangers who have agreed to play fantasy baseball with us. In addition, not all of us are in deep leagues. Sometimes it’s hard getting even 10 people to pay enough attention to baseball for a full season to make your league competitive. If you just so happen to find yourself in one of these shallow leagues, like an ESPN or CBS league, where the stakes are low, the waiver wire is full of talent and everyone is bought in, consider yourself lucky. But, don’t consider yourself in an easy league.

10-team leagues can be challenging because of the wire being so full of talent. Right now in my family and friends 10-team ESPN roto league, Yasmani Grandal, Tyler O’Neill, Josh Donaldson, and Dominic Smith can all be found just hanging out with no team to play for. So, how do you know if you’re making the right decisions? Should you pick up Josh Donaldson to replace a slumping Francisco Lindor? Furthermore, what about bench/start decisions? If you’re like me, simple and stupid biases will creep into these decisions. Thoughts like, “I traded for Brandon Lowe and I can’t just drop him” swirl around your head. But, you could be missing out on production by holding on to a player because you think a three home run game is coming up. To help me make drop/add decisions, I created the following table:

xwOBA Waiver/Roster Check
Name xwOBA Rostered Flag
Fernando Tatis Jr. 0.424 1
Bryce Harper 0.408 1
Yasmani Grandal 0.404 0
J.T. Realmuto 0.402 1
Tyler O’Neill 0.395 0
Yoan Moncada 0.393 1
Josh Donaldson 0.389 0
Pavin Smith 0.369 0
Franmil Reyes 0.368 0
Joey Gallo 0.358 1
Jorge Polanco 0.352 0
Jose Altuve 0.352 1
Anthony Rizzo 0.351 1
Max Kepler 0.351 0
Marcell Ozuna 0.35 0
Giancarlo Stanton 0.348 1
Dominic Smith 0.346 0
Kyle Seager 0.344 0
Kyle Schwarber 0.336 0
Brandon Lowe 0.333 1
Ian Happ 0.324 1
Gavin Lux 0.319 0
Francisco Lindor 0.318 1
Eugenio Suárez 0.304 1
Ryan Mountcastle 0.297 1
Wil Myers 0.296 1
Matt Chapman 0.284 0
David Peralta 0.278 0
David Fletcher 0.274 0
*Among all batters with at least 150 plate appearances

The table above relies on one simple metric, xwOBA. Thanks to some of the research done by our own Jeff Zimmerman, we know that xwOBA is a great in-season evaluation metric. The ‘Rostered Flag’ column marks any player on my roster with a 1 and any player available on the waiver wire with a 0. From here, I just have to go down this list and see if there are any 0 flag players (players who are not on my roster), performing better than my 1 flag players (rostered players) at that position. I should also mention that I grabbed injured players using my copy and paste technique from my waiver wire page, so you just need to be aware of who’s on the IL before you make any decisions.

Looking at the results of this table helped me make the decision to add Tyler O’Neill and drop Wil Myers. Going down the ‘Rostered Flag’ column, I can see that there are quite a few replacement options for Myers. I’ve been holding on, one because I like him and two because he provided four stolen bases early on and had a preseason ZIPS projection of 12. His ZIPS RoS is still holding at seven (totalling a projected 11 SB’s), but a steal hasn’t come in some time and I’m in need of offensive production. Obviously, each decision you make will come with some measure of scrutiny, but my goal here is to remove bias and assumptions and rely on what xwOBA tells me.

Another thing that should be mentioned is in many ESPN and CBS leagues, waiver claims can happen instantly in most cases. This means that managers are often dropping and adding multiple players in one day. Why would someone drop hot-hitting Tyler O’Neill? Maybe they don’t believe it can continue or maybe they just need help in other categories. Whatever the case, the point is, these shallow leagues are made to drop and add players on a consistent basis. The key in these shallow leagues is to not get too attached, to evaluate using in-season metrics, and to capitalize on other people’s mistakes. xwOBA can help you do that. 


NOTE: I created the above table with some simple merge statements in python code. Anyone interested in seeing that process can find the code here.

Leave a Reply

7 Comment authors
docgooden85MoateMRDXolWebsshawnp26 Recent comment authors
newest oldest most voted

Thanks! Articles focusing on shallow leagues seem rare. My favorite league is basic points, redraft, weekly reset, shallow – because I’ve been in this league with dear friends for decades. In case anyone is similarly situated, I suggest using the lineup tracker in roster resource to correlate playing time with xwOBA.