## Fantasy Rankings Prep (2 of 3)

In my last article, I went over the initial work for valuing players in a basic fantasy league (12 5×5 teams with 23 roster positions). Each league has its own unique rules so the procedure may need to be adjusted accordingly. Today, I am going to finish the positional rankings and begin to come up with an overall ranking.

By using the Standing Gain Points (SGP) ranking values created in the previous article, here are the pitcher and hitter point equations (for an explanation on SGP read here or here):

Pitcher SPG = W/3.01+SV/6.83+SO/33.3+((3.592-((ER+578.7)*(9/(IP+1329))))/.081)+((1.226-((1629+H+BB)/(IP+1329)))/.0151)

Hitter SPG = HR/7.793+R/20.82+RBI/21.393+SB/8.229+((((1886+H)/(7058+AB))-.2673)/.0018)

With these equations, I like to stop and run a quick value test so I have a general idea of each value’s weight when comparing players. With counting stats, the weights are easy since the average values can be divided by each other. For hitters it works out to about: 1HR ~ 1SB ~ 3 RBI ~ 3 Runs. The problem arises with AVG because it has two inputs, hits and at bats. Take two hitters, one hitting 10 points below the league average AVG with 300 projected at bats and one hitting 10 points above with 200 projected at bats. While both are differ from the mean value the same amount, the player with 300 PA will have more weight and drive down the average more. So for the following values I assumed a 550 AB player, 200 IP starter, 60 IP reliever. A difference of 10 K for a 60 IP reliever is a huge jump therefore the other stats can be off by more.

- 550 AB Hitter: 1 HR = 1.1 SB = 2.7 R = 2.7 RBI = 0.0033 AVG
- 200 IP: 10K = 0.9W = 2.1 SV = 0.180 ERA 0.0375 WHIP
- 60 IP: 10K = 0.9W = 2.1 SV = 0.525 ERA = 0.1166 WHIP

For the next major step, each person has to come up with a projection for each player. Some people believe they should go through every single player and create a projection (see Mike Podhorzer’s book). Also, a person can download and use an industry projection set such as Steamer (Link to Steamer Projections – click on Export Data). I use the combination of 3-4 projections to get a consensus projection and then look for player I disagree with (I mainly look for changes in playing time at this point). Once I have a set of projections in a spreadsheet, I use the above two equations to get the final SPG values. Using these formula’s here are the top rated hitters and pitchers.

Name | AVG | HR | SB | R | RBI | SGP Value |

Mike Trout | 0.309 | 26 | 34 | 119 | 90 | 19.0 |

Miguel Cabrera | 0.328 | 39 | 4 | 108 | 124 | 18.8 |

Paul Goldschmidt | 0.291 | 33 | 14 | 99 | 107 | 16.5 |

Carlos Gonzalez | 0.301 | 29 | 21 | 92 | 96 | 16.3 |

Andrew McCutchen | 0.304 | 24 | 23 | 92 | 96 | 16.2 |

Ryan Braun | 0.299 | 28 | 18 | 88 | 94 | 15.5 |

Chris Davis | 0.268 | 39 | 5 | 95 | 107 | 15.1 |

Yasiel Puig | 0.290 | 26 | 20 | 90 | 87 | 14.9 |

Edwin Encarnacion | 0.274 | 34 | 6 | 94 | 107 | 14.8 |

Jacoby Ellsbury | 0.284 | 15 | 38 | 91 | 64 | 14.5 |

Name | Wins | Saves | K | ERA | WHIP | totalvalue |

Clayton Kershaw | 16 | 0 | 219 | 2.71 | 1.06 | 17.1 |

Yu Darvish | 16 | 0 | 248 | 3.07 | 1.15 | 16.5 |

Stephen Strasburg | 15 | 0 | 210 | 2.98 | 1.12 | 15.3 |

Max Scherzer | 15 | 0 | 222 | 3.29 | 1.14 | 15.3 |

Cliff Lee | 14 | 0 | 201 | 3.04 | 1.07 | 15.2 |

Adam Wainwright | 16 | 0 | 191 | 3.11 | 1.13 | 15.1 |

Felix Hernandez | 15 | 0 | 208 | 3.09 | 1.14 | 15.1 |

Madison Bumgarner | 15 | 0 | 199 | 3.11 | 1.15 | 14.7 |

Chris Sale | 14 | 0 | 211 | 3.27 | 1.12 | 14.6 |

