Wins above replacement
ffwar values every fantasy football player by the thing you actually care about: how many wins he added to the teams that started him, compared with what they'd have got from the waiver wire. And it does it for your league's settings.
Examples below use 2023, a 12-team half-PPR league with one QB, unless noted.
Why not total points or PPG?
Points are what the scoreboard counts, so ranking players by points feels natural. It's the wrong question, though. You don't need a player's points; you need the points he scores above whoever else you could have started.
Positions aren't equal
In 2023 the best available quarterback on waivers scored about 17 points a week in a 1QB league. The best available running back scored about 8. So every QB starts with 17 points that any team could have had for free.
| 2023 | Pos | Points | Points rank | WAR | WAR rank |
|---|---|---|---|---|---|
| Josh Allen | QB | 386 | 1 | 1.30 | 6 |
| Christian McCaffrey | RB | 358 | 3 | 2.55 | 1 |
| Jordan Love | QB | 312 | 6 | 0.09 | 100 |
| Raheem Mostert | RB | 255 | 18 | 1.34 | 4 |
Points per game forgets the games you didn't get
PPG fixes nothing about position, and it creates a new problem: it pretends missed games don't exist. When a player sits, you don't score zero, but you don't score his average either. You start a replacement.
Joe Flacco averaged 21.8 points over five December games in 2023, 4th-best of any player. Over the season he added almost nothing (0.03 WAR), because for the other twelve weeks he wasn't playing and wasn't on rosters. Kyren Williams missed five games and still finished 5th in WAR: in the twelve he played he was far above replacement, and in the five he missed his teams simply started someone else.
Points aren't wins
The last step turns points into wins. A typical team's weekly score varies by about 23 points, and the first points above replacement swing more games than the last: a 40-point blowout week is worth less than four 10-point edges. ffwar converts each week's points above replacement into the chance it flipped a head-to-head result, using how spread out scores are in leagues like yours.
Why start % matters
Even points above replacement isn't enough. Points only count if they're in your lineup. A 40-point game on your bench wins you nothing, and the best weeks of many players came exactly when nobody played them.
ffwar learns, from real lineups in about 14,000 Sleeper leagues, the chance that a typical manager in a league like yours started each player each week, using only what was known before kickoff: projections, recent form, depth at his position. Each week's value is weighted by that chance.
| 2023 | Week 2 | Week 3 | Week 4 | Week 5 |
|---|---|---|---|---|
| Points | 1.4 | 49.3 | 25.5 | 21.0 |
| Started in | 2% | 2% | 69% | 92% |
The same thing sinks some big point totals:
- Jordan Love, 2023: 312 points, but fewer than half of leagues started him in all but three weeks, and his hot stretch in weeks 10–12 came in only 9–21% of lineups. That, plus the QB replacement level, leaves him at 0.09 WAR.
- Baker Mayfield, 2024: 359 points, 5th overall, yet about half of them were scored in weeks he wasn't started (a 29.7-point week 1 in 9% of lineups). He finishes 47th in WAR.
- George Pickens, 2023: 177 points, but his 33.5-point week 16 came in only 20% of lineups and many of his starts were duds. 0.05 WAR.
Start % also works the other way. A player whose managers kept starting him through bad weeks is charged for those weeks, which is how a player can end with negative WAR: he cost the teams that played him.
Fitted to your league
A player's value depends on how many teams there are, how many players start at each position, the bench, and the scoring. ffwar recomputes everything for the settings you choose, or for your own Sleeper league.
- Points under your scoring. Every player-week is rescored from raw stats with your league's scoring rules.
- Start % for your league. The start model reads each player's rank against how many players your league starts at his position: league-wide, after filling every team's slots and flexes with the best available. RB24 is a sure starter in a 14-team league with two flexes and a fringe one in a 10-team league with none. Because it's learned in those relative terms, it carries over to combinations of settings that are rare in the data.
- Replacement level for your league. Each week, ffwar finds who would really be left on waivers once every team has rostered its players, and how many points the best of them scored. Replacement only goes down as a league starts more players at a position. In superflex, where teams start two quarterbacks, it falls from about 17 to 13 points.
- Wins, not points. Weekly points above replacement are turned into wins using how much team scores vary in leagues like yours, including the extra game against the league median if you play one.
| 2023 replacement, PPG | QB | RB | WR | TE |
|---|---|---|---|---|
| 10 teams, half PPR | 17.2 | 9.9 | 9.9 | 7.4 |
| 12 teams, half PPR | 16.9 | 8.0 | 9.1 | 6.8 |
| 12 teams, PPR superflex | 12.8 | 8.2 | 9.7 | 7.9 |
Seasons from 2020 on are covered, through week 17 (week 16 before 2021) so fantasy playoffs count. The current season updates weekly, and games still being played are left out until they finish.