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.

RotoWire has the best fantasy baseball tools on the web.
Get Our 2018 MLB Draft Kit Now

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:

Position Subset AB BA H RUNS HR RBI SB
All H TOTAL 87,898 0.266 23,413 12,905 3,788 12,554 1,520
STARTERS 64,111 0.269 17,247 9,553 2,774 9,182 1,150
RESERVES 2,759 0.254 700 358 116 388 50
UNDRAFTED 21,028 0.260 5467 2,994 898 2,984 320
REPLACEMENT VALUE 23,787 0.259 6167 3,352 1,014 3,372 370
All H, no C TOTAL 78,396 0.268 21,024 11753 3,424 11,235 1,472
STARTERS 57,480 0.270 15,548 8,734 2,508 8,211 1,111
RESERVES 2,464 0.256 632 331 103 347 50
UNDRAFTED 18,452 0.263 4,844 2688 813 2,677 311
REPLACEMENT VALUE 20,916 0.262 5,476 3,019 916 3,024 361
C TOTAL 9,502 0.251 2390 1,152 364 1,319 48
STARTERS 6,631 0.256 1,698 819 266 971 39
RESERVES 295 0.231 68 27 13 41 0
UNDRAFTED 2,576 0.242 623 306 85 307 9
REPLACEMENT VALUE 2,871 0.241 691 333 98 348 9
1B TOTAL 13,280 0.267 3,541 2,019 701 2,131 102
STARTERS 8,572 0.265 2,271 1,333 438 1,332 88
RESERVES 413 0.259 107 63 23 62 2
UNDRAFTED 4,295 0.271 1,163 623 240 737 12
REPLACEMENT VALUE 4,708 0.270 1,270 686 263 799 14
2B TOTAL 12,156 0.272 3,307 1,771 392 1,515 308
STARTERS 9,782 0.276 2,698 1,434 312 1,184 233
RESERVES 205 0.244 50 26 8 30 4
UNDRAFTED 2,169 0.258 560 311 72 301 71
REPLACEMENT VALUE 2,374 0.257 610 337 80 331 75
3B TOTAL 11,403 0.269 3,067 1,684 584 1,828 143
STARTERS 9,530 0.276 2,634 1,404 471 1,537 123
RESERVES 731 0.257 188 102 32 107 11
UNDRAFTED 1,142 0.215 246 178 81 184 9
REPLACEMENT VALUE 1,873 0.232 434 280 113 291 20
OF TOTAL 31,823 0.266 8,465 4,911 1423 4,553 695
STARTERS 23,845 0.267 6,371 3,716 1,098 3,452 512
RESERVES 367 0.221 81 58 16 53 10
UNDRAFTED 7,611 0.264 2,013 1,137 309 1,048 173
REPLACEMENT VALUE 7,978 0.262 2,094 1,195 325 1,101 183
SS TOTAL 9,382 0.272 2,555 1,324 314 1,170 224
STARTERS 5,480 0.275 1,508 811 180 679 155
RESERVES 667 0.276 184 74 23 84 23
UNDRAFTED 3,235 0.267 863 439 111 407 46
REPLACEMENT VALUE 3,902 0.268 1,047 513 134 491 69
DH TOTAL 352 0.253 89 44 10 38 0
STARTERS 271 0.247 67 36 9 27 0
RESERVES 81 0.272 22 8 1 11 0
UNDRAFTED 0 0.000 0 0 0 0 0
REPLACEMENT VALUE 81 0.272 22 8 1 11 0

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:

Position Subset IP ERA ER W WHIP W+H K SV
All P TOTAL 15,906 3.97 7,025 1,051 1.26 20,058 15,843 893
STARTERS 9,840 3.77 4,118 659 1.23 12,084 10,234 638
RESERVES 1,590 4.02 711 104 1.28 2,030 1,452 14
UNDRAFTED 4,475 4.41 2,194 288 1.33 5,943 4,155 241
REPLACEMENT VALUE 6,065 4.31 2,905 392 1.31 7,973 5,607 255
SP TOTAL 13,428 4.07 6,080 891 1.28 17,137 12,967 6
STARTERS 8,445 3.85 3,610 574 1.24 10,466 8,508 1
RESERVES 1,505 4.05 677 98 1.29 1,935 1,342 1
UNDRAFTED 3,479 4.64 1,793 219 1.36 4,736 3,117 4
REPLACEMENT VALUE 4,983 4.46 2,470 317 1.34 6,671 4,459 5
RP TOTAL 2,478 3.43 945 160 1.18 2,921 2,876 887
STARTERS 1,395 3.28 508 85 1.16 1,618 1,726 637
RESERVES 85 3.59 34 6 1.11 95 110 13
UNDRAFTED 996 3.62 401 69 1.21 1,207 1,038 237
REPLACEMENT VALUE 1,081 3.62 435 75 1.20 1,302 1,148 250

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.