Justin Verlander | 16 | 0 | 201 | 3.30 | 1.17 | 14.6 |

For pitchers, I just divide them into starters and relievers and just put them to the side for now. If a pitcher doesn’t have a defined role, I put them with the starters, but it usually doesn’t matter since they are marginal players anyway.

The one issue with this data is positional “scarcity” is not taken into account. I went ahead and grouped the players into position groupings and ranked the players according to each position in this order (min 5 games at a position).

Catchers

Middle Infielders (2B and SS)

Outfielders

Corner Infielders (1B and 3B)

Utility (The best of the rest)

At this point, I can send the positional rankings to Eno and he can cage back up the socky monkey. From now on, the following steps should be done to get an overall value ranking.

Keep these rankings handy because three items need to be done to .

First, the values need to be adjusted for replacement level at each position. The positional replacement level SGP values with my rankings are:

Catchers: 5.8

Middle Infielders: 8.1

Outfielders: 9.2

Corner Infielders: 8.9

Utility: 8.4

**Note: Originally, I used the incorrect values. Corner Infielders and Outfielders had higher values than the Utility value, so I needed to use the minimum utility value for all three replacement level baselines.**

I went back and adjusted the values so each player grouping had 5.8 as the lowest ranked player. Here are the top 20 final hitter values:

Name | AVG | HR | SB | Runs | RBI | Adjusted Value | Total Value |

Mike Trout | 0.309 | 26 | 34 | 119 | 90 | 16.4 | 19.0 |

Miguel Cabrera | 0.328 | 39 | 4 | 108 | 124 | 16.2 | 18.8 |

Paul Goldschmidt | 0.291 | 33 | 14 | 99 | 107 | 13.9 | 16.5 |

Carlos Gonzalez | 0.301 | 29 | 21 | 92 | 96 | 13.7 | 16.3 |

Andrew McCutchen | 0.304 | 24 | 23 | 92 | 96 | 13.6 | 16.2 |

Ryan Braun | 0.299 | 28 | 18 | 88 | 94 | 12.9 | 15.5 |

Chris Davis | 0.268 | 39 | 5 | 95 | 107 | 12.5 | 15.1 |

Yasiel Puig | 0.290 | 26 | 20 | 90 | 87 | 12.3 | 14.9 |

Buster Posey | 0.306 | 20 | 3 | 80 | 87 | 12.2 | 12.2 |

Edwin Encarnacion | 0.274 | 34 | 6 | 94 | 107 | 12.2 | 14.8 |

Jacoby Ellsbury | 0.284 | 15 | 38 | 91 | 64 | 11.9 | 14.5 |

Prince Fielder | 0.288 | 31 | 1 | 94 | 106 | 11.7 | 14.3 |

Joe Mauer | 0.309 | 14 | 4 | 83 | 81 | 11.6 | 11.6 |

Troy Tulowitzki | 0.302 | 28 | 4 | 87 | 97 | 11.6 | 13.9 |

Carlos Gomez | 0.262 | 22 | 36 | 78 | 75 | 11.5 | 14.1 |

Wilin Rosario | 0.280 | 27 | 5 | 69 | 82 | 11.5 | 11.5 |

Adam Jones | 0.285 | 28 | 12 | 83 | 92 | 11.4 | 14.0 |

Adrian Beltre | 0.300 | 29 | 1 | 89 | 100 | 11.4 | 14.0 |

Giancarlo Stanton | 0.271 | 36 | 4 | 89 | 99 | 11.4 | 14.0 |

Joey Votto | 0.304 | 25 | 5 | 90 | 97 | 11.3 | 13.9 |

These values are far from my draft order and I will go over a draft plan with them in tomorrow’s article.

The second item I do with the rankings is create a graph with the rank on the x-axis and the adjusted SGP value on the y-axis. Here are overall and outfield graphs.

What I am looking for is huge drops in talent from one player to the next such as happens from the 13th to 14th outfielder spots or after Trout and Cabrera. I take this information and mark on my draft sheet where the talent drops off at each position and with the overall rankings. If an outfielder and second baseman have the same value, but the next second baseman’s value is significantly lower and three outfielders are almost the same, take the second baseman and hope one of the outfielders makes it back to your next pick.

The third and final item is to look over the rankings for any issues. Get the rankings finallized before moving on. A few items to check for:

