The RotoWire Blog has been retired.

These archives exist as a way for people to continue to view the content that had been posted on the blog over the years.

Articles will no longer be posted here, but you can view new fantasy articles from our writers on the main site.

NFBC Replacement Value

What's more valuable, 200 strikeouts from a starting pitcher or 37 home runs from an outfielder? The answer isn't obvious, and it's actually not knowable without having information about the league context. The context in which I've been most interested lately is the NFBC format, in this case the 12-team. And before we can answer the question even for that specific format, we need to understand the concept of replacement value.

Replacement value is loosely the type of production at a given position that's freely available on the waiver wire. For example, if you have an OF who hits five HR over the course of the year, it would be inaccurate to believe he were helping you slightly in the HR category if the top-10 outfielders on the waiver wire were averaging 10. On the other hand, if you had an OF who hit 30 HR, and replacement value were 10 HR, then he is in fact helping you, but only by 20 HR. Put differently, he's 20 HR above replacement.

That's all well and good, but in practice figuring out what constitutes replacement value isn't so easy.  For example, let's say you want to rank players according to the Steamer Projections, and after sorting them into a rough list (I use a simple, imprecise formula that gives roughly equal weight to 33 HR, 90 RBI, 90 runs, 30 SB and a .300 average), you look for where replacement starts and ends.

Removing the catchers (who are a different animal), there are 144 other hitting slots in an NFBC-style 12-team league. You could just make player 145 the replacement value because he's the first bench player, i.e., he's literally the first replacement if you were to draft according to the rough formula-generated list. But that player might have seven HR, 23 steals and 75 runs, and we can't make our replacement level stat-line so run- and steal-heavy, or it'll distort our valuations. One way around this - and the one I typically chose - is to take the average of a number of players around replacement level. But which ones? At first I averaged Player 145 to Player 156, i.e., an extra round beyond the starters, but that didn't work well because you could still have too many low-average power guys or too many low-power SB players in the sample. So I extended the range from 145 to 168 to make it less likely we'd have a skewed representation. It was far from perfect, but it was better.

Once I had each category's replacement value, I could subtract it from everyone's projection, adjust for at-bats (in average) and innings pitched (in ERA and WHIP), figure out how many standard deviations above/below replacement each player was in each category and add them together for a total. Then I re-sorted my rankings, locked in the new replacement value/standard deviation numbers and ran it again. Now I had what looked like solid rankings (once I tweaked closers and catchers to comport with the way the NFBC is played.)

But something was wrong. Replacement value was still an estimate, and probably not a great one. The Steamer projections are fairly conservative and correctly so. They know not that many players will stay healthy and keep their jobs for a full 150 games. Most of the players in the replacement range only have 450-500 at-bats to generate their stat-lines. Which is a problem if you're after value-above-replacement in a format where you can sub players into your lineup that are getting full-time at-bats for extended stretches and drop players who miss time with injuries or lose their jobs. Put differently, pegging replacement value to a range of individual stat projections likely undersold actual replacement value by a decent margin because we're constantly mining the best months of each player's season, e.g.. Rhys Hoskins, Matt Olson down the stretch.

To remedy that, I extended my replacement-level index into the active player pool - I'd start at say hitter No. 121 and go to 168, getting a bigger sample to smooth out the category anomalies in the process, but it was hardly a rigorous way to go about it.  And while there's nothing wrong with making rough estimates, if you want to get precise, it gets complicated. The NFBC just doesn't play out like a static projections-based model.

To attack the problem of NFBC play more directly, I dove into my two leagues from last year and mined as much information as I could. For starters, I wanted to see the category targets you need to reach in order to contend in the overall contest. Next, I wanted to understand generally how many innings pitched and at-bats the best teams were accumulating in total over the course of the season.

I also looked at each team in my league's player stats and matched them up with the draft results. I could tell which players were original starters, which were original reserves (Rounds 24-30 for the most part, though some people drafted a catcher or two in those rounds and bench hitters earlier) and which were undrafted waiver pickups. I didn't differentiate between players who were drafted by someone else and dropped and those who were undrafted. If you picked up a player from the waiver wire, he was quite literally a replacement for you irrespective of how he became available.

I was able then to get a better sense of what replacement value (the total of all reserves plus all pickups) looked like in people's lineups and how it actually played out over the course of the year. Instead of inventing replacement value based on fictional projected stat lines, I got a look at it in actual practice during a full season.

Here are the numbers from one of the leagues:

