Automated Surge and Slump Detection with Rolling Charts

This season I went add/drop crazy. I made 344 moves (adds/drops/trades). The next highest person in my league made 167. There were times when it was so incredibly uncomfortable to drop a quality player, releasing him to the waiver wire. When sharks are circling the boat, it’s not a good time to take a dip. However, as I’ve mentioned many times before, one of the leagues I care most about is a shallow 10-team, 5×5 roto league where turning and burning is almost a requirement, and turn and burn I did!

All season I was looking for indicators that would predict small clumps of player performance. xwOBA did a tremendous job of evaluating in-season talent. But, this offseason I will be looking for more ways to catch those small clusters of player performance that seem to elude me. When MLB The Show releases its monthly awards I’m usually like, “What? Really? How did I miss that?” To be fair, those players were usually rostered during that time, but it’s the ones that sneak onto the list that I’m trying to create a system for.

Let’s use Tyler O’Neill as an example. O’Neill ended the 2021 season with a .384 wOBA, better than the .314 league average. But, one look at his rolling chart shows significant variation in his 15-Game Rolling wOBA. Here is the standard chart that we create on FanGraphs:

These charts are, in some ways, versions of control charts and while I’m still researching which type of control chart will work best in this situation, I think a baseline version could be created, simply by adding on to what we already have here. I simply clicked on the very useful ‘Export Data’ button, added one standard deviation above and below O’Neill’s season average, and included a league average wOBA:

The red lines can be thought of as upper and lower control limits. When a player’s rolling wOBA goes above the upper limit, good! Claim! When a player’s rolling wOBA goes below the lower limit, bad! Drop! But, the real usage of this strategy would not be in the visualization, but in the ingestion of daily player data to flag players who go above and below these thresholds, creating a list of recommended adds and drops. The data would look something like this in table form:

O’Neill’s Surging June
Date wOBA UCL LCL flag
2021-05-31 0.433 0.444 0.301
2021-06-01 0.451 0.444 0.301 surge
2021-06-02 0.483 0.444 0.301 surge
2021-06-03 0.483 0.444 0.301 surge
2021-06-04 0.462 0.444 0.301 surge
2021-06-05 0.478 0.444 0.301 surge
2021-06-06 0.462 0.444 0.301 surge
2021-06-08 0.489 0.444 0.301 surge
2021-06-09 0.522 0.444 0.301 surge
2021-06-11 0.507 0.444 0.301 surge
2021-06-12 0.482 0.444 0.301 surge
2021-06-13 0.483 0.444 0.301 surge
2021-06-14 0.470 0.444 0.301 surge
2021-06-15 0.421 0.444 0.301
2021-06-16 0.421 0.444 0.301
15-Game Rolling wOBA


If this system were in place, Tyler O’Neill was flagged, and you picked him up on the second day of his surge, you would have collected 13 hits, four doubles, three home runs, eight runs, seven RBI, and a .395 OBP across a span of 11 days. But, things went downhill after that surge, leading to an end of June slump period of six days, a climb back to season average, and then a return to a slump during the end of July. This long slump period really doesn’t look too terrible with 23 hits, four doubles, two home runs, 13 runs, five RBI, and a .323 OBP, but a swap out with a “surging” player during that time period would have been beneficial. So, who surged during that time period? I’m still working on that. But, in real-time, this system would have marked O’Neill as “slumping”, giv you a list of “surging” players, and allowed you to make decisions from there.

This is a work in progress, heavy on the work portion. I’ve used Tyler O’Neill here because he was the player that was on and off the wire in my league. Your league may be different, it may be deeper, but the system can be applied to all players. It’s too much work to analyze player rolling charts one after the other, looking for surging/slumping players. I’m hoping by next season, I’ll have this system in place and will be able to write about the players who are flagged on a weekly basis, and then we can all turn and burn together.

Leave a Reply

7 Comment authors
Justin CHappyFunBalljimboWARonEverythingNetflixnRichHill Recent comment authors
newest oldest most voted
Joseph Meyer
Joseph Meyer

I made 432 moves in my 12 team head to head league. Most of that is daily pitcher and hitter streaming. I essentially reserve 2 to 3 roster spots for filling whatever need I have that day. Accordingly, I keep my bench for hitters small while rostering as many closers as I can. Infinite moves allowed obviously.

Joseph Meyer
Joseph Meyer

That all being said, I still think any “hot hand” analysis is bullshit. You should just always use RoS projections when deciding who should be on your roster, aside from daily streams.


Hot hand analysis is only valuable in so much as it may point out a player that requires closer scrutiny. Sometimes the hot player is just hot, other times he’s signaling a skills change.