- Make sure foreign players on ranked like Jose Abreu. If the player doesn’t have a projection, it is time to do your best to create one.
- Adjust playing time for any recently injured players like Cole Hamels or Hisashi Iwakuma.
- Look to see if any player sticks out and you don’t feel right about the ranking. If you use a projection, go back and see if you disagree with it and adjust the player’s production
**. Don’t and I repeat don’t just change the ranking.**You may feel good about the player, but it doesn’t mean you should over pay for less production. - Look to see if any players were not included and you feel they should be. Again, see if their projection needs adjusted.

Well, I am finally done for today and let me know if you have any questions. Tomorrow, I will look at how I set up my plan when it comes to drafting.

Print This Post

For Joe Mauer, it appears your projections are much more bullish than Steamer or even the Fans. Did you adjust that or is that really the average for 3-4 systems? What players did you make adjustments that didn’t involve playing time? great stuff thx

I think Steamer got re-adjusted after I ran the numbers. The catchers I don’t like their rankings, but will work good with tomorrow’s article on a draft plan.

The Mauer ranking is being driven by his fatally flawed positional adjustments.

How do you compare pitchers to hitters in adjusted vaue? I could never get past how starters affect each category so much more because there are fewer of them. Other than injury risk, I never understand why they aren’t more valuable because of that? thx

Tomorrow’s article.

awesome. just as an example, comparing Kershaw to Cabrera. Both contribute to 4 categories but Kershaw only competes with effectively 6-7 other guys on average for points, while Cabrera competes with 15. Or taken to extreme, if I only got to start one pitcher, Kershaw would be everyone’s number one pick because one would win 4 categories. Excited for tomorrow since always confused me.

This is one advantage of a standings points gained method as opposed to the much rougher (but not league specific) z-score method. A point is a point, and if you think a given pitcher is worth 5 standings points above what you could get for free on the waiver wire, whereas a position player will gain you 6 points, it’s apples to apples.

One thing you can do (and this is easier if you know historical numbers for a given league so have accurate estimates for how a given impact to a category will result in a change in points) is to actually calculate the contribution to a category based on projected innings pitched.

For example, my league had a 1,250IP limit, with most teams finishing around 1,200IP +/- 50 innings. So what I did to grade each pitcher in rate stat contribution was take 1,000 IP of replacement level and then add the projected pitcher performance, and then calculate the delta.

So for example, let’s say replacement level was a 4.50 ERA. If you combined 1,000 innings of 4.50 ERA with a pitcher projected to produce 225 innings of 3.00 ERA, that pitcher would lower the team ERA to 4.22. So he would be worth a net change of 0.28 to team ERA, and if you know the average standings gap you can translate that in to a “standings points gained” metric.

I did this for all projected pitchers in rate stats, not only ERA and WHIP but also K/9 (since the IP limit was so low I really cared about how many strikeouts per inning the pitcher would contribute). If you know that substituting 200 replacement level innings with pitcher A will add 0.25 points to ERA, 0.02 to WHIP, and add 35 net strikeouts, it’s easy to scale that to standings points and create a 3-category “stuff” score. Wins and Saves are tougher to integrate since projections are largely worthless, but that’s another story.

You pretty much just need to have a plan and stick to it on pitchers. The best ones usually end up bargains if they stay healthy relative to contribution. It’s the same concept of pitching/hitting splits in auctions. Pitchers make up 50% of the value in points but the split is 33/67 on average (pitching/hitting).

A split I’ve used for a while with good success is 4/1, 3/2 (one closer) 3/2, 2/3 then best available (hitter/pitcher) It’s a little pitcher heavy but that’s where the values are anyways (but I still

Don’t take one in the first round).

To answer your question directly, you can’t really do it because what actually happens at drafts does not line up with reality of values. It’s just a quirk in what real leagues do vs what is logical. I generally keep pitchers and hitters separate and follow a similar draft plan to the above in mind when drafting.

are 1B overrated since they are prob less valuable than 3B and counted the same in here?

With a CI position, 1B will have a higher value. Without one, their value drops quite a bit. 3 OF vs 5 OF is also a huge difference.

I just meant 1B vs 3B. If there are more quality 1B than 3B, doesnt that make each 1B worth less? As a real world example, more people are excited about Miggy playing 3B than 1B, that should increase his value. It appears you weight them the same.

“I went back and adjusted the values so each player grouping had 5.8 as the lowest ranked player.”

How? Did you tweak the formulas? Did you find a simple multiplier for each grouping that matched the bottom player to 5.8?

