57 Responses

  1. Tanner Bell
    Tanner Bell at |

    Please post your questions or suggestions to improve the rankings system in the comments here.

  2. Fabio
    Fabio at |

    This series was brilliant! I found a great way to spend those cold january nights while waiting for the new season, thanks!

  3. Jason
    Jason at |

    I found these posts very informative. I have since taken your ideas and modified the excel file so that instead of copying and pasting 3 years for each player, I paste each season in it’s own tab and then vlook up the results. Doing this allowed me to project 587 hitters in just 4 hours. Once I moved over to pitchers I noticed you don’t have an regression analysis for them? I dug through the ebook and there was no mention of it in there either. Can you assist? I’d be happy to send you what I’ve done so far. In addition you should do a post on building a trade analyzer in excel since you already did a post on it. But to include that into our excel files will really give us an edge on how pickups and trades would affect our teams. Great info so far… I’ve read almost you’re entire site.

  4. Mikeup
    Mikeup at |

    I had never tried my hand at my own valuations because I’m hopelessly innumerate and don’t know the first thing about Excel. This series was fantastic!

    But after my first attempt for my 14-team, mixed, 5×5 league, I’ve found two things that indicate I may have done something wrong:

    I don’t even have 14 catchers that have positive value.
    Some values for my stars are outrageously high (Miggy came up at $71). Those prices are occasionally paid for the top 5 in my league, but I assumed that was auction behavior, not true value.

  5. Mikeup
    Mikeup at |

    I forgot to mention that I got the values by plugging in the SGP denominators I determined via SFBB’s guidance.

  6. Mikeup
    Mikeup at |

    I must be really excited about this season, because I keep making incomplete posts. What I meant to say was that I plugged in the SFBB denominators in Rotolab, which also lets me adjust for position scarcity, hitting/pitching budget split, and league auction behavior (Stars’n’Scrubs vs Spread The Risk). Rotolab and SFBB are turning out to be a great, complementary combo.

    Thanks for the response and for this great tool! I’ll have to figure out how I can adjust those catcher values. After I reviewed more carefully my best guess at my league’s potential keepers, I realized that there are actually several catchers being kept. So I may only need to adjust one or two guys to bring them up to positive value.

    3B is actually the position that concerns me most this year, but that’s another conversation.

  7. Dave
    Dave at |

    How do you treat guys with multiple position eligibility when determining your replacement level player? For example, do you leave Buster Posey in your list of first basemen, even though he obviously has more value as a C?

    Seems to me you can only use a guy once, otherwise you will end up with less than the requisite # of players in your final pool.

    1. Tanner Bell
      Tanner Bell at |

      I assign multi-position eligible players to the weakest position they qualify for. For example, Posey is treated as a Catcher because of the weakness at that position in comparison to 1B. This gives Posey the most value and is very likely what he will be drafted for.

  8. Dave
    Dave at |

    Also, why do you assign replacement level stats for each category? Why not calculate a raw total SGP for everyone than pick the 13th catcher’s raw SGP (in a 1 catcher league) as the replacement level?

    1. Tanner Bell
      Tanner Bell at |

      You could just make one replacement level adjustment to each player’s total SGP instead of determining it at each category. I could envision a scenario where having the “above replacement level SGP” for an individual category being helpful. Perhaps you’re in the middle rounds of the draft, and you know you need to improve your HR total and you care less about SB at this point, having drafted a couple of speedsters already. In this scenario, having each player’s “above replacement level HR” could help you make a better decision. Whereas, if you only adjust “Total SGP”, you can’t really see that.

      It’s not going to make a big difference. But it’s not much more difficult to do and I can see the information coming in handy.

  9. Ryguy
    Ryguy at |

    Great series. What’s the best method to update the projection tables (steamer, zips, etc.) for updated projections? Simply copying and pasting the data to the previously set up tables does not seem to work. Thanks.

  10. zainfidel
    zainfidel at |

    Let me know where I went wrong:
    With the formula for WSGP adjusted with replacement value for a pitcher, you are dividing the Wins by a negative fraction (3.03 – 3.3= -.027) resulting in a very large negative number. All the other formulas work fine, so I’m wondering if I just made a mistake on this one. To verify, I even bypassed the vlookup function and linked directly to the relevant cell in the ReplacementLevel_P table. Either way you slice it, 15 wins divided by -0.27 equals -55.556. Am I misunderstanding something here?
    Thanks! I love the tool, and just wish I could get this one to work.

    1. Tanner Bell
      Tanner Bell at |

      I think you just have an order of operations issue. You should divide the Wins by 3.03 first to get your raw calculation of SGP for the player. For example, a pitcher with 15 W would earn 4.95 SGP (15 / 3.03). Then this is subtracted from the SGP the replacement level pitcher has for Wins. If the replacement level pitcher has 10 W, then he would be given 3.30 SGP for W. So the 15 W pitcher would come out at 1.65 SGP after adjusting for replacement level (4.95 – 3.30 = 1.65). Hope that helps!

  11. sb4stix
    sb4stix at |

    Are these rankings designed to compare batters to pitchers or should they be kept as separate and distinct categories? Starting pitchers are flooding my top ranks.

  12. Dave Hyde
    Dave Hyde at |

    Wow, what a superb series. Thankyou for taking the time to post it. I look forward to getting my own rankings sorted out according to these instructions – need to think about my two catcher league in which I’ve seen your other article about Posey’s hidden value as well.

  13. Dave Hyde
    Dave Hyde at |

    Nevermind, this is all set up for 2 catchers. Good to go!

  14. Matthew Scott Martin
    Matthew Scott Martin at |

    Tanner, working on my replacement level formulas for the hitters. They are working except when I get to average. When using the suggested formula =(([@H]+1768)/([@AB]+6617)-0.267)/0.0024 – VLOOKUP([@POS], ReplacementLevel_H, COLUMN(ReplacementLevel_H[AVG]), FALSE) I am getting an error message. Excel highlights this part of the formula, “0.0024–” to show me where the error is, but being a neophyte on Excel, I don’t know what to do. Do you?


    1. Tanner Bell
      Tanner Bell at |

      Try deleting that minus sign after 0.0024 and retyping it yourself. If there are any extra spaces surrounding that minus sign, remove those as well.

  15. Matthew Scott Martin
    Matthew Scott Martin at |

    Perfect, Tanner. Thanks, it worked like a charm.

  16. Matthew Scott Martin
    Matthew Scott Martin at |

    In part 6 on Replacement Players, step #8, p. 59, you suggested the following name for the replacement level hitters table: “Replacement Level_H”. I suggest eliminating the space between Replacement and Level. I can’t remember exactly what happened last night when I was doing this, but it seemed that whatever was supposed to get pulled from those tables did not get pulled without making the change.


  17. Mark
    Mark at |

    Tanner – awesome stuff! I am new to this, but trying to figure out whether any of your examples combine or average multiple projections? I see in the example spreadsheets you download, ZIPS, Oliver, Steamer, etc, but are you then only using one of these as a start for your projections or do you combine them to get an average projection for each player? Thanks.

    1. Tanner Bell
      Tanner Bell at |

      Hi Mark. The original intent when I started writing the series was to average those multiple projections. I soon realized that is a topic that could produce its own 50 pages of material, so I had to change plans. I averaged projections for the first time this year (did it last weekend). I hope to write about how to do it. Maybe I’ll have something ready by next year. In the meantime, FantasyPros.com has a neat tool that allows you to choose from several sources and get a downloadable file with averages. They have some nice systems available to choose from too.

  18. Michael
    Michael at |

    Tanner, Great Stuff! but i`m gonna play in 14 team mixed auction with no history at all…do you know where i can get SGP`s for a league like this?


    1. Tanner Bell
      Tanner Bell at |

      Hi Michael, unfortunately I don’t have data like this available. I do think you can just use the SGP formulas I outline for a 12-team league. While a 14-team league will change things somewhat, using the 12-team factors will probably be more accurate than formulas being used by the rest of your league. So you should still have an advantage.

  19. Mike
    Mike at |

    How would I adjust for a league with bench spots? I’m guessing the process of selecting which players to use for the replacement level values would change, but I can’t figure out how. Thanks!

  20. Tanner Bell
    Tanner Bell at |

    Hey Mike. Let’s use a simple example of a 12-team league that starts 2 C, 1B, 2B, 3B, SS, MI, CI, 5 OF, UTIL and has 3 bench spots. Your league tendencies may vary, but let’s say that most teams end up using two of the spots on extra hitters and one spot on an extra pitcher.

    That gives us 14 starting hitters and 2 bench hitters for each team. That’s 16 hitters total. So that’s 192 hitters (12 * 16). We know we need at least 24 C, 36 1B/3B, 36 SS/2B, and 60 OF. That’s 146 hitters. That leaves 46 more to select (192 – 146 = 46). Those remaining 46 are just the best players at any position.

    I do include bench players in my calculation of dollar values, because they are important, you do have to pay money for them at an auction, and they provide value. Most bench players end up coming out at less then a few dollars, so they’re not taking too much value away from the others.

  21. Jason Boova
    Jason Boova at |

    Just now coming across these articles, so first off Tanner I want to say I appreciate the level of thought and detail you’ve put into everything, particularly in your responses. I just started creating my own rankings and have been leveraging work from different sources, in particular Chad Young and Zach Sanders, so right now I’m working on replacement level calculations. I’m in a couple of 5×5 Ottoneu leagues and a 6×6 NL Only Keeper league and because of that I went the z-score route as it seemed more likely to produce consistent results across the different formats.

    You mention you include players with multi-positional eligibility at their weaker position. That said, it would seem like it would make sense to include them at both positions, if only to be included in replacement level determination. Maybe this makes more sense in utilizing z-score rankings, but I’m interested to hear your thoughts.

    Thanks again for all this information.

    1. Tanner
      Tanner at |

      Hi Jason. Thanks for giving the site a chance!

      I completely agree that there would be a benefit to seeing a player listed at all positions, but I’ve just never been able to find an effective way to pull it off. In the end, I’ve concluded that the benefit that would provide is not worth the cost of implementing it.

      Here are some of the problems you’ll face by listing guys multiple times:

      1. I also use my valuation spreadsheet as a way to track things during the draft. It becomes very messy to have to remember that you need to be looking for guys multiple times to mark them off as drafted.

      2. A player can really only be slotted at one position. For example, if you draft Chris Davis next year and put him as your 3B, then he really shouldn’t be included in the replacement level determination for 1B too. He can’t play both at the same time.

      3. When you go to take the next step from calculating SGP or z-scores and translate those into dollar value calculations, you can’t have players included more than once. Just for example, say Chris Davis provides 3 z-scores over replacement level at 3B or 2.5 z-scores over replacement level at 1B. You don’t want his 5.5 z-scores going into the calculation of dollar value of one z-score.

      Apologies if my z-score terminology is a bit off. I am familiar with the approach but don’t use it very often.

      With all of this said, I have written a few posts about how I can still get the information about a player’s other positions without needing to include them more than once in the spreadsheet.


      Hope that helps. Let me know if I’m not accounting for something in the z-score approach.

      1. Jason Boova
        Jason Boova at |

        Thanks Tanner. Definitely agree from both the perspective of calculating salaries and using the sheet during the draft, and overall the more I think about your response I think it makes sense.

        My thought was, and lets use Buster Posey as an example, that if I determine the replacement level at Catcher to be the 30th ranked player, and at 1B to be the 27th ranked player, Posey is in both of those categories. If I’m removing him from the pool of 1B, because he can technically be played there, my replacement level then becomes the de facto 28th player, which would “inflate” the Value Over Replacement calculation.

        Maybe I’m over thinking it, because a player can only be used at one position, but before a draft you do have the opportunity to use them at different positions.

        1. Tanner
          Tanner at |

          Try thinking of it this way… Assume a 12-team league where 14 hitters are drafted. So 168 hitters are taken. And now let’s use your example and let’s say the 27th ranked 1B happens to be replacement level and is the 169th best hitter.

          Buster Posey can still only appear once in that top 168. It would distort your calculations if you include him twice. You wouldn’t want to have only 167 players in your top 168. Exactly 168 hitters have to be drafted.

          I don’t think counting a player like Posey only once (at C) distorts or inflates values. But I do think counting him twice (at 1B and C) would.

  22. Thomas
    Thomas at |

    Is it necessary to have two different replacement level values for 2B and SS or could they just share one MI replacement value? Same for 1B/3B and CI.

    It seems to me that rather than taking the 18th best 2B and the 18th best SS you could just use the 36th best MI and use the same values for 2B and SS. This would be easier to calculate and I would think slightly more accurate to account for draft years where more or less of each are used in the MI spot. We already know who the top 36 MI are as long as there are at least 12 of each and I would think that is usually the case.

  23. Jonathan
    Jonathan at |

    Hey Tanner,

    Terrific series. I’ve gone through all of the steps, and just bought the e-book as well. When doing my “sanity” check on the values, I noticed that there are a lot of players with negative values.

    I’m in a 13 team league that starts 14 hitters. 182 drafted hitters (with hitters in bench slots as well). The hitter values get to be negative at around hitter ranked 142. How would you adjust?

  24. Brendan
    Brendan at |

    Hi Tanner,

    How would you go about combining hitter and pitcher rankings once completed with this? Would you just look at straight up SGP’s against eachother or give some sort of weighting to hitters?



  25. Matt
    Matt at |

    I’m confused as to the last thing you mention, about the total SGP supposed to bottom out to zero with the final players expected to be drafted. Why exactly is that important? If SGP stands for Standings Gained Points, doesn’t essentially any player in the league that puts up somewhat decent stats add points in the standings to your team? Why would you ever draft a player that gives you 0 points? I’m in a 10 team league with about 130 players to be drafted with the settings, and I have the 130th player (so essentially the replacement player) at about 8.89 SGP. And it seems like that makes sense since the top player is 18.75.

    1. Tanner
      Tanner at |

      Hi Matt, consider re-reading the examples with Cano and Heyward at the very top of the whole post above. Or it might help to think about what would happen if you had a team full of 130th players. Even though they have “positive SGPs”, you would be destined to finish in last place. You would not move up the standings by owning a team full of 130th players.

      We really only care about the “marginal SGPs” or the “points over replacement” (those are two ways of saying the same thing, in my mind).

      So if you take that 130th player’s 8.89 SGPs and then subtract out the replacement level of 8.89 SGPs, that player is worth zero. He’s not going to help you move up the standings. And he’s not negative so you’re not going to fall down the standings by owning him either. Your top player that’s worth 18.75 is going to fall to about 10 marginal (or above replacement) SGPs. You don’t really get 18.75 by owning him, you only get the amount he’s better than the 130th player.

      I’d also recommend watching this video as I think I have come up with a better way to document replacement level than what is written above.

      Hope that helps explain things more clearly.

  26. Matt
    Matt at |

    Ok, thanks. I think I was doing it completely wrong. I wasn’t subtracting the replacement level off of the actual SGP, I was using the VLookup formulas you had above and it was altering the SGPs but only slightly. The video did help.

    1. Tanner
      Tanner at |

      Great! No problem. It’s very hard to describe in writing, that’s why I had to go the video route.

  27. carldispoto
    carldispoto at |

    Tanner, I intend on buying your $9.88 guide, but I have a draft this morning and no additional time to convert my roto hitters/pitchers into dollar value to compare them. Would a quick and dirty way to do this be multiplying the Pitcher TOTALSPG by .30 and the Hitter TOTALSPG by .7?

    Not very precise but seems acceptable.

    1. Tanner Bell
      Tanner Bell at |

      Carl and I traded e-mails on this and I should have come back and publicly documented what was said so others with the same question can learn from it.

      I recommended Carl not take this approach. The big thing this fails to take into account is team and league budget. Those are very important inputs into the value calculation and aren’t included in this proposal. Carl had already figured this out, but just wanted to clear this up for future readers.

  28. Mike
    Mike at |

    This is a terrific tool and I learned a lot more about Excel along the way. I have a (somewhat dumb) question. I am using Steamer projections from FanGraphs and when I went to update my spreadsheet I see two different types of data. One is Steamer Rest of Season and the other is Steamer Updated. Which one should I be looking at? Is the ROS number not updated as much as the Updated info? It says the info was updated 5/1 for both sets of info. What am I missing here?

    1. Tanner Bell
      Tanner Bell at |

      Hi Mike,

      This is a good question. The “Updated” projection is the projected end of season totals for players. So if Player X already has 5 HR, 11 R, and 12 RBI, those will be included in the “Updated” projection.

      The “Rest of Season” projection would exclude those statistics that are already accumulated. “RoS” is just “what they project for the remainder of the season”.

      One includes what’s already happened. One does not.

      I think you want to use “RoS” when evaluating players. You don’t care what they have done. You only care about what they will do going forward. You get no credit for stats that are already earned while on the free agent list or while on someone else’s team.


      1. Mike
        Mike at |

        Thanks! Very helpful.

  29. Carl
    Carl at |

    Using this process for the second straight year. It’s awesome, but I generally play in Yahoo! leagues and am always wondering if I could do a better job of finding pitcher value.

    For example, in a standard Yahoo! league, you have two SP slots, two RP sots and four P spots. Is it better to due Replacement Level using the top 96 pitchers or should you determine separate Replacement Levels for SPs and RPs? If so, how to you factor players that are eligible at both?

    If 24 SP and 24 RP will be drafted (in a 12-team league), there are still 48 P slots to be drafted. It’s impossible to predict whether opponents will draft more SP or RP for those slots so how do you determine where the Replacement Level actually is?

    In my estimation, a team should have 4 SP and 4 RP to properly balance enough Ks and W, along with SV and a low ERA and WHIP.

    Any thoughts on properly weighting R Level for pitchers in the these leagues?

    1. Tanner
      Tanner at |

      Hi Carl,

      I’d be curious how things work out if you DO NOT distinguish between SP and RP. If you run the calculations with one replacement level (not separate for RP and SP), do you end up with at least 24 RP in the top 96 pitchers?

      My guess is that you will.

      If that’s the case, then I don’t think distinguishing between SP and RP is needed.

      Hope that helps.


      1. Carl
        Carl at |

        Here is what I actually wound up doing at it seems to be pretty good:

        I figured that we know all the starting closers will be drafted but some RP like Betances, Watson, etc can be more valuable than shaky closers.

        So before figuring our SP/RP replacement level, I sorted all pitchers by Total SGP. I filtered out the starters to show only the relievers. I then found the lowest ranked closer, which was Rodney, who was the 35th ranked overall RP. Based on this, I estimated 35 RP to be drafted, which turned out to be the 30 closers plus Betances, Miller, Romo, Strop, Watson and Harris.

        As my standard Yahoo! league allows for 96 pitchers, that leaves 61 SP. So I set the replacement level for RP at the 35th RP and the replacement level for SP at the 61st SP.

        It definitely passes the eyeball test. When sorting all pitchers, the top RP is 16th overall and certain middle relievers are ranked above some SP. Betances, for example, is just ahead of Wei-Yin Chen and James Shields, which actually makes sense to me. The last pitcher above replacement level is Watson, just behind Ian Kenndey.

  30. Tanner
    Tanner at |

    That’s an interesting approach.

    I’m curious if you tried running things without distinguishing between RP and SP. If so, did any of those RP not make the cut? Did 24 still make it into the draft pool?

    Please don’t feel obligated to do any additional work.

    While the results of this process look reasonable, I do worry that, to some extent, what you’ve done is to model the rankings to “how things will actually happen in the draft”, but that might not really be showing the “optimal or most accurate value” of the players.

    That’s the only thing I’d be worried about. In this situation, it’s probably not a big difference either way. But it’s something to be on the look out for.

Comments are closed.