RotoGraphs Dynasty Rankings

All models are wrong, but some are useful.

It is with great pleasure that I can finally release what I’ve been working on for the past month: RotoGraphs Dynasty Rankings Model. We’ve traveled down a winding road with stops to handle prospects, prospects again, and aging curves. Now we’re at the end of the line.

Before getting to the juice though, I want to walk through the rest of the squeeze. I’ve pasted a table containing the Top 500 ranked players at the bottom of the article, so if you want to skip ahead, you can, but in case you want a peek under the hood at how the model actually works, keep reading. As has been the case, these rankings are based on a standard 5×5 roto, 12-team league with 23-man rosters, though the methodology is flexible and could be adapted to other settings and league types in future runs.

Equation

Here is the top-level formula for how the rankings work:

You Aren't a FanGraphs Member
It looks like you aren't yet a FanGraphs Member (or aren't logged in). We aren't mad, just disappointed.
We get it. You want to read this article. But before we let you get back to it, we'd like to point out a few of the good reasons why you should become a Member.
1. Ad Free viewing! We won't bug you with this ad, or any other.
2. Unlimited articles! Non-Members only get to read 10 free articles a month. Members never get cut off.
3. Dark mode and Classic mode!
4. Custom player page dashboards! Choose the player cards you want, in the order you want them.
5. One-click data exports! Export our projections and leaderboards for your personal projects.
6. Remove the photos on the home page! (Honestly, this doesn't sound so great to us, but some people wanted it, and we like to give our Members what they want.)
7. Even more Steamer projections! We have handedness, percentile, and context neutral projections available for Members only.
8. Get FanGraphs Walk-Off, a customized year end review! Find out exactly how you used FanGraphs this year, and how that compares to other Members. Don't be a victim of FOMO.
9. A weekly mailbag column, exclusively for Members.
10. Help support FanGraphs and our entire staff! Our Members provide us with critical resources to improve the site and deliver new features!
We hope you'll consider a Membership today, for yourself or as a gift! And we realize this has been an awfully long sales pitch, so we've also removed all the other ads in this article. We didn't want to overdo it.

Here, we are calculating a discounted dollar sum over 10 years (inclusive of the current year, so this year plus nine future seasons). The ranking is then based on the sorted dollar sum value. To go into more detail, let’s start with a given player’s value in the baseline season.

Blended Jump-Off

For players with projected values (i.e. veterans, or prospects who are expected to accrue playing time), the baseline is a dollar value calculated from a mixture of pre-season projections, year-to-date performance, and rest-of-season projections, and various conditional penalties for injuries. The blend is as follows:

Here, YTD% is simply the percentage of games played for most teams divided by 162. Using a numerical example for where we are in the current season (YTD% = 75%), the weights (rounded) would be:

  • 5% for pre-season projections
  • 36% for YTD performance
  • 59% for ROS projections

There are two key choices being made here: to use year-to-date values in the blend, and to subsequently down weight them. I’ll discuss each in sequence.

I don’t think it’s useful to ignore in-season performance. It is, after all, one of the only signals we have for whether or not a player has meaningfully improved! A noisy signal, sure, but one nonetheless. Ultimately this is where my personal philosophy as a modeler came into play, hearkening to Andrew Friedman’s famous view on free agency:

If you’re always rational about every free agent, you will finish third on every free agent.

If you base your player acquisition decisions solely on projections, you will rarely land the true breakouts. Ultimately, this weighting methodology is an injection of risk into the rankings – nudging overperformers (relative to projections) higher and underperformers lower.

That being said, I’ve chosen to down weight in-season performance relative to rest-of-season projections because if I don’t, year-to-date performance will overwhelm the jump-off point in a manner that isn’t consistent with their predictive capacity. The halving of the value is arbitrary and was calibrated based on experimentation; it is one of the areas of the model which could be subject to future optimization.

Consider the dual examples of Otto Lopez and Kyle Tucker. Lopez has been worth $31 year-to-date, is projected (via ATC) to be worth $14 for the remainder of the season, and was projected to be worth -$1 at the start of the season. Tucker, meanwhile: $5, $30, and $37, respectively. Their blended jump off values are $19 for Lopez and $22 for Tucker.

Look into your soul, dear reader, and tell me that you think Kyle Tucker is worth valuing at a baseline of $30 like rest-of-season projections would have you believe. I don’t, and I wanted that reflected in my model. On the flip side, I think you could defensibly argue that Lopez is bound for further regression and probably should be valued closer to his rest-of-season projected value. Fair enough! But valuing a $14 player at $19 is ultimately a pretty measured risk to take for someone who might also genuinely be a $25 player. For an underperformer like Tucker, the extra weight to year-to-date performance is, in my opinion, risk averse. A $20 valuation is still great – top 50 or so for this year – but to my eyes there’s serious bust risk going forward that simply isn’t reflected in his rest-of-season projection.

Injuries

Now, the blending methodology sounds okay on paper, but in practice is significantly effected by injuries. This could be:

  • A player who is currently hurt, has been hurt for a little while, but is expected to be fine. This affects their year-to-date value in a way that is not representative of their go-forward value.
  • A player who is only recently hurt, and is expected to be out for a while, up to and including the remainder of this season. This does not impact their year-to-date value (for now, though it will eventually), but does affect their rest-of-season projection in a manner that is similarly unrepresentative.
  • Pitcher injuries *shrug emoji*

To this end, I devised a series of conditions to assign penalties based on the nature of the injury. Using Roster Resource data, for players who are expected to miss ~20% of the season – either on a year-to-date or total basis – I add a flag for that player to omit year-to-date performance and further adjust based on whether their rest-of-season projection exceeds at least half of their preseason projected value. As a note, I added the wavy tilde next to 20% because I’ve found that this has occasionally required some minor manual flexing based on some quirks in how injury information is disseminated from teams and subsequently recorded in the data. But the overall idea here is for a player who has spent around 20% of the season on the injured list to be subject to some additional attention in the model.

If it does, I simply omit their in-season performance from the blend altogether and calculate their baseline assigning a 5% weight to pre-season projections and 95% weight to rest-of-season projections. Here, the contamination from the injury is playing too much role to derive useful value in their year-to-date performance.

If the rest-of-season value does not exceed 50% of their pre-season projection, I revert back to their pre-season projection with a 25% haircut as a penalty. For hitters, this is the end of the story. Consider Aaron Judge, with a -$22 rest-of-season projection, -$6 year-to-date value, and $60 pre-season projection. My blend methodology would rate him at -$12 which is patently incorrect. The haircutting methodology instead rates him with a $45 jump-off, which felt much more reasonable.

Another example is Nick Kurtz, with a $33 pre-season value, $19 year-to-date, and no rest-of-season projection given his thumb injury. Without the conditional methodology, it would actually be impossible to create a jump off point for him because he wouldn’t be in the rest-of-season data. This method sets his baseline at $24, which is perhaps low for someone who is obviously a very talented young hitter. But, the most predictive indicator for future injuries is previous injuries – ask my colleague Jeff Zimmerman about it. Even with the ding, he’s still ranked 14th in the model. And to the extent that he bounces back to his pre-injury production, the model will adjust quickly. But for now, all else equal, I would generally prefer to gently fade a guy who is set to miss roughly 40% of the season to injury.

Pitchers, meanwhile, are their own separate beast. I used the same general logic as with hitters, but for pitchers whose seasons end due to a serious arm injury, I haircut an additional 50%. For pitchers who have the “revert” flag but aren’t missing the entire year, I haircut an additional 25% no matter how their rest-of-season projection compares to their pre-season projection. Note though that these additional haircuts are on the already-haircut values. So the additional 50% haircut for serious injuries results in a total 62.5% haircut, not 75%.

To provide an example, the projections have given Tarik Skubal a slight ding – $49 rest-of-season versus $60 projected pre-season – but I have his baseline value at $37. He’s obviously still very good and fantasy players should act accordingly, but I think anyone modeling dynasty rankings should be extremely conservative with regard to pitcher injuries. I’m all for stuffing guys who are awesome until they prove otherwise – the best pitchers can be tremendously more valuable than even the second- or third-best arms. Jacob Misiorowski has been 50% more valuable ($61 versus $42) than Cam Schlittler, the number-two ranked pitcher. But once cracks in the armor start to show, I think it’s prudent to be swift in cutting them down in the ranks.

Aging Curve and Prospects

The rest of this explainer should be fairly downhill. Using the baseline value calculated above, and the aging curves that I detailed in last week’s article, I model out for a full 10-year horizon based on the player’s current age.

For example, a player who is 23 will receive bumps up to their peak age based on the curve, followed by decreases after they reach their peak. I floored negative-value seasons at -$10 because I didn’t think it added useful information to have a currently good but aging player suffer as extreme of a penalty as the aging curve would imply in edge seasons. It wouldn’t be consistent with how players are rostered in fantasy; if they’re sufficiently old and sufficiently bad, they’re cut. This is something that I might calibrate more precisely or change in future versions of the model, but ultimately it produced results that were overall reasonable and consistent with my intuition, so I stuck with it.

For prospects, using the rank buckets discussed in my previous articles (with a slight modification; I ultimately did separate number-one ranked hitters to create hitter buckets of Top 1, Top 2-5, Top 6-30, and 30+) and used the 40th percentile peak value for hitters within each bucket, and the 20th percentile for pitchers. These came out to be:

Hitting Prospect Groups & Comps
Rank Bucket N Percentile Peak Value Comp 1 Comp 2 Comp 3
Top 1 19 40 $26.13 Cliff Floyd (1994; #1; $26.11) Andruw Jones (1996; #1; $26.20) Jay Bruce (2008; #1; $25.14)
2 to 5 62 40 $16.24 Hank Blalock (2002; #3; $15.32) Corey Patterson (2001; #2; $17.17) Ryan Klesko (1991; #3; $15.16)
6 to 30 354 40 $4.33 Miguel Sano (2013; #9; $4.33) Josh Barfield (2004; #20; $4.26) Cameron Maybin (2007; #6; $4.50)
30+ 900 40 -$6.01 Todd Greene (1996; #59; -$5.99) Warren Morris (1999; #84; -$6.04) Anthony Gose (2012; #39; -$5.96)
Source: FanGraphs, Baseball America, The Baseball Cube

So, to use top-ranked Jesús Made as an example, the model is treating his expected peak season to be roughly that of Cliff Floyd’s best year. Meanwhile, fourth-ranked Walker Jenkins’ best season looks like Hank Blalock’s to the model. It then uses the aging curves to extrapolate downward to their current age and outward until they hit 10 years past their current age. For the ranks, I used the FanGraphs lists, as opposed to Baseball America (which the historical data are based on) to calibrate the model’s prospect preference to match our in-house philosophies.

I have set the model to be very pessimistic with pitchers:

Pitching Prospect Groups & Comps
Rank Bucket N Percentile Peak Value Comp 1 Comp 2 Comp 3
1 to 15 131 20 $0.00 Bill Pulsipher (1995; #12; $1.43) Allen Watson (1993; #9; $1.46) Franklin Morales (2008; #8; $1.74)
16 to 40 249 20 -$5.60 Jimmy Haynes (1996; #38; $0.09) David Nied (1993; #23; $0.10) John Roper (1993; #36; $0.17)
41+ 685 20 -$8.03 A.J. Cole (2012; #57; $0.58) Daniel Norris (2012; #91; $0.72) Kyle Crick (2013; #66; $0.91)
Source: FanGraphs, Baseball America, The Baseball Cube

To me, this is conceptually aligned with the conservativeness by which I treat them for injuries and generally reflects the evergreen logic of TINSTAAPP. For prospects who rely on list rankings to derive their dynasty value, these assumptions result in the best hitters ranking roughly in the 50-100 range, while the best pitchers are generally closer to 200. If you’re a pitching nut, before coming at me with a pitchfork, go back to the 2024 prospect list and look at the sparse number of pitchers who have returned meaningful fantasy value so far. Out of 37 pitchers ranked, it’s Paul Skenes, Mason Miller, and Jacob Misiorowski. And sure, these guys are awesome, but that’s not a very good hit rate.

For players ranked on both mid- and pre-season lists, the model uses the mid-season rank. For players who appeared on a preseason list but accrued sufficient playing time to lose prospect eligibility, the model uses the higher of their values based on their prospect status or the blended value methodology detailed above. This only lasts for the season that they appeared on the list; subsequent years will rely only on projections. I like these mechanics because it results in the model correctly stuffing a guy like Kevin McGonigle, who would be ranked much lower based on his prospect status. Meanwhile, it affords a bit of patience to guys who struggle at first but reacts fairly swiftly after that grace period ends. There are new top prospects literally every season – it doesn’t make sense to hang on to a player who isn’t producing when you can (and should) be digging to find the next guy who will to take their place on lists.

To circle back to aging curves briefly, last week I promised a comparison of the model rankings between a delta method-based curve and a GAM-based curve. The flat shape of the GAM aging curve, in my opinion, highly overrates older players:

Age 32+ Players in the Top 100
Name Position Role Age Delta Curve Rank GAM Curve Rank Diff
Jacob deGrom SP Pitcher 38 91 42 -49
Freddie Freeman 1B Hitter 36 92 52 -40
Mookie Betts SS Hitter 33 99 61 -38
Zack Wheeler SP Pitcher 36 60 30 -30
Chris Sale SP Pitcher 37 39 14 -25
Bryce Harper 1B Hitter 33 70 45 -25
Kyle Schwarber 1B Hitter 33 54 31 -23
José Ramírez 3B Hitter 33 41 19 -22
Blake Snell SP Pitcher 33 100 80 -20
Aaron Judge OF Hitter 34 18 6 -12
Source: FanGraphs

Reasonable minds could disagree about where these players should settle in a final dynasty rank; maybe 39 is too high for Chris Sale. But to that point, if 39 maybe is too high, then 14 is not reasonable. So while the GAM model might perform marginally better in certain testing setups, I don’t think it is well suited for this exercise.

Discount Factors

After applying the aging curves, with a 10-year model of projected dollar value for both current veterans and prospects in hand, I applied a 25% discount factor to future years:

Here, the discount for 2026 would be 100%, because 1.250 equals 1. For 2033, it is 21%. That is, the model only values a 2033 season at 21% of what it would value an identical season in 2026. This rate is aggressive, but I think is appropriate. Flags fly forever. With something as unpredictable as fantasy baseball, even in dynasty, you should chase championships, not prospect rankings.

In addition to the general 25% discount factor, I have added an additional 4x multiplier on catchers, and a 6x multiplier on relievers.

Again, I know these seem extreme but consider the volatility associated with each position. This is another area I hope to calibrate more precisely over time, but for now, I think the results are reasonable. To bring it all back:

Then, take the sum of each player’s discounted values and sort it to create the rankings:

Conclusion

An astute reader may notice the occasional oddity in the rankings, like Walker Jenkins being ranked one spot higher than Jesús Made, despite being a lower-ranked prospect. This is because given his age (21 vs. 19), the model sees him as closer to his peak and therefore likelier to begin accruing fantasy value on your rosters sooner. Since nearer seasons are discounted much less steeply than later ones, Made’s relatively longer ramp up to viable fantasy production results in more of his best years being discounted relative to Jenkins’. With something like this, while I might personally value Made more, I also think the model is built soundly and want to listen to its results to see what kind of information can be gleaned. I will spend time in subsequent articles diving deeper into the actual rankings, pointing out some things that I like, don’t like, or just think are interesting. It may will undoubtedly be wrong in various ways, but I’m optimistic that it will also be useful.

*Note: Already, a hitch: this model run was done prior to knowledge of Jacob deGrom’s removal due to triceps fatigue, and not enough information is known yet to have sufficient inputs for a re-run. So, interpret his ranking with caution. 

Top 500 Dynasty Rankings
Rank Name Position Age Discounted Total
1 Junior Caminero 3B 22 $211.40
2 Pete Crow-Armstrong OF 24 $184.76
3 Jackson Chourio OF 22 $175.19
4 Shohei Ohtani DH/SP 31 $169.37
5 Jacob Misiorowski SP 24 $167.62
6 Elly De La Cruz SS 24 $150.01
7 Yordan Alvarez DH 29 $144.71
8 Bobby Witt Jr. SS 26 $143.38
9 CJ Abrams SS 25 $137.90
10 Juan Soto OF 27 $135.60
11 Tarik Skubal SP 29 $135.54
12 Sal Stewart 3B 22 $134.91
13 Paul Skenes SP 24 $132.87
14 Nick Kurtz 1B 23 $124.08
15 James Wood OF 23 $122.91
16 Jordan Walker OF 24 $118.35
17 Julio Rodríguez OF 25 $116.42
18 Aaron Judge OF 34 $107.77
19 Wyatt Langford OF 24 $107.64
20 Ronald Acuña Jr. OF 28 $106.72
21 Jackson Merrill OF 23 $106.00
22 Cristopher Sánchez SP 29 $105.12
23 Yoshinobu Yamamoto SP 27 $104.78
24 Corbin Carroll OF 25 $101.41
25 Kevin McGonigle 3B 21 $95.55
26 Fernando Tatis Jr. OF 27 $90.32
27 Logan Gilbert SP 29 $89.12
28 Cam Schlittler SP 25 $86.90
29 Garrett Crochet SP 27 $85.07
30 Andy Pages OF 25 $84.49
31 Michael Harris II OF 25 $79.85
32 Gunnar Henderson SS 25 $78.91
33 Drew Rasmussen SP 30 $78.39
34 Munetaka Murakami 1B 26 $78.03
35 Roman Anthony OF 22 $77.21
36 Ben Rice C 27 $75.45
37 Zach Neto SS 25 $74.27
38 Bryan Woo SP 26 $73.64
39 Chris Sale SP 37 $72.75
40 Dylan Cease SP 30 $71.49
41 José Ramírez 3B 33 $70.49
42 Chase Burns SP 23 $69.07
43 Matt Olson 1B 32 $68.46
44 Pete Alonso 1B 31 $67.41
45 Ceddanne Rafaela OF 25 $64.17
46 Iván Herrera 1B 26 $62.46
47 Brice Turang 2B 26 $62.24
48 Hunter Goodman C 26 $60.14
49 Jesús Luzardo SP 28 $59.20
50 Miguel Vargas 3B 26 $58.98
51 Konnor Griffin SS 20 $56.69
52 JJ Wetherholt 2B 23 $54.31
53 Jacob Wilson윌슨 SS 24 $54.00
54 Kyle Schwarber DH 33 $52.71
55 Tyler Soderstrom OF 24 $52.00
56 Daylen Lile OF 23 $49.46
57 Alec Burleson OF 27 $49.26
58 Mason Miller RP 27 $48.90
59 Francisco Lindor SS 32 $47.82
60 Zack Wheeler SP 36 $47.10
61 Otto Lopez 2B 27 $47.10
62 Drake Baldwin C 25 $46.04
63 Jac Caglianone OF 23 $44.00
64 Max Fried SP 32 $43.91
65 Vladimir Guerrero Jr. 1B 27 $41.18
66 Nolan McLean SP 24 $40.13
67 Kyle Tucker OF 29 $39.86
68 Hunter Brown SP 27 $36.21
69 Logan Webb SP 29 $33.87
70 Bryce Harper 1B 33 $33.28
71 Walker Jenkins OF 21 $33.10
72 Jesús Made SS 19 $33.07
73 Carson Benge OF 23 $32.26
74 Maikel Garcia 3B 26 $32.18
75 Cade Smith RP 27 $30.83
76 Gavin Williams SP 26 $30.25
77 Brent Rooker OF 31 $27.22
78 Parker Messick SP 25 $26.77
79 Wilyer Abreu OF 27 $25.53
80 Eury Pérez SP 23 $23.52
81 Colson Montgomery SS 24 $23.25
82 Randy Arozarena OF 31 $22.19
83 Jazz Chisholm Jr. 3B 28 $21.45
84 Jhoan Duran RP 28 $20.59
85 Riley Greene OF 25 $20.17
86 Jonathan Aranda 1B 28 $19.81
87 Ketel Marte 2B 32 $19.47
88 Rafael Devers 1B 29 $18.48
89 Seiya Suzuki OF 31 $18.37
90 Grant Taylor RP 24 $18.30
91 Jacob deGrom SP 38 $17.54
92 Freddie Freeman 1B 36 $17.27
93 Payton Tolle SP 23 $16.96
94 Bryce Eldridge 1B 21 $16.24
95 Franklin Arias SS 20 $15.61
96 Logan Henderson SP 24 $15.49
97 George Kirby SP 28 $14.96
98 Sam Antonacci OF 23 $14.78
99 Mookie Betts SS 33 $14.44
100 Blake Snell SP 33 $13.93
101 Carter Jensen C 22 $13.80
102 Dillon Dingler C 27 $13.25
103 Jeremy Peña SS 28 $13.15
104 Bryce Miller SP 27 $11.81
105 Louis Varland RP 28 $10.63
106 Trea Turner SS 33 $9.88
107 Shane McClanahan SP 29 $9.64
108 Willson Contreras 1B 34 $9.13
109 Luis García Jr. 2B 26 $8.59
110 Vinnie Pasquantino 1B 28 $7.84
111 Andrés Muñoz RP 27 $6.71
112 Troy Melton SP 25 $6.06
113 Braxton Ashcraft SP 26 $5.86
114 Josh Naylor 1B 29 $5.13
115 Trey Yesavage SP 22 $4.59
116 Shota Imanaga SP 32 $4.29
117 Dansby Swanson SS 32 $4.04
118 Samuel Basallo C 21 $3.67
119 Michael Busch 1B 28 $3.58
120 Sonny Gray SP 36 $3.31
121 Xavier Edwards 2B 26 $3.24
122 Yandy Díaz 1B 34 $2.29
123 Chase DeLauter OF 24 $2.15
124 Cole Young 2B 22 $1.85
125 Mike Sirota OF 23 $0.94
126 Henry Bolte OF 22 -$1.06
127 Jackson Jobe SP 23 -$1.35
128 Jared Jones SP 24 -$1.41
129 Ranger Suarez SP 30 -$1.83
130 Foster Griffin SP 30 -$1.91
131 Chandler Simpson OF 25 -$1.93
132 Bryan Reynolds OF 31 -$1.97
133 Ozzie Albies 2B 29 -$2.45
134 Luke Keaschall 2B 23 -$2.83
135 Geraldo Perdomo SS 26 -$2.90
136 David Bednar RP 31 -$3.25
137 Jo Adell OF 27 -$3.81
138 Ryan Pepiot SP 28 -$4.35
139 Shea Langeliers C 28 -$4.36
140 Cal Raleigh C 29 -$4.54
141 Spencer Strider SP 27 -$5.35
142 Jake McCarthy OF 28 -$6.10
143 Angel Genao SS 22 -$6.29
143 Aidan Miller SS 22 -$6.29
145 William Contreras C 28 -$6.36
146 José Soriano SP 27 -$6.66
147 Kyle Harrison SP 24 -$7.39
148 Oneil Cruz OF 27 -$8.07
149 Jackson Holliday 2B 22 -$8.12
150 Teoscar Hernández OF 33 -$8.22
151 Heliot Ramos OF 26 -$8.33
152 Joe Ryan SP 30 -$8.38
153 Devin Williams RP 31 -$8.72
154 Tyler Glasnow SP 32 -$9.83
155 Bradgley Rodriguez SP 22 -$10.16
156 Cade Horton SP 24 -$10.37
157 Bryan Baker RP 31 -$10.49
158 Didier Fuentes RP 21 -$10.60
159 Colt Emerson 3B 20 -$11.16
160 Casey Mize SP 29 -$12.15
161 Jacob Latz RP 30 -$12.83
162 Justin Crawford OF 22 -$13.15
163 A.J. Ewing OF 21 -$13.49
164 Spencer Torkelson 1B 26 -$13.85
165 Nick Lodolo SP 28 -$13.93
166 Chase Meidroth 2B 24 -$14.02
167 Max Clark OF 21 -$14.20
167 Josue De Paula OF 21 -$14.20
167 Roch Cholowsky SS 21 -$14.20
167 George Lombard Jr. SS 21 -$14.20
171 Bubba Chandler SP 23 -$14.32
172 Adrian Morejon RP 27 -$14.38
173 Matthew Boyd SP 35 -$14.69
174 Nick Pivetta SP 33 -$14.73
175 Thomas White SP 21 -$14.82
175 Kade Anderson SP 21 -$14.82
177 Cam Smith OF 23 -$15.13
178 Zack Gelof 2B 26 -$15.96
179 Colt Keith 3B 24 -$16.78
180 Caleb Durbin 3B 26 -$16.98
181 Bo Bichette SS 28 -$16.99
182 Spencer Schwellenbach SP 26 -$18.04
183 Seth Hernandez SP 20 -$18.46
183 Ryan Sloan SP 20 -$18.46
185 Corey Seager SS 32 -$18.61
186 Michael King SP 31 -$19.00
187 Brandon Lowe 2B 31 -$19.45
188 Nico Hoerner 2B 29 -$19.50
189 Spencer Miles SP 25 -$19.72
190 Kris Bubic SP 28 -$19.88
191 Reid Detmers SP 26 -$20.19
192 Ryan Weathers SP 26 -$20.38
193 Carlos Rodón SP 33 -$20.84
194 Hunter Greene SP 26 -$21.09
195 Manny Machado 3B 33 -$21.13
196 Luis Robert Jr. OF 28 -$22.35
197 Esmerlyn Valdez OF 22 -$22.74
198 Sandy Alcantara SP 30 -$22.88
199 Bryce Rainer SS 20 -$22.95
199 Sebastian Walcott SS 20 -$22.95
199 Theo Gillen OF 20 -$22.95
202 Kyle Bradish SP 29 -$23.02
203 Jack Dreyer SP 27 -$23.65
204 Josh Hader RP 32 -$23.68
205 Masyn Winn SS 24 -$24.28
206 MacKenzie Gore SP 27 -$24.35
207 Gabriel Moreno C 26 -$24.66
208 Vahn Lackey C 21 -$24.80
209 Mickey Moniak OF 28 -$24.90
210 Edward Cabrera SP 28 -$25.08
211 Jack Flaherty SP 30 -$25.49
212 Eugenio Suárez 3B 34 -$25.88
213 JJ Bleday OF 28 -$25.97
214 Jung Hoo Lee 이정후 OF 27 -$26.05
215 Ian Seymour SP 27 -$26.09
216 Trent Grisham OF 29 -$27.12
217 Byron Buxton OF 32 -$27.69
218 Jake Burger 1B 30 -$27.87
219 Jake Bennett SP 25 -$27.92
220 TJ Rumfield 1B 26 -$28.05
221 Cody Bradford SP 28 -$28.28
222 Dominic Canzone OF 28 -$28.39
223 Justin Wrobleski SP 25 -$28.78
224 Abner Uribe RP 26 -$29.39
225 Taj Bradley SP 25 -$29.57
226 Ben Joyce RP 25 -$29.97
227 Justin Steele SP 30 -$30.10
228 Jarren Duran OF 29 -$30.84
229 Shane Bieber SP 31 -$31.16
230 Alfredo Duno C 20 -$31.27
230 Ethan Salas C 20 -$31.27
232 Brandon Marsh OF 28 -$31.35
233 Brenton Doyle OF 28 -$31.53
234 Edwin Díaz RP 32 -$31.65
235 Jordan Beck OF 25 -$31.68
236 Shane Drohan SP 27 -$31.76
237 Trevor Megill RP 32 -$31.95
238 Luis Peña SS 19 -$32.30
238 Leo De Vries SS 19 -$32.30
240 Gerrit Cole SP 35 -$32.43
241 Luis Arraez 1B 29 -$32.82
242 Emerson Hancock SP 27 -$32.90
243 Mitch Bratt SP 22 -$32.96
244 Braydon Fisher SP 25 -$33.06
245 Keider Montero SP 25 -$33.51
246 Tanner Bibee SP 27 -$33.59
247 Ezequiel Tovar SS 24 -$33.65
248 Kyle Stowers OF 28 -$33.87
249 Michael Soroka SP 28 -$34.11
250 Grayson Rodriguez SP 26 -$34.44
251 Lawrence Butler OF 25 -$34.82
252 Ian Happ OF 31 -$35.05
253 Gleyber Torres 2B 29 -$35.36
254 Dylan Lee RP 31 -$35.77
255 Sean Burke SP 26 -$35.93
256 Brooks Lee 3B 25 -$36.16
257 Brayan Rocchio 2B 25 -$36.81
258 Griffin Jax SP 31 -$37.61
259 Hayden Wesneski SP 28 -$37.88
260 Isaac Paredes 3B 27 -$38.05
261 Liam Doyle SP 22 -$38.37
261 Jarlin Susana SP 22 -$38.37
261 Gage Wood SP 22 -$38.37
261 Noah Schultz SP 22 -$38.37
265 Anthony Eyanson SP 21 -$38.93
265 Jackson Flora SP 21 -$38.93
265 Christian Zazueta SP 21 -$38.93
268 Travis Bazzana 2B 23 -$38.99
269 Drew Anderson 앤더슨 SP 32 -$39.21
270 Andrew Painter SP 23 -$39.30
271 Dylan Crews OF 24 -$39.87
272 Cade Cavalli SP 27 -$40.00
273 Tyler Holton SP 30 -$40.10
274 Eli Willits SS 18 -$40.16
274 Grady Emerson SS 18 -$40.16
276 Braylon Doughty SP 20 -$40.32
277 Bryson Stott 2B 28 -$40.58
278 Mike Trout OF 34 -$40.69
279 Rainiel Rodriguez C 19 -$40.87
280 Zac Gallen SP 30 -$41.06
281 Austin Riley 3B 29 -$41.07
282 Ben Brown SP 26 -$42.11
283 Kaelen Culpepper SS 23 -$42.22
283 Ryan Waldschmidt OF 23 -$42.22
283 Braden Montgomery OF 23 -$42.22
283 Carson Williams SS 23 -$42.22
283 Charlie Condon OF 23 -$42.22
288 Joe Musgrove SP 33 -$42.38
289 Braxton Garrett SP 28 -$42.41
290 Connelly Early SP 24 -$42.55
291 Jacob Reimer 3B 22 -$43.34
291 Aiva Arquette SS 22 -$43.34
291 Marek Houston SS 22 -$43.34
291 Aaron Walton OF 22 -$43.34
291 Murf Gray 3B 22 -$43.34
291 Jett Williams OF 22 -$43.34
291 Pedro Ramírez 2B 22 -$43.34
298 Tanner Scott RP 31 -$43.96
299 Nick Gonzales 2B 27 -$43.97
300 Brayden Taylor 3B 24 -$44.00
300 Dylan Beavers OF 24 -$44.00
300 Tommy Troy 2B 24 -$44.00
303 Nolan Schanuel 1B 24 -$44.10
304 Kazuma Okamoto 3B 30 -$44.16
305 Brandon Woodruff RP 33 -$44.62
306 Daniel Palencia RP 26 -$44.66
307 Ralphy Velazquez 1B 21 -$45.05
307 Jonny Farmelo OF 21 -$45.05
307 Jefferson Rojas SS 21 -$45.05
307 Zyhir Hope OF 21 -$45.05
307 Lazaro Montes OF 21 -$45.05
307 Josue Briceño 1B 21 -$45.05
307 Tyler Bell SS 21 -$45.05
307 Michael Arroyo 2B 21 -$45.05
315 Riley O’Brien RP 31 -$45.54
316 Kerry Carpenter OF 28 -$45.58
317 Evan Carter OF 23 -$45.61
318 Christian Scott SP 27 -$45.71
319 Chad Patrick SP 27 -$47.05
320 AJ Smith-Shawver SP 23 -$47.10
321 Sal Frelick OF 26 -$47.26
322 Christian Oppor SP 21 -$47.37
322 Caden Scarborough SP 21 -$47.37
322 Keyner Martinez SP 21 -$47.37
325 Jake Bauers OF 30 -$47.38
326 Cooper Pratt SS 21 -$47.63
327 Tyler Bremner SP 22 -$47.85
327 Hagen Smith SP 22 -$47.85
327 Michael Forret SP 22 -$47.85
327 Karson Milbrandt SP 22 -$47.85
327 Riley Quick SP 22 -$47.85
327 Travis Sykora SP 22 -$47.85
327 Zachary Root SP 22 -$47.85
327 Elmer Rodríguez SP 22 -$47.85
327 Robby Snelling SP 22 -$47.85
336 Brandon Sproat SP 25 -$47.93
337 Juan Valera SP 20 -$48.12
337 Ramon Marquez SP 20 -$48.12
339 Framber Valdez SP 32 -$48.52
340 Caleb Bonemer 3B 20 -$48.52
340 Eduardo Quintero OF 20 -$48.52
340 Arjun Nimmala SS 20 -$48.52
340 Felnin Celesten SS 20 -$48.52
340 Eric Hartman OF 20 -$48.52
340 Devin Fitz-Gerald SS 20 -$48.52
346 Yainer Diaz C 27 -$48.52
347 Tyler Mahle SP 31 -$48.55
348 Royce Lewis 3B 27 -$48.77
349 Owen Caissie OF 23 -$48.97
350 Kevin Gausman SP 35 -$49.03
351 Cody Ponce 폰세 SP 32 -$49.17
352 Aroldis Chapman RP 38 -$49.38
353 Matt Chapman 3B 33 -$49.54
354 Christian Walker 1B 35 -$49.84
355 Alex Bregman 3B 32 -$49.89
356 Max Meyer SP 27 -$49.97
357 Kyle Karros 3B 23 -$50.14
358 Luis De León SP 23 -$50.17
358 Khal Stephen SP 23 -$50.17
358 Jurrangelo Cijntje SP 23 -$50.17
358 Jonah Tong SP 23 -$50.17
358 JR Ritchie SP 23 -$50.17
358 Gage Jump SP 23 -$50.17
358 Tanner McDougal SP 23 -$50.17
358 Kendry Rojas SP 23 -$50.17
366 Nick Martinez SP 35 -$50.62
367 Peter Lambert SP 29 -$50.71
368 Kevin Kelly RP 28 -$51.00
369 Ezequiel Duran 1B 27 -$51.38
370 Kodai Senga SP 33 -$51.64
371 Brandon Nimmo OF 33 -$51.80
372 Brandon Pfaadt SP 27 -$51.89
373 Kendry Chourio SP 18 -$52.18
374 Dustin May SP 28 -$52.37
375 Raisel Iglesias RP 36 -$52.48
376 Landen Roupp SP 27 -$53.06
377 Ronny Cruz 3B 19 -$53.22
377 Emil Morales SS 19 -$53.22
377 Yolfran Castillo SS 19 -$53.22
377 Jhonny Level 2B 19 -$53.22
377 Dax Kilby SS 19 -$53.22
377 Josh Hammond SS 19 -$53.22
377 Edward Florentino OF 19 -$53.22
377 Roldy Brito OF 19 -$53.22
377 Ethan Holliday 3B 19 -$53.22
377 Josiah Hartshorn 1B 19 -$53.22
377 Hayden Alvarez OF 19 -$53.22
377 Justin Gonzales OF 19 -$53.22
377 Tate Southisene SS 19 -$53.22
377 JoJo Parker 3B 19 -$53.22
377 Cristian Arguelles OF 19 -$53.22
392 Bryan Hudson SP 29 -$53.30
393 Liam Hicks C 27 -$53.35
394 Jack Wenninger SP 24 -$53.43
394 Brody Hopkins SP 24 -$53.43
394 Jaxon Wiggins SP 24 -$53.43
394 Tyson Hardin SP 24 -$53.43
394 Trey Gibson SP 24 -$53.43
394 Rhett Lowder SP 24 -$53.43
394 Winston Santos SP 24 -$53.43
394 George Klassen SP 24 -$53.43
402 Michael McGreevy SP 25 -$53.44
403 Mike Burrows SP 26 -$53.98
404 Joey Cantillo SP 26 -$54.86
405 Cole Carrigg OF 24 -$55.45
406 Trevor Story SS 33 -$55.53
407 Carmen Mlodzinski SP 27 -$56.07
408 Willy Adames SS 30 -$56.11
409 J.T. Ginn SP 27 -$56.19
410 Zac Thornton SP 24 -$56.28
411 Paul Blackburn SP 32 -$56.65
412 Adley Rutschman C 28 -$56.66
413 Christian Yelich 1B 34 -$57.09
414 Trevor Rogers SP 28 -$57.36
415 Josuar Gonzalez SS 18 -$57.68
415 Taitn Gray 1B 18 -$57.68
415 Dorian Soto SS 18 -$57.68
415 Alexander Frias OF 18 -$57.68
415 Brady Ebel SS 18 -$57.68
415 Juneiker Caceres OF 18 -$57.68
415 Kevin Alvarez OF 18 -$57.68
415 Elian Peña 3B 18 -$57.68
423 Sean Newcomb SP 33 -$57.75
424 Roki Sasaki SP 24 -$57.76
425 Jakob Marsee OF 25 -$57.82
426 Will Smith C 31 -$58.63
427 Javier Sanoja 3B 23 -$58.67
428 David Davalillo SP 25 -$58.80
428 Jake Bloss SP 25 -$58.80
428 Connor Prielipp SP 25 -$58.80
431 Walbert Ureña SP 22 -$60.48
432 Bailey Ober SP 30 -$60.53
433 Marcelo Mayer 3B 23 -$60.82
434 Jack Leiter SP 26 -$60.90
435 Shane Smith SP 26 -$60.99
436 Caden Dana SP 22 -$61.61
437 Brandon Young SP 27 -$61.73
438 Victor Bericoto OF 24 -$62.06
439 Luis Perales SP 23 -$62.30
440 Heriberto Hernández OF 26 -$62.37
441 Noah Cameron SP 26 -$62.88
442 Kai-Wei Teng SP 27 -$63.35
443 Javier Assad SP 28 -$63.44
444 Davis Martin SP 29 -$63.69
445 River Ryan SP 27 -$63.87
446 Lake Bachar SP 31 -$63.94
447 Zebby Matthews SP 26 -$64.35
448 Reynaldo López SP 32 -$64.74
449 Matt McLain 2B 26 -$65.04
450 Nathan Eovaldi SP 36 -$65.41
451 Adolis García OF 33 -$65.78
452 Emmet Sheehan SP 26 -$65.83
453 Luis Castillo SP 33 -$66.14
454 Shane Baz SP 27 -$66.33
455 Addison Barger 3B 26 -$66.63
456 Michael Wacha SP 34 -$66.64
457 Nasim Nuñez OF 25 -$67.53
458 Andre Pallante SP 27 -$67.65
459 Ryne Nelson SP 28 -$68.39
460 Joe Whitman SP 24 -$68.81
461 Tyler Alexander SP 31 -$69.47
462 Cade Povich SP 26 -$69.52
463 Andrew Vaughn 1B 28 -$70.00
464 Robert Gasser SP 27 -$70.04
465 Joey Estes SP 24 -$70.14
466 Alejandro Kirk C 27 -$70.21
467 Clay Holmes SP 33 -$70.44
468 Freddy Peralta SP 30 -$70.47
469 Eduardo Rodriguez SP 33 -$71.37
470 Eduardo Rivera SP 23 -$71.79
471 Jacob Young OF 26 -$72.07
472 Chase Petty SP 23 -$72.88
473 Taylor Ward OF 32 -$72.90
474 Huascar Brazobán SP 36 -$72.93
475 George Springer OF 36 -$73.00
476 Luis Gil SP 28 -$73.25
477 Kody Clemens OF 30 -$73.35
478 Spencer Arrighetti SP 26 -$73.39
479 Brendan Donovan 2B 29 -$73.42
480 Coby Mayo 1B 24 -$73.48
481 Sam Aldegheri SP 24 -$73.52
482 Luis Morales SP 23 -$73.83
483 Jordan Westburg 3B 27 -$73.96
484 Sean Manaea SP 34 -$74.01
485 Salvador Perez C 36 -$74.03
486 Willi Castro 3B 29 -$74.33
487 JP Sears SP 30 -$74.86
488 Carson Whisenhunt SP 25 -$75.02
489 Ramón Laureano OF 31 -$75.11
490 Brady House 3B 23 -$75.15
491 Will Warren SP 27 -$75.33
492 Logan Allen로건 SP 27 -$75.63
493 Andrew Abbott SP 27 -$75.66
494 Denzer Guzman SS 22 -$76.68
495 Kumar Rocker SP 26 -$77.04
496 Garrett Mitchell OF 27 -$77.27
497 Corbin Burnes SP 31 -$77.28
498 Quinn Priester SP 25 -$77.38
499 Ryan Jeffers C 29 -$77.54
500 Quinn Mathews SP 25 -$77.61
Source: FanGraphs, Baseball America, The Baseball Cube





Jonathan is a contributor for RotoGraphs. He is a Tigers fan living in Philadelphia with his wife and dog and requests that you leave your best pizza topping combinations in the comments.

26 Comments
Oldest
Newest Most Voted
AnonMember since 2025
4 days ago

Seems really aggressive on Jordan Walker for 2 very good months to start this year balanced against 3 years of disappointment. Plenty of names behind him that I’d put before him. Pretty sure I’m keeping McGonigle ahead of Walker for one.

Backdoor SliderMember since 2025
4 days ago
Reply to  Anon

I have no issue with wanting to move McGonigle up, but you may want to look at Jordan Walker’s splits again. Two good months? His worst month is July- .260/4 HR/4 SB and 20 RBI/21 runs. Project that out over 6 months.
He’s also 24 and was in the bigs before he was ready. I think your view of him is very obtuse.

SaltyMember since 2017
4 days ago

I agree that maybe he was promoted before he was truly ready, and maybe he even gained while working through those struggles, but his current 2nd half stats (100 PAs) compare closer to his previous seasons then the current one. He could prove to be a keeper cornerstone, but maybe he belongs closer to someone like Money Mike in the late 20s-early 30s then top 15.

AnonMember since 2025
4 days ago

Walker since May 29th: 273 PA, .271/.322/.418, 8 HR, 34 R, 42 RBI, 9 SB and a 1.27 GB/FB

Now players all wax and wane and his 1st 2 months count too and he is still only 24 and he still has massive prospect pedigree. All of that is true. Look, as someone holding Walker, I’m very much rooting for him. However, I would say the jury is still very much out on whether Walker has really broken out and I’m not sure I’m taking him ahead of a bunch of guys behind him on the list like Carroll, for example. I do think he’s turned the corner but the question is whether that means he’s now a .335 wOBA guy or a .360 wOBA guy. Big difference in there. I’m excited to see how he finishes.

BTW, his worst month was probably June when he went .283, 3 HR, 8 R, 15 RBI, 3 SB.

SaltyMember since 2017
4 days ago
Reply to  Anon

I agree with that – plus a 29/4 K%/BB% that month, but he has been much improved overall this year in reducing his strikeouts.

calebwMember since 2016
4 days ago

It seems like Ivan Herrera and Daylen Lile are clear outliers. My test for this in my head is to ask if I’d accept them on a $1 keep forever contract in a straight-up trade for a $1 Bryce Harper, Vlad Guerrero, Logan Webb, any elite closer, or even a Tolle, Made, etc? Those two plus Jacob Wilson seem to be benefiting too much from a combination of youth plus a good 2025.

frankMember since 2025
4 days ago

Lile’s BABIP this season is .280. If he regresses to .300, he likely looks a lot better. In 2025, his MLB BABIP .336 and MiLB BABIP was .377. In 2024 it was .316.

FleetwoodJMacMember since 2025
4 days ago

Shohei the first baseman!

BPMember since 2025
4 days ago

It’s a big ask, but to make this customizable like the auction calculator would be amazing.

scottbotMember since 2024
4 days ago
Reply to  BP

Seconded! I suspect some of these values change meaningfully in OBP, SV+HLD leagues etc etc

Klubot3000Member since 2017
4 days ago

Nice job! While there are of course nits to pick with specific rankings and methodology, overall this is a MUCH better dynasty ranking than any of the others out there.

It might interesting to incorporate OOPSY into the prospect ranking since that specifically is intended for fantasy as opposed to the EL/BG prospect list. I might have missed it but did you add injury penalty for prospects too? The (way too high) ranking of Aidan Miller, Thomas White, and Aiva Arquette all stood out to me.

Adjusting this for other formats (points, deeper leagues) would be valuable too as another commenter noted.

There might be something weird with your position adjustments. There are a bunch of SP-eligible relievers that get bumped WAY high in these ranks. Bradgley at 155, Miles at 189, Dreyer at 203, Seymour at 215, Braydon Fisher 244, Holton 273, Newcomb, Blackburn etc etc. There is a ton of utility in these kinds of guys in lots of leagues, but in a 12T 5×5 I think something is goofing up their value.

I tend to think a 10 year period is far too long given the uncertainty involved, but your discount rate is fairly aggressive so perhaps that’s fine.

Again, awesome stuff. Nice to have a dynasty tool that is built off a bit more than just vibes!

WebsMember since 2020
4 days ago

I love this and it meets my gut expectations.

But I am flabbergasted that Zac Gallen is 40 slots higher than Christian Scott, 80 points higher than Max Meyer, and 200 slots higher than Freddie Peralta.

scottbotMember since 2024
4 days ago

I know Max Muncy (LAD) is old as dirt but he’s still very potent and I’m surprised to not see him at all. Great work and an enjoyable series!

lostatlimboMember since 2017
4 days ago

Are there certain factors about Catchers it devalues?

Kind of surprise neither Francisco Alvarez or Endy Rodriguez make the Top 500 while 36 yo Salvador Perez and nothing-burger Alejandro Kirk do.

Francisco Alvarez has his share of fleas, but has outperformed Kirk and is a 24 yo, former 60 grade prospect. I struggle to see any upside to Kirk this season, much less as a dynasty keeper.

And I would imagine Endy Rodriguez is MIA due to frequent injury issues – but then again Will Smith has had his fair share recently and I can’t imagine someone locking in Sal Perez over Endy long term at this point.

I feel like I’m missing something.

GuzzardoMember since 2021
3 days ago

Love this stuff.

Why include preseason projection at all (at 5%)? Shouldn’t ROS presumably incorporate that into its value already?

carterMember since 2020
2 days ago

Just want to say thank you and bookmarked

alang3131982Member since 2016
2 days ago

LOL. am i an idiot or is Nootbar not on here? not saying that’s wrong or anything, just pretty funny as I have kept him around for like 2+ years now and still cant force myself to drop him

PtboMatt
14 hours ago
Reply to  alang3131982

Cole Ragans too. I get the injury discount but can’t imagine him outside the top 500

BelavonMember since 2016
1 day ago

Maybe my search function is failing me but I don’t see Cody Bellinger. I’d much rather have him than Quinn Mathews 🙂