On the Use of Aging Curves for Fantasy Baseball
A question that tends to pop up around this time of year: “When does fantasy baseball season start?” Of course, we all know that fantasy-baseball season never ends, especially for those of us in keeper and dynasty leagues. To wit, Brad Johnson’s “Keeper Questions” thread posted just the other day is now sitting at 350 comments and growing. As we all collectively count the days ‘til spring training and opening day, one of the most oft-discussed and most subjectively-answered topics is “Who do I keep?” Fantasy baseball players intuitively understand the idea of aging, at least qualitatively. Older players are less valuable, given that their performance is more likely to decrease due to both injury and ineffectiveness. But how much is age worth, really?
Thanks to work by Jeff Zimmerman and Bill Petti (Hitters, Pitchers), we now generally know that in the post-PED era, players only get worse once they’re in the league. It won’t stop people from imagining a Mike Trout 30-WAR age 26 season, but it appears to be true. However, how to translate this knowledge into quantifiable fantasy valuation remained a bit unclear. For hitters, the original work used deltas in wRC+, and Mike Podhorzer (and Jeff) took a look at how steals age, filling in one piece of the 5×5 puzzle. For pitchers, we know how the various component pieces of pitcher performance (K/9, BB/9, velocity, etc.) age, but the most catch-all stat examined would be FIP. In any case, these really only give you a qualitative sense of aging, short of attempting to correlate wRC+ or FIP with 5×5 value and applying those curves directly.
Previous hitter and pitcher aging curves
As in Jeff’s work, I’ll direct the reader to Mitchel Litchman’s piece which describes the basic methodology for constructing an aging curve using the delta method. In this case, I have not weighted any of the deltas by harmonic mean. As in other studies using deltas, each point on the following aging plots represents the cumulative change in the stat of interest (5×5 z-score, or 5z for short, in this case) for players of the given age couplet. Age couplets are identified by the older year (e.g. the difference between age-25 and age-26 performance is represented at 26). To capture post-PED era behavior as discussed by Jeff, only stats from 2006 through 2015 were used.
In this study, I’ll additionally make use of the z-score method of calculating fantasy value above replacement, as originally inspired by Zach Sanders’ four-part article and further discussed by myself here. For the sake of simplicity, all discussion here is centered on 5×5 z-scores but could theoretically be expanded and applied to any fantasy format. I can only speculate that the results would be similar. One modification is the use of SV+HD’s over SVs. This reduces year-to-year fluctuation of value due to closer role changes while still considering the usage of relievers in high-leverage situations. The averages and standard deviations used are the same ones I use for computing standard 5×5 z-scores, obtained from 2013-2015 stats using a PA minimum of 400 and IP minimum of 100 for SPs, 50 for RPs.
PA | HR | R | RBI | SB | AVG | nAVG | wRC+ | ||
AVG | 555.7 | 15.4 | 65.0 | 62.6 | 8.9 | 0.266 | 28.4 | 81.9 | |
SD | 90.1 | 9.1 | 18.5 | 21.2 | 10.4 | 0.028 | 494.4 | 43.7 | |
IP | W | SO | SVHD | ERA | WHIP | SIERA | nERA | nWHIP | |
AVG | 110.0 | 6.6 | 83.7 | 9.2 | 4.73 | 1.42 | 4.42 | 32.5 | 34.2 |
SD | 71.0 | 5.2 | 62.5 | 12.8 | 1.71 | 0.27 | 0.78 | 85.9 | 94.7 |
Hitters
Z-scores for each of the 5 stats are calculated for all players, and then the total z-score, abbreviated here as 5z, is calculated as (zHR + zR + zRBI + zSB + znAVG)/5. In this case, we’re not going to worry about replacement level or any other adjustments, as we only care about change in 5z year-to-year. For the sake of context, Bryce Harper’s 2015 earned him a 1.9 5z. Michael Brantley had a 0.7. Elvis Andrus put up a solid 0.1. All that aside, the initial hitter aging curve for 5z score looks like this:
Keep in mind when looking at this plot that it is a cumulative measure, so 37-year-olds are not going to lose a Bryce-Harper’s-worth of value next year, but rather the difference between age-36 and age-37 on the plot. The peak at age 26 agrees well with earlier studies, and the general shape looks familiar, so we’re off to a good start. However, the rising value from age 22 to 26 doesn’t quite fit with what might be expected from Jeff’s wRC+ curve. To examine a potential source of this difference, we can look to playing time. To compare change in ‘quantity’ of production vs. change in ‘quality’ of production, I ran z-scores of PA and wRC+.
Well that’d explain it. The aging behavior of playing time is a very sharp incline/decline on either side of age 26, and number of plate appearances is a huge factor in 5z score. Meanwhile, the wRC+ curve unsurprisingly has not changed much in the two years since Jeff’s initial study, holding completely steady from 22 to 26 followed by a gradual decrease.
To confirm this behavior holds true for 5z when playing time is not a factor, 5z scores were re-calculated only for players who had <10% change in PA’s.
As I’d hoped, it turns out that the growth in 5z value from age 22 to 26 is entirely playing-time based. Before 26, the consistent playing-time group of players have a nearly flat 5z score (with perhaps a slight downward slope). After 26, the decline phase in both 5z and wRC+ is quite similar until about age 34, and then from 34 onward playing time appears to be a major factor, with the original curves showing a much steeper decline.
Pitchers
For pitchers, the approach is similar, although starters and relievers were separated into their own aging curves. 5z is calculated as (zW + zSO + zSVHD + znERA + znWHIP)/5. Again for the sake of context, Clayton Kershaw’s 2015 earned him a 2.4 5z. Cole Hamels had a 0.7. Jeff Samardzija is hoping you forgot his -0.3. The initial starting pitcher aging curve for 5z score looks like this:
Again, a peak at age 26. Perhaps as a result of some survivor bias for starters that continue to pitch through their late 30’s, the decline in 5z is less sharp than it is for hitters. Obviously, the number of pitchers than continue starting into their late 30’s is quite small, and so as discussed elsewhere there is likely a competing effect between decreasing IP totals and increasing quality of remaining pitchers. Continuing along the same thread as I did for hitters, I’ll compare change in ‘quantity’ of production vs. change in ‘quality’ of production via z-scores of IP and my favorite ERA indicator, SIERA.
We again see that the aging curve for IP is steep on both the incline and decline. The aging behavior of 5z scores for starters nearly follows the zSIERA pattern, reinforcing the idea of survivor bias on the 5z curve. zSIERA is remarkably stable, with the first real drop off occurring at age 36.
To confirm this behavior holds true for 5z when playing time is not a factor, 5z scores were re-calculated only for players who had <10% change in IP.
Sample size becomes a bit of an issue as SP workloads fluctuate more than position players’. But we do find a very intriguing curve with nearly constant value all the way through age 31, followed by a gradual decline that follows the same trend as the zSIERA for this group of players. This prolonged peak doesn’t quite match up with the shape we’d expect from the Petti/Zimmerman curves, where skills are stable through 26 and then degrade. However, I am willing to believe that selecting out players that were healthy two consecutive years (or at least, equally healthy in both years) may bias us towards pitchers with more longevity. In any case I believe this definitely indicates that the initial increase in 5z value is from pitchers breaking into the league and increasing their IP totals, not from improving performance.
As identified by the Petti/Zimmerman curves, relief pitchers age differently from starters, maintaining their early career velocity and K/9 longer than starters on average. This bears out in the 5z scores as well. The decline overall appears to be shallower, although given the lesser value of RPs in 5×5 vs. SPs, this is likely not an inherent quality of RP aging. The peak age shifts to age-28, as we’d expect from the aforementioned K/9 and velocity aging curves. For the sake of not repeating similar zIP/zSIERA/5z-10% analysis over again, I’ll simply provide here the comparison of the two 5z curves for pitchers.
Aging Factor
Finally returning to the thesis question of all of this, I believe we’ve arrived at a set of very useful data with the above delta z-score analysis for hitters, starters, and relievers, along with a good set of conclusions for how to apply them. Given the fact that in each case the early-career increases in 5z score were attributed to playing time, I am going to assume no correction needs to be made for players in their age-26 and earlier seasons (age-28 in the case of relievers). This assumption is not totally correct in the case of young players projected for less than full playing time in 2016, but I’ll come back to that. After 26, I’ll apply the 5z aging curves, which will capture the aggregate effect of both decreasing playing time and decreasing performance with age. For the sake of smoother data, the initial aging curves from above were used to generate polynomial regressions and replotted here.
From here, calculating changes to player values in keeper leagues is simple. As an example, Miguel Cabrera is projected for a 1.44 5z score by steamer for 2016 in his age-33 season. If I owned him on a 3-year contract, I could project his value over that 3-year span, obtaining aging factors from the plot above:
Age | Aging factor | 5z | |
Year 1 | 33 | – | 1.44 |
Year 2 | 34 | -0.26 | 1.18 |
Year 3 | 35 | -0.28 | 0.90 |
AVG | 1.17 |
Or, if playing more to “win now” (as you should), I could weight earlier years,
Age | Aging factor | 5z | Weight | |
Year 1 | 33 | – | 1.44 | 50% |
Year 2 | 34 | -0.26 | 1.18 | 33% |
Year 3 | 35 | -0.28 | 0.90 | 17% |
wAVG | 1.26 |
In either case, we see that Miggy’s value drops somewhat significantly over the course of a three-year contract, but not so much that we should be looking to deal him at any cost. And best of all, it can be done with just the current year’s projections and a spreadsheet.
Playing Time Bonus
Looping back around to a final adjustment, players under 26 who are not projected for a full season’s workload in the current year should be expected to pick up additional playing time in the following years. This is most significant in the case of SPs, where teams now generally apply the golden rule of 30IP increases in workload each year. We can calculate the expected growth in 5z using the portions of the initial 5z curves from age 22 to 26. This works well as an alternative to simply multiplying a given player’s production out to full playing time, which is both complicated in terms of spreadsheet maneuvering, and can give unreasonably large bonuses to players projected for platoon roles.
To account for increased IP totals for starters, I looked to the zIP and 5z curves. From the 5z curve, players gained a total of about 0.5 5z from age 22 to 26, while gaining 1.3 standard deviations in IP, or about 70 innings. It seems reasonable to then say that a player under age 26 can gain up to a maximum of 0.5 5z, based on how many innings (out of a potential 70, up to a max total of 200) his workload is likely to increase in the following years, and fortunately these two curves map easily onto each other as a linear function.
PT Bonus_{SP} = .0067*ΔIP
For instance, on a three-year contract the net result is something like this for a player like Luis Severino, currently projected for 161 IP in his age-22 season for 2016:
Age | IP | PT Bonus | 5z | |
Year 1 | 22 | 161 | – | 0.16 |
Year 2 | 23 | 191 | +0.20 | 0.36 |
Year 3 | 24 | 200 | +0.06 | 0.42 |
AVG | 0.31 |
And again, you’d likely want to weight for earlier years as I showed with Miggy.
Finally, the same thing can be done for young hitters. The approach is similar to what I did for pitchers – in this case, the maximum bonus is 0.65 5z over about a 220 PA increase, where I’ll set the max yearly increase at 75PA and max possible total at 600 PA.
PT Bonus_{H} = .0030*ΔPA
For instance, on a three-year contract the net result is something like this for a player like Javier Baez, currently projected for 335 PA in his age-23 season for 2016:
Age | PA | PT Bonus | 5z | |
Year 1 | 23 | 335 | – | -0.48 |
Year 2 | 24 | 410 | +0.23 | -0.25 |
Year 3 | 25 | 485 | +0.23 | -0.02 |
AVG | -0.25 |
Results
I’ll conclude with a direct comparison of two top-300 rankings generated by z-scores, with and without the aging curve modifications discussed here (click the tabs at the bottom to switch between the two). In this case, I used a 3-year aging modification for all players. The projections used are primarily Steamer, with some custom projections added in by me. Overall I’d say the aging-modified ranks make good sense and have provided a way to reliably quantify keeper/dynasty value within the z-score method. Certain players will still always be inherently riskier if they rely specifically on skills that age faster than average (for instance, players with above-average K-rate), but this acts as a good blanket modification without introducing subjectivity.
Print This Post
Stanford Professor, baseball enthusiast, owner of too many Steam games. Follow @RyanEBrock on Twitter for occasional nuggets of baseball wisdom. Purveyor of the HarperWallbanger blog and Big Board at https://GetBigBoard.com/
This is a great read — been through it several times in prepping for a massive Dynasty league draft. Don’t suppose you’d be willing to share the Aging Factor and PT Bonus values year by year in a chart? At present (unless I’m missing something — and I probably am), I pretty much have to guess based on how high up the dots look.
Sure thing – here’s a quick snapshot of the tables used for the aging factor http://i.imgur.com/mQFu9ud.png
For the PT Bonus I don’t have a table. I’m just using the two formulas, .0067*ΔIP and .0030*ΔPA, with if() statements to figure out how much each player should get.
If you’d like, drop me an email at HarperWallbanger@gmail.com and I can send you the current version of the spreadsheet.
7:31
7:48
Now THAT’S modern journalism, folks. Wow.
This is incredible and just what I’m looking for — thanks so much for the e-mail address! I’ll totally follow up.
Heh, those suckers are so crushed and they don’t have any idea.