Welcome to the fifth part of the “Create Your Own Fantasy Baseball Rankings” series. If you missed an earlier part, you can find it here. You can start at the beginning of the series or if you want to start here at Part 5, you can download the Excel file created during part 4 here.
Please note that this six part series has been adapted into a 10 part book that also shows you how to convert standings gain points into dollar values and how to calculate in-draft inflation.
A few notes about the series:
- It was originally written before the 2013 MLB season. The screenshots and player references you see might refer to things from that time frame, but the same approach will work today.
- If you register as SFBB Insider, you can receive all six parts in a free, tidy, and easy-to-use e-book
- Familiarity with Excel is recommended, but I do my best to explain all formulas and functions used
- Some of the formulas used in the series do not work in Excel for Mac computers. I apologize for this. I don’t understand why Excel isn’t built to operate the same on that platform.
In this fifth part of the series we will discuss the concept of Standings Gain Points (SGP), a method of evaluating and ranking players. At the end of this part, we’ll actually have some primitive rankings in place. But we have quite a few concepts to go over before we jump into Excel.
THE DIFFICULTY IN RANKING PLAYERS
Which player is worth more and should be ranked higher?
- Player A – .280, 65R, 30HR, 95RBI, 0SB
- Player B – .265, 100R, 10HR, 55RBI, 40SB
Or how about this?
- Player A – .280, 65R, 30HR, 95RBI, 0SB
- Player C – 5W, 40SV, 75SO, 2.50ERA, 1.10 WHIP
How do you rank different types of players (speed/average vs. power/RBI)? Or even worse, how do you evaluate the worth of a hitter against the worth of a pitcher? Enter the concept of Standings Gain Points.
STANDINGS GAIN POINTS – MY INTERPRETATION
The end goal of rotisserie fantasy baseball is to accumulate the most points in the standings. The Standings Gain Points approach to valuing players is to convert a player’s statistics into the number of rotisserie points those statistics are worth.
Let’s use some example statistics from a real 12-team 5×5 rotisserie league to illustrate:
The first place finisher in Home Runs accumulated 291 HR for the year. The last place finisher accumulated 191. That leaves a spread of 100 HR from the first place team to the last place team (291 – 191 = 100).
In this 12-team league, there are 11 standings points that can be gained (even the last place team gets 1 point, the first place team 12, so 11 points can be gained).
This means that it takes roughly 9.1 home runs to move up one position in the home run standings (100 HR gap / 11 positions to move). Pick just about any position in the home run list, add 9 HR, and you can see that you do move up about 1 spot.
Running the numbers for the other statistics, we get:
RBI: (1,054 – 792) / 11 = 23.82
W: (108 – 78) / 11 = 2.73
ERA: (3.359 – 4.361) / 11 = -0.091
A Better Method of Calculating
The weakness in the calculation method outlined above is that it really only considers the first place team and the last place team. The ideal calculation would consider all teams’ final stat totals. Fortunately, Microsoft Excel offers the SLOPE function that allows us to consider each team, not just the first and last place finishers. You can read more about how to use this formula in a three part series here (Part I, Part II, Part III).
Do I have to calculate these myself?
You could. It would probably be best to calculate using your league’s specific history. Or Razzball has calculations from their average 12-team fantasy league you can review here (or if you really want to rub geek juice all over your body, check this out). For what it’s worth, I’ve been calculating this for my long-time standard mixed 12-team roto league ($260 auction budget, 14 hitters, 9 pitchers) and the results come amazingly close to Razzball’s findings:
|Category||Razzball (based on 48 12-team leagues in 2012)||My League (based 9 year history, 12-teams)|
CALCULATING SGP FOR A PLAYER – COUNTING STATS
Steamer’s Projections predict 26 HR for Mike Trout. If I conclude to use Razzball’s calculation that every 10.4 HR is equal to a one position increase in the rotisserie standings, then Mike Trout’s HR equal a 2.5 point increase in the standings (26/10.4 = 2.5). Or 2.5 Standings Gain Points.
Other statistics similar to HR, where players simply accumulate or “count” the statistics one-by-one are referred to as “counting stats”. These are easy to calculate SGP for. Simply take the number of the counting stat (Trout’s 42 projected SB) and divide by the quantity of the stat required to move up one standings point (per Razzball, 9.4 SB to move up one position). So Trout’s 42 SB are worth 4.46 SGPs (42 / 9.4).
For pitchers, wins, saves, and strike outs are also “counting stats” and allow for easy calculation of SGP.
But what about batting average, ERA, and WHIP?
CALCULATING SGP FOR A PLAYER – RATIO STATS
AVG, ERA, and WHIP are referred to as “ratio stats”. The calculation of SGP for these is a bit more involved. Think about this scenario…
Mike Trout is projected for 619 at bats. He’s projected to hit .297 (184H/619AB).
Troy Tulowitzki is projected for 434 at bats. He’s projected to hit .300 (130H/434AB).
Which player will have a bigger impact on your team’s batting average? Does the fact that Trout will hit .297 over nearly 200 more at bats make him more valuable? Or does Tulowitzki’s .300 average make him the better “batting average contributor”?
Let’s run the numbers. If we assume a league of 12 teams and 14 hitters on each team (adjust for your roster size), that is 168 players (12 * 14). In the Steamer projections, the top 168 major leaguers are projected for an average of about 509 at bats per player.
This means the average team in this fantasy league will have approximately 7,126 at bats (14 players * 509 at bats). According to Razzball, the average rotisserie batting average in 12-team leagues was .267. This means the average team had approximately 1,902 hits (7,126 * .267). And the average player had 136 hits (1,902 team hits / 14 players).
To find the impact of Trout we need to remove one “average” player from the team and then add in Trout’s projections. We can do the same for Tulowitzki.
13 “average” players * 509 at bats = 6,617
13 “average” players * 136 hits = 1,768
Add Trout’s projections (184 Trout hits + 1,768 other hits) / (619 Trout ABs + 6,617 other ABs) = .26976
Add Tulowitzki’s projections: (130 Tulowitzki hits + 1,768 other hits) / (434 Tulowitzki ABs + 6,617 other ABs) = .26918
So despite his lower batting average, Trout’s impact on the team batting average is greater than Tulowitzki’s, due to the number of at bats. It’s this weighting we have to take into account for “ratio stats”.
To finish the example, if the team batting average with Trout is .26976 and the team batting average without Trout is .267, he increases the team average .00276 (.26976 – .267). Looking above again, Razzball calculates that a .0024 increase in BA equals one point in the rotisserie standings. This makes Trout’s BA worth 1.15 SGP (.00276 / .0024).
Enough concepts. Let’s rank some flippin’ players.
These instructions will help convert the statistics in our rankings spreadsheet into Standard Gain Points so we can begin to rank players.
- Open your existing rankings spreadsheet (if you don’t have one started, you can download from part 4 here).
- Add five new columns to the “Hitter Ranks” sheet. Do this by typing in column headers beginning in the first empty column to the right of your existing data. Name the new columns RSGP, HRSGP, RBISGP, SBSGP, AVGSGP (as in “Runs Standings Gain Points”, “Home Runs Standings Gain Points”, etc.).Because we have this sheet formatted as an Excel table, as soon as the column header is added, the entire column will be added to the table.
- After you’ve added these five columns, add a sixth column named “TTLSGP”. This will calculate the total SGP across the five hitting categories.
- Add five new columns to the “Pitcher Ranks” sheet. Do this by typing in column headers beginning in the first empty column to the right of your existing data. Name the new columns WSGP, SVSGP, SOSGP, ERASGP, WHIPSGP (as in “Wins Standings Gain Points”, “Saves Standings Gain Points”, etc.).
- After you’ve added these five columns, add a sixth column named “TTLSGP”. This will calculate the total SGP across the five pitching categories.
- Let’s assume a 12-team league and that Razzball’s estimate of the statistics needed to move up one spot are accurate. The formulas to add to the Hitter Ranks columns added above in step 2 are:
Column Excel Formula RSGP =[@R]/24.6 HRSGP =[@HR]/10.4 RBISGP =[@RBI]/24.6 SBSGP =[@SB]/9.4 AVGSGP =(([@H]+1768)/([@AB]+6617)-0.267)/0.0024 TTLSGP =[@RSGP]+[@HRSGP]+[@RBISGP]+[@SBSGP]+[@AVGSGP]
- The formulas to add to the Pitcher Ranks columns added above in step 3 are:
Column Excel Formula WSGP =[@W]/3.03 SVSGP =[@SV]/9.95 SOSGP =[@SO]/39.3 ERASGP =((475+[@ER])*9/(1192 + [@IP])-3.59)/-0.076 WHIPSGP* =((1466+[@H]+[@BB])/(1192+[@IP])-1.23)/-0.015 TTLSGP* =[@WSGP]+[@SVSGP]+[@SOSGP]+[@ERASGP]+[@WHIPSGP]
- You can now sort both the Hitter Ranks and Pitcher Ranks by the new TTLSGP column to see the “best” players. To sort, click the downward pointing arrow on the TTLSGP column. Then select “Sort Largest to Smallest”. Hit OK to perform the sort.
- As the calculations stand right now (there are some additional changes to be made in Part 6 of the series), the top ten hitters are:
And the top ten pitchers are:
The rankings look pretty good, eh? They’re mostly consistent with the consensus rankings you can find anywhere on the web. But they can also unearth some hidden gems. Cliff Lee as the projected #1 pitcher? Pretty interesting when he’s being drafted #35 in ESPN drafts (at the time this article is being written).
In the next part of the series we investigate the theories of “replacement level players” and “position scarcity”. We will adjust our calculations for these theories in an effort to better fine tune the rankings.
I’ve included some more in depth discussion below. It’s not necessary to read, but I feel the need to acknowledge some weaknesses in the SGP approach.
LINK TO DOWNLOAD FILE: SFBB Rankings – Part 5.xlsx
I prefaced this SGP discussion by saying this is “my interpretation”. I do this because I’m not a mathematician. And I’m certain that there are mathematical errors or logic flaws in my presentation. But in general, I believe the approach is sound. I am aware that there is widespread dispute in the theory behind standings gain points (some think it makes no mathematical sense). Here are my thoughts on the dispute:
- When I look at what these SGP calculations kick out, they pass the eye test. They look right. They make sense.
- In the article link above, Todd Zola points out that the main flaw in SGP versus more mathematically sound approaches is that stolen bases are undervalued by SGP. Sluggers that steal very little are overvalued by SGP.
- I DO NOT SUGGEST you use SGP as a means of constructing a team. I only use SGP as a vehicle to rank players. Said another way, I don’t build a team thinking I need to draft players that will add up to 12 SGPs in a category. I only use the rankings as a barometer of when I should draft certain players.
- Drafting solely based upon Total SGPs is not wise, as it can lead to an unbalanced team. I prefer to draft with “What it takes to win your league?” in mind. I know that it takes about 200 SB to win the category. So I draft players to reach 200 SB. Not 12 SB SGPs.
- I don’t believe in a purely quantitative and statistical approach to drafting players either. There are a lot of qualitative factors that projections, rankings, SGP, or any other valuation method cannot account for. Age, potential, likelihood of injury, competition for playing time, contract situation, and other factors that need to be taken into account. I create rankings and then adjust those rankings for these multitude of other factors.
With all this in mind. I’m fine with SGP being an imperfect system.Part of being “smart” is knowing when good enough is good enough.
* Note About Pitching Rate Calculations
My approach to calculating SGPs for pitching rate categories is based on the following assumptions:
- 12-team league * 9 pitching spots = 108 pitchers rostered
- To calculate a baseline for the rate statistics, I perform a rough exercise to approximate the 108 pitchers most likely to be rostered. I include the 108 pitchers with the highest strikeout numbers and with a projected ERA below 4.20.
- The top 108 strike out pitchers with an ERA below 4.20 in the Steamer projections have an average of 149 IP.
- This means an 8 pitcher staff has a total of 1,192 IP
- According to Razzball, the average rotisserie team in a 12-team league had an ERA of 3.59 and WHIP of 1.23
- To have an ERA of 3.59 on 1,192 IP assumes 475 ER allowed
- To have a WHIP of 1.23 on 1,192 IP assumes 1,466 BB and H allowed (BB+H)
- This makes the ERA formula = ((475 ER + pitcher’s projected ER)*9/(1,192 IP + pitcher’s projected IP)-3.59)/-0.076
- This makes the WHIP formula = ((1,466 H and BB + pitcher’s projected BB + pitcher’s projected H)/(1,192 IP + pitcher’s projected IP)-1.23)/-0.015
IF YOU’VE MADE IT THIS FAR…
You might be interested to know that I’ve recently completed parts 7 through 10 of the “Create Your Own Rankings” series. These additional segments include the calculation of dollar values and incorporate calculations for keeper and in-draft inflation. All ten parts of the book are now available in Kindle format at Amazon. Please click here to read about these additions to the guide and how you can purchase all 10 parts. My hope is that this series is the best step-by-step guide to calculating SGP-based dollar values and inflation is available anywhere.