PositionSubsetABBAHRUNSHRRBISB
All HTOTAL87,8980.26623,41312,9053,78812,5541,520
STARTERS64,1110.26917,2479,5532,7749,1821,150
RESERVES2,7590.25470035811638850
UNDRAFTED21,0280.26054672,9948982,984320
REPLACEMENT VALUE23,7870.25961673,3521,0143,372370
All H, no CTOTAL78,3960.26821,024117533,42411,2351,472
STARTERS57,4800.27015,5488,7342,5088,2111,111
RESERVES2,4640.25663233110334750
UNDRAFTED18,4520.2634,84426888132,677311
REPLACEMENT VALUE20,9160.2625,4763,0199163,024361
CTOTAL9,5020.25123901,1523641,31948
STARTERS6,6310.2561,69881926697139
RESERVES2950.231682713410
UNDRAFTED2,5760.242623306853079
REPLACEMENT VALUE2,8710.241691333983489
1BTOTAL13,2800.2673,5412,0197012,131102
STARTERS8,5720.2652,2711,3334381,33288
RESERVES4130.2591076323622
UNDRAFTED4,2950.2711,16362324073712
REPLACEMENT VALUE4,7080.2701,27068626379914
2BTOTAL12,1560.2723,3071,7713921,515308
STARTERS9,7820.2762,6981,4343121,184233
RESERVES2050.24450268304
UNDRAFTED2,1690.2585603117230171
REPLACEMENT VALUE2,3740.2576103378033175
3BTOTAL11,4030.2693,0671,6845841,828143
STARTERS9,5300.2762,6341,4044711,537123
RESERVES7310.2571881023210711
UNDRAFTED1,1420.215246178811849
REPLACEMENT VALUE1,8730.23243428011329120
OFTOTAL31,8230.2668,4654,91114234,553695
STARTERS23,8450.2676,3713,7161,0983,452512
RESERVES3670.2218158165310
UNDRAFTED7,6110.2642,0131,1373091,048173
REPLACEMENT VALUE7,9780.2622,0941,1953251,101183
SSTOTAL9,3820.2722,5551,3243141,170224
STARTERS5,4800.2751,508811180679155
RESERVES6670.27618474238423
UNDRAFTED3,2350.26786343911140746
REPLACEMENT VALUE3,9020.2681,04751313449169
DHTOTAL3520.253894410380
STARTERS2710.24767369270
RESERVES810.2722281110
UNDRAFTED00.00000000
REPLACEMENT VALUE810.2722281110

A couple notes: the DH position consisted of two players, Kendrys Morales and Victor Martinez. Obviously many more players were used at utility, but I don't think the distinction is important. If a drafted position player was originally slotted to start anywhere including utility he got stats as a starter. If not, his stats were as a reserve or eventually as someone's waiver pickup, i.e., it doesn't blur the distinction between a paid-for starting commodity at the draft table and a replacement whose numbers contributed to replacement value.

Also, note how few reserves actually contribute to teams - most are dropped before long, and there are about eight times as many undrafted at-bats as reserve ones.

(I'll go deeper in a subsequent post to look at the replacement value stat line, by position and per roster slot when I get back from vacation in a week, but I wanted to put out the aggregate data for now.)

Let's take a look at the pitchers:

PositionSubsetIPERAERWWHIPW+HKSV
All PTOTAL15,9063.977,0251,0511.2620,05815,843893
STARTERS9,8403.774,1186591.2312,08410,234638
RESERVES1,5904.027111041.282,0301,45214
UNDRAFTED4,4754.412,1942881.335,9434,155241
REPLACEMENT VALUE6,0654.312,9053921.317,9735,607255
SPTOTAL13,4284.076,0808911.2817,13712,9676
STARTERS8,4453.853,6105741.2410,4668,5081
RESERVES1,5054.05677981.291,9351,3421
UNDRAFTED3,4794.641,7932191.364,7363,1174
REPLACEMENT VALUE4,9834.462,4703171.346,6714,4595
RPTOTAL2,4783.439451601.182,9212,876887
STARTERS1,3953.28508851.161,6181,726637
RESERVES853.593461.119511013
UNDRAFTED9963.62401691.211,2071,038237
REPLACEMENT VALUE1,0813.62435751.201,3021,148250

Again, I'll dive deeper into the individual numbers next week, but you can see how badly undrafted pitchers killed people's ERA and WHIP last year. With home runs and offense up, streaming two-start starters was a dangerous game.

Keep in mind also this is only one 2017 league, and not necessarily representative of every league, (I will look into the other one in the next couple weeks,) but I suspect the findings will hold. Every league had teams that rostered Aaron Judge, Tommy Pham, Whit Merrifield and Justin Smoak. Every league had someone who got pounded by Adam Wainwright or Jharel Cotton. So while I don't want to read too much into these findings, if the second league is roughly similar, I'll feel confident I have a grasp on what replacement level looks like - at least in the aggregate.