He subtracted the difference. I think making this adjustment is the same as saying the “12th” best CI has the same value as the “12th” best C, and that the “12th” best catcher has more value than the “13th” (below replacement level) CI.

Is that really the best way to adjust for this?

Yeah, that’s my follow up, I guess. I’d like some reasoning for it.

I adjusted the the replacement level player for each position to 5.8 by subtracting the replacement level for the position. With OF it was 3.4, so Trout value losses 3.4 SGP off his total (19 down to 15.6)

You may walk through this in article three but is there a specific method for how you adjust players to replacement level?

you just subtract the replacement value from the player’s value.

Interesting read and similar to what I do. Some questions:

1) it seems weird to me that you use different values for CI/OF and Utility. If your replacement level CI/OF is above the starting value for a UTL, they will no longer be available, and hence not a true replacement level. I use a similar system to what you do, but I pretty much assume that most of UTL will be MI/OF types. It seems weird that an elite CI would be more valuable in your utility spot than in your 1B/3B spot.

2) Do you do anything whatsoever to account for playing time projections? This has always been my biggest complaint with your rankings last year. Just because steamer has Car Gon projected for only 130 games doesn’t mean you will have an empty spot for the other 32. It seems much more sensible to project Car Gon’s value as 130 games of Car Gon and 32 (or less if ya wanna penalize) games of replacement level production. This ends up making a huge difference, especially since some systems seem to have random games played projections.

3) I’m confused why you set replacement level for 5.8. It won’t matter in a snake draft type league, but in an auction league it is essential that replacement level be considered 0. If not, your dollar scale gets thrown off and you will be under-valuing the top end players.

should read ” pretty much assume that most of UTL will be CI/OF types”

assuming the projections all had Car Gon for only 130 games (no clue what they really had), his value would go up 1.8 pts when adding in replacment level projections for the games he misses.That is nearly a 14% increase.

1. You are right. I need to adjust the values.

2. This may be the hardest item to adjust for. Let me think of a good way to do it. Some leagues it doesn’t matter because the players on the waiver wire are crap.

3. Agree in an auction. I could set the baseline to 100, it really doesn’t matter in a draft.

Regarding #2, your hypothesis is rarely true unless you’re in a daily league with benches. If you’re in a weekly league like I am it’s only true if Cargo goes on the DL and he goes to the DL on a Sunday. Otherwise, you get no replacement level production. If CarGo jams his thumb and sits on the bench for a few days I get nada. So to account for injury I don’t have a lot of great options in player valuation. I usually add a bit of a fudge factor for guys with health issues, but it washes out in the end and probably isn’t worth it.

yeah #2 is def league specific. That said, I averaged 154 games played for every no-catcher position slot last year (1 man bench, daily line-up changes, bi-weekly adds). Steamer doesn;t even have most regulars reaching that many games, yet alone the injury risks.

Those graphs are really remarkable. Most years you want a late pick because to fringe 1st rounders > 1st overall + thrid rounder. But Trout/Cabrera are worth so much more than anyone of the board, it is a bit insane.

This is almost never true btw. Based off of whatever projection system you use, if you just go BPA for the first 4 rounds the expected values will be close to a 1 to 12th picks ranking.

This is some excellent work, thank you for putting it together. If I were in an OBP only league, would I just substitute AVG data for OBP data to get my custom league rankings?

you would also need to change ABs to PAs and the 1886 and 7058 to the number of times reached base and the number of PAs. and probably the weight as well.

Jeff-

For the positional replacement value I use the lowest valued player at each position (as opposed to your broader grouping) based on league size (so the value of the 24th catcher in a 12 team 2 catcher league). I then deduct that value from the original SGP value to derive the marginal difference over presumably, the lowest valued draftable player.

Your method looks a little different but seems to get to a comparable place. Am I missing something or is there any flaw in my methodology?

Yours will work basically the same. With MI and CI, I group the players together. I do need to make sure their are 12 SS and 2B in the 36 MI grouping, but I have never had that problem.

No Adam jones?

Next player.

Some people have been asking about the meaning of “replacement level”. I think one key point that may help here is that, in order to define a replacement-level player, you have to define your player pool.

So in a 12-team league with 5 OFs, you’ll have 60 OFs in your pool – but you also have to bake in a little bit extra for the UTIL spot. You can judge based on your projections, but basically you also need to divide those 12 extra UTIL spots across your CI/MI/OF/C – so bumping up, in this example, your OF pool to like, say, 65 or 66 players.

