How do we handle the multi-position players like Ben Zobrist and Martin Prado? When a player is eligible to be slotted at 2B, SS, and OF, how do we value that player?
This question came up in the comments of my last post on “How to Add Positional Ranking to Your Spreadsheet“, from a reader named Michael (I welcome your questions too). In this post I’ll take a look at how I handle this and look at a more inticate approach you could take to get the information.
I must warn you that it takes a lot of new formulas and manipulation of your existing rankings spreadsheet to accommodate multiple positions. To make sure you have something to reference, at the end of this post I’ll provide a download link to an example Excel file you can download.
Assign the Player to the Weakest Position They’re Eligible For
This is what I currently do. For example, let’s take a player like Ben Zobrist, who in the 2014 season currently qualifies at SS, 2B, and OF.
In the Player ID Map, I attempt to classify each player at the weakest position they’re eligible for. I do that by determining what replacement level is for a standard 12-team mixed rotisserie league.
Is the “weakest position” going to be the same for every league? No it’s not. It’s probably close in most leagues. Catcher will almost surely be the weakest in any format. Then Shortstop will generally be the next weakest, followed by 2B, 3B, 1B, and OF. But positions might change a little in an 8-team league or a 15-team league, in an AL-only league versus a standard league.
That’s a big reason why I started this site. It’s not always safe to give blanket advice, and I think the best approach is to calculate all of these things for your own league. You’ll be better off for it.
How Do I Determine the Weakest Positions?
Assuming you’ve done some kind of work to create your own rankings (if not, start here), the weakest position can easily be determined by looking at the replacement level information you’ve calculated (if you want to refresh your memory on replacement level, read this).
Looking back to one of my preseason files for the 2014 season, this is the replacement level information for one of my leagues.
The weaker positions are those with the lowest replacement level. So in this league it’s C, SS, 2B, and then 1B, 3B, and OF are essentially the same.
Back to Zobrist
Going back to our example of Ben Zobrist who is eligible at SS, 2B, and OF, if we’re trying to assign him to the weakest position he’s eligible for, he would be assigned to SS.
Thinking of Martin Prado who is eligible at 2B, 3B, and OF, he would be assigned to 2B.
Carlos Santana who is eligible at 3B and C would be assigned to C.
Why Do I Only Assign a Player to One Position?
I have two reasons for this.
The main reason is because assigning players to the weakest position they are eligible for gives the player his greatest value. I’ll demonstrate more on this in a minute. But if you’re calculating Zobrist’s dollar value, it comes out highest when he’s classified as a SS.
Going along with this, fantasy baseball leagues are becoming more efficient market places. As we all get better and smarter about playing fake baseball, people generally realize they’re best off putting Buster Posey at catcher and not at 1B.
This won’t always be the case, but for the most part the obvious situations like your Buster Poseys and Carlos Santanas are going to be assigned where they belong. Because of this, it’s somewhat of a wasted effort to try calculating values for them at 1B or 3B.
The second reason is a technological one. You run into a lot of trouble having the same player appear multiple times in one spreadsheet (on multiple rows). Not only does it become confusing to have to remember that Zobrist’s name appears three times in your draft list, but it also greatly complicates (or eliminates) your ability to calculate dollar values.
How Much Does a Player’s Position Affect Their Value?
Is there really a big difference between a SS and an OF? Let’s take a look.
I am running the exercise below using Steamer’s 2014 preseason projections. The dollar values assume a 12-team standard mixed rotisserie league with 14 hitters (C, C, 1B, 2B, 3B, SS, CI, MI, OF, OF, OF, OF, OF, UTIL) and 9 pitchers. The dollar values are calculated using standings gain points and my approach to calculating player values.
Here’s the replacement level information again:
Let’s start out with Zobrist. You can see below that he was projected for 8.73 SGP before adjusting for replacement level. When you then account for replacement level and figure out his “SGP Over Replacement Level” you see that he becomes much more valuable as a shortstop. Over $4 more valuable than when he’s classified as an OF!
And Carlos Santana:
Hopefully this also illustrates how much of a difference in value players can have when they qualify for new positions.
I Don’t Care. It’s Still Nice to Know These Guys are Eligible at Multiple Positions. How Can I Put This in My Spreadsheet?
I agree with you, it’s helpful to know this. Even if we’re going to draft Zobrist as a SS, it’s still really helpful to know he’s eligible at 2B and OF too. You can use this info during the draft when deciding between other players or it may allow you to take a sleeper player you’re interested in. And I think there is some secret value in the flexibility this gives your roster during the season (perhaps making him more valuable to your team than just the $15.97 he calculates out at).
Here’s The Simple Solution
Because we use “POS” to calculate a player’s value over replacement level, we can’t reflect multiple position eligibility in the “POS” column. Putting “2B/3B/OF” in the “POS” would screw up all the formulas we use to calculate rankings and dollar values.
So the simplest solution is to insert a new column next to the “POS” column.
Name it “POS ELIGIBILITY”. And enter a formula that by default sets it equal to the “POS” column.
Then just type in the position eligibility for the unique players that qualify at more than one position. For example, type “SS/2B/OF” for Zobrist.
I realize this isn’t perfect. It doesn’t tell you the player’s dollar value if they played one of the other positions. This solution doesn’t tell you their ranking for the other positions. But this is as far as I take it in my own spreadsheet.
I just want a way to know who the players are that qualify at multiple positions and this satisfies that need.
If You Want To See Rankings For Other Positions
To do this, we’ll have to change some things in our rankings spreadsheet. The formulas we’ve set up for RSGP, HRSGP, RBISGP, SBSGP, and AVGSGP have the replacement level adjustment made to each of these categories. These are then added together, meaning that the TTLSGP column is already adjusted for replacement level.
If we’re going to calculate a player’s SGP over replacement level for multiple positions, we first need to calculate a “Gross SGP” or “Unadjusted SGP” that reflects the player’s standings gain points before accounting for position. We need to remove this replacement level adjustment so it’s not being made to each category.
For example, the RSGP formula shown above will just become:
We’re just removing the “-VLOOKUP(…)” part of the formula.
We then have to add columns for players’ second and third positions (I’m stopping at three positions, I don’t think many qualify for four). To do this, insert columns for POS2 and POS3 next to your existing POS column. For Zobrist, you might type 2B in the POS2 column and OF in the POS3 column.
Next, we must add a column to determine replacement level for each position (POS, POS2, POS3) and a related column to calculate the SGP over replacement level for each position. In the screenshot below, I inserted columns Y – AD.
The formulas for the columns will be as follows (adjust as needed to fit the exact columns and column names of your own spreadsheet):
|REPL LVL POS 1||
|SGP OVER REPL POS 1||=[@TTLSGP]-[@[REPL LVL POS 1]]|
|REPL LVL POS 2|| =IFERROR(VLOOKUP([@POS2],ReplacementLevel_H,
COLUMN(ReplacementLevel_H[REPL LEVEL SGP]),FALSE),””)
|SGP OVER REPL POS 2||=IFERROR([@TTLSGP]-[@[REPL LVL POS 2]],””)|
|REPL LVL POS 3|| =IFERROR(VLOOKUP([@POS3],ReplacementLevel_H,
COLUMN(ReplacementLevel_H[REPL LEVEL SGP]),FALSE),””)
|SGP OVER REPL POS 3||=IFERROR([@TTLSGP]-[@[REPL LVL POS 3]],””)|
The last thing we need to do is convert the “SGP OVER REPL POS #” columns into the positional ranking format I recently wrote about here.
I know we’re getting a lot of columns in this sheet, but we are going to add four more. Add columns for POS RANK 1, POS RANK 2, POS RANK 3, and ALL RANKS. See columns AE, AF, AG, and AH in the screenshot below.
We can eventually hide quite a few of the columns that we’ve been adding, but I find it easier and safer to slowly build complex formulas in separate columns rather than building one extremely long formula in only one cell. It helps me mentally step through the different parts of the calculation.
We’ll follow the same formula discussed in the positional ranking post and add that to the POS RANK 1 column. As you can see in the POS RANK 2 and POS RANK 3 formulas below, the core part of the formula is the same, but I’ve added an IF clause to the beginning. This IF clause is just looking to see if the POS2 or POS3 columns are blank. If blank then the POS RANK 2 and POS RANK 3 columns will be blank as well.
|POS RANK 1||
=[@POS]&”-”&(COUNTIFS([POS],[@POS],[SGP OVER REPL POS 1],”>”&[@[SGP OVER REPL POS 1]])+1)
|POS RANK 2||=IF([@POS2]=””,””,[@POS2]&”-”&(COUNTIFS([POS],[@POS2],[SGP OVER REPL POS 1],”>”&[@[SGP OVER REPL POS 2]])+1))|
|POS RANK 3|| =IF([@POS3]=””,””,[@POS3]&”-”&COUNTIFS([POS],
[@POS3],[SGP OVER REPL POS 1],”>”&[@[SGP OVER
REPL POS 3]])+1))
|ALL RANKS||=[@[POS RANK 1]]&IF([@[POS RANK 2]]=””,””,”, “&[@[POS RANK 2]])&IF([@[POS RANK 3]]=””,””,”, “&[@[POS RANK 3]])|
The ALL RANKS column is simply concatenating or stringing all the POS ranks together with a comma and space in between each position.
Here’s an example of what these columns will look like once you’re done. You can hide the POS RANK 1, POS RANK 2, and POS RANK 3 columns once you’ve completed the steps above.
If You Want To See Dollar Values For Multiple Positions
If you made it this far and you’ve followed the approach to calculating dollar values for players, there’s not much left to do.
Add columns for $VALUE2 and $VALUE3.
You might recall that we set up a named cell that stores the value representing the dollar value of each hitter standings gain point. It’s cell B19 from the “Settings” tab of your spreadsheet. You can see an image below.
We named this cell “Dollar_Value_Per_Hitter_SGP”.
The calculation in cell B19 is probably showing an unusual number at this point because we shredded some of our calculations when we started adding columns and changing formulas of existing columns. The revisions needed are shown in the table below too.
The formulas for $VALUE2 and $VALUE3 are to multiply the SGP OVER REPL for each position (2 and 3) by the named cell.
Just like in some of our other formulas, these will result in errors for players that don’t play multiple positions, but we can work around this by wrapping that simple formula in an “IFERROR” formula.
=IFERROR([@[SGP OVER REPL POS 2]]*Dollar_Value_Per_Hitter_SGP,””)
|$VALUE3||=IFERROR([@[SGP OVER REPL POS 3]]*Dollar_Value_Per_Hitter_SGP,””)|
|USEFULSGP||=IF([@RANK]<=Total_Hitters_Drafted,[@[SGP OVER REPL POS 1]],0)|
|RANK||=RANK([@[SGP OVER REPL POS 1]],AB:AB)(where column AB is SGP OVER REPL POS 1)|
What Else Can I Help You With?
Whew. That was a bit of a workout, but a good subject I think worth digging into. If you didn’t quite follow everything, there’s a link to download an example file below.
Even if you didn’t find that this information applied to you, I challenge you to let me know the other questions you have or difficulties you’re facing. Use the Contact Me tab at the top of any page on the website or leave a comment below.