Then, after you’ve projected the value for your entire player pool (and even a little over), you see what the replacement-level value is = it’s the last player at each position – and you can then subtract this value from every other player at each position.

My explanation was probably overlong, but hope that helps.

Can we define “replacement value” in fantasy as “best waiver wire player value available” for the position in question? Can we agree that there will NEVER be a case where the best available utility player is WORSE than the best available OF?

I think it is much more prudent to treat CI, OF, and UTL as the same, and calculate the replacement value based off the n+1 player avaliable (where n is the number of roster spots on all teams for the positions in question). Just to be sure, we can make sure that the nth best 3B is included. But regardless, the replacement value of EVERY position should NEVER be higher than that of UTL. It can be lower, but not higher.

What I do is take a given projection system and rank order the players by PA. I then fill each slot on the roto teams from top to bottom based on this rank-ordered list. When there are no more 1B/DH/UTIL slots, for example, the next 1B is not assigned to a team. That player pool can then be used for any number of useful analyses.

This also performs any necessary positional valuation corrections (which are typically modest).

Am I doing the math wrong, or do these rankings rely on the assumption of a normal distribution in a number of places where the distribution is not at all normal?

The stolen base statistic is almost bimodal, with a few players who steal a lot and a ton who steal fewer than 10. Conversely, the HR stat conforms to a pretty normal distribution.

There’s also an assumption of normal distribution in the SGP stat, since it just takes the mean distance between point ranks. In reality, we all know that the guys in last place tend to give up as the season goes along while the people at the top get stronger through trades. As a result, it’s easier to gain points 1-6 than points 7-12 in a standard 5×5 12-team league.

If feel like taking the average range within each sigma per stat and treating it like a building block in a combinatoric genetics algorithm might produce a better understanding of each player’s roto value. Thoughts?

This is why SGP is fundamentally flawed.

Roto is a zero sum game–the better way to rank players is to determine the actual share of production that they contribute.

No only is it zero sum, but it’s Bayesian. The values of each player change each time someone is taken off the board or picked up from the waiver wire.

Bayesian optimization model> Genetic?

Yes, although on a practical level by the time positional valuations change substantively based on players selected I think you’re generally in a place where you shouldn’t necessarily be guided by highest-projected-value completely (e.g., better to draft high upside lottery tickets in later rounds).

I was trying to stay away from the gory math, but I will get into it here. I used the slope method to for equation vales instead of the average differences. Lets go look back and look at home runs.

Top value is 293 and low is 191. I difference of 102. So the average difference is 102. The 102 value is divided by 11 (11 chances to move up or down, not 12) is 9.3.

You are right, the top values are too far for norm as seen here:

I use the slope value, 7.8. Now, one other method is to remove the top and bottom values and then use that value. 272-208=64. 64/9 = 7.1.

Each method is up to you.

“The problem arises with AVG because it has two inputs, hits and at bats. Take two hitters, one hitting 10 points below the league average AVG with 300 projected at bats and one hitting 10 points above with 200 projected at bats. ”

The better answer to this is to convert average to a counting stat. For each player determine then number of expected hits that would occur if their batting average was the same as the average of the player pool for the league. Then subtract their projected number of hits. This gives you a counting measure.

Hint: it turns out that hits above average are one of the more scarce statistics–and that hits below average are really tough to balance.

I found that AVG/OBP>Steals>RBI>HR>Runs as far as scarcity goes. Does that look about right?

Steals are funny–I’m a pretty heavy SAGANOF guy so I tend to discount them in rankings. With the rest, it’s definitely AVG above everything else (which is a real market imperfection in ranking systems and one that is very useful to exploit). With the compression of offense, HRs are less valuable then they once were.

At the end of the day, though, I’d argue the most important statistic is actually PA–how many times will your drafted guy have a chance to generate counting stats.

Blue – I agree. I try to do better in AVG and try to make up stats in other categories. If I have to, I just trade of SB or HR later.

Just looked at the ranking.

Completely and totally lacks face validity. Buster Posey at 6? Joe Mauer at 10? Wilin Rosario at 13????

You pick those guys while Joey Votto and Adrian Beltre are on the board?

Way to tank your league if you do.

And Cano??? You pick those guys before Cano?

Cano is getting killed by the R ad RBI categories (and no SB). His line is worse than Votto’s total. The lack of lineup around by be his undoing.

If the claim was that the method generates a draft order, then sure, it has no face validity. But the following quote from the article seems to clarify that’s not the intended purpose.

“These values are far from my draft order and I will go over a draft plan with them in tomorrow’s article”

Also this:

“Don’t and I repeat don’t just change the ranking. You may feel good about the player, but it doesn’t mean you should over pay for less production.”

Absolutely false. Totally and completely false. It is VERY OFTEN the case that the best choice is a player with much higher variance in prediction accuracy as opposed to a player who might be marginally better but with little variation.

Yes to no.

I have the mindset of deep leagues where about every regular gets taken, so if a player 0’s out, there are no position players available on the waiver wire.

I could see it with pitchers who are more easily replaced.

I am just getting started on SGP so this may be a stupid question, but why do you use a different IP number for the ERA portion of the pitcher SGP formula than the IP you use for the WHIP portion of the formula? I would think the IP would be the same for both.

Good catch, they should both be 1329.

Also, your ER in your formula appears to be wrong. 578.7 ER in 1329 IP yields an ERA of 3.919, not 3.592. Actually, the original # of IP you had for the WHIP formula (1450) would yield an ERA of 3.592 for 578.7 ER. The figure of 530.4 ER would yield an ERA of 3.592 for 1329 IP.

May be way too late, but i used 530.4 in the ERA portion instead of 578.7 and got the correct results when using 1329 IPs.

Outside of catchers no positional adjustment is necessary.

Great articles. Can’t wait for tomorrow. I am almost done with my SGP values. I have a question about projections. I am using the average of four projection systems, (Steamer, RotoWorld, RotoWire, and ESPN) I just enter all the numbers and excel shoots out the average projection. Is this wrong? Should I go through and pick the consensus ranking rather than averaging all four due to the large variation. Or do you think the averages will work.

It would seem that your SGP component for ERA needs a look as the better the pitcher’s ERA, the lower his SGP is (3.09 ERA has lower SGP than a 3.23 ERA with the same IP for both)

Nevermind, ignore my post. I blame the snow

Are there any tricks for merging player data from different projection systems? For example, I’ve got a spreadsheet of Steamer data and a spreadsheet of Oliver data. Is there any shortcut to combining/averaging the data per player?

The players will have the same “playerid” if you export both the streamer and oliver projections from fangraphs. From there, you can either copy both sets of data into one spreadsheet and do a pivot table by “playerid” to obtain the total and divide by however many datasets you are combining. Or you could work off of your first dataset (lets say streamer) and vlookup by “player” id to create new columns with projections from the 2nd data set (oliver). If you do the second route, you could create new columns to calculate the average.

I hope this helps.

I hope that helps.

Excellent. Thanks.

I am having an issue in a 10×10 (R/RBI/HR/SB/AVG/H/2B/3B/BB/SO | IP/W/L/HR/BB/K/SV/ERA/WHIP(K/9)) category league. I went back and tracked the 3 year history of the league to produce as accurate of coefficients for the format as possible. When I enter projections for hitters and pitchers there is a huge difference between my hitter and pitcher values. The hitters are worth much, much more. Just to put it into perspective it projects Matt Joyce as being more valuable than Clayton Kershaw. Is there some sort of weighting I should be doing to counteract this? My best guess is that it is caused by the difference in negative categories between hitting and pitching. Hitting only has SO’s while pitching has L, HR, and BB. Any help for fixing this issue would be greatly appreciated.

Does fangraphs have a table that shows playerid and the player’s position? When I export the Streamer projections to excel it does not provide the player’s position so it is not easy to rank by position.

If anyone has run into this same problem and has a workaround or has already manually created a table to show position by playerid it would be greatly appreciated. If not, I guess I’ll do this manually for a few hundred players.

Thanks in advance.

Mark

OK I just came across this and ran the formulas, the numbers were a bit different and one thing I noticed was how highly RP came out in the rankings. Anybody else noticed this?

Why is it that the Steamers projections for pitchers shows the majority of starting pitchers at 192 innings and relievers all at 65 innings? Those aren’t the numbers Jeff is showing above……is he using a different projection system for the pitchers? Is there one that’s considered the “best”??? Thanks.

I’m also curious if we’re going to get to the part where we convert the SPG to actual Auction Value Dollars….

I think I’m having an issue with the pitcher SGP formula. Not a math nerd and the parentheses are not coming out quite right when I run it. Can you break this down a little for the rubes.