Every number in Variance is recomputed from a league’s own scoring and lineup rules. This is how each one is built: what it rests on, how far to trust it, and what to do with it — including the places we are wrong. Grouped by the decision you are making.
How it’s builtThe calculation, in plain steps.
What it rests onWhich players, which seasons, how many.
How far to trust itWhere it works, where it fails, and what was never tested.
So you shouldThe action it supports — or a plain note that it is description, not advice.
✓ validated measured, and it held§ rule a design choice — no test owed! caveat a limit somebody found✕ not validated deliberately left untested◷ history what happened, not what works✓ measured at the foot of an entry: who it was measured on, and how to check it
Start/Sit
Which of your players to start this week. You can change it every week, so the question is how much to trust each number on a close call.
Does the weekly projection help you pick a lineup?
✓ validated
At QB, RB, WR and TE the weekly projection helps a little, most on close calls; for defenders it does not.
How it’s built
For every past week, take two players at the same position and ask which method picked the one who actually scored more under the league’s own scoring: the weekly projection, his season average so far, or last week’s points. A coin flip gets it right half the time. Recomputed for every league on every build.
What it rests on
In every league we track, the projection beats a season average at QB, RB, WR and TE by a small margin, and does no better than a season average at defender slots.
A single rate across every position mixes that real edge with no edge, so it is never the number to read.
How far to trust it
The edge is real and small. It averages easy calls with hard ones: Start/Sit splits the same question by how close the call is, and there the edge over a season average is about 5 points of accuracy on near-ties and about 1 on obvious ones.
Two ways of pairing players give two different rates, and both are shown — a rate is not checkable without its pairing rule. The independent unit is the player-week, not the pair.
The skill-versus-defender line was not drawn after seeing this: the ranges have left defenders, kickers and team defences out since they were written, for the reason in the ranges entry.
So you should
On a close call at QB, RB, WR or TE, follow the projection. At a defender slot, start whoever is averaging more.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every player-week in each league’s history in which all four predictors were defined, scored under that league’s own rules — skill positions and defenders reported separately, because pooling them describes neither · Basis: pairs called correctly, scored under each league’s own settings — BOTH pairing rules stated, because a rate without its pairing rule cannot be checked
Weekly projections run a little high
! caveat
In most seasons the weekly projections for starters came in a little high — at every position, not especially at quarterback. Shown here, not corrected.
How it’s built
Average projected points against average actual points, for every position, season by season. Both sides are scored from their stat lines under one standard-PPR rulebook.
What it rests on
By position, over five seasons: quarterbacks -12.1% to +2.6% (below the projection in 3 of 5 seasons); running backs -6.9% to +3.8% (below the projection in 4 of 5 seasons); receivers -9.0% to +2.1% (below the projection in 3 of 5 seasons). The full table is below.
⚠️ This entry used to say quarterbacks were projected a tenth to a fifth too high every season. That was mostly an error in the projection source’s own stored points, which count a projected interception as +2 instead of −1. Scored from the projected stat lines instead, quarterbacks sit with every other position.
position
season
projected
actually scored
miss
QB
2021
19.8
17.4
-12.1%
QB
2022
18.6
16.9
-8.9%
QB
2023
17.7
17.9
+1.1%
QB
2024
17.4
17.8
+2.6%
QB
2025
17.9
17.1
-4.3%
RB
2021
17.4
16.2
-6.9%
RB
2022
16.7
16.0
-4.4%
RB
2023
16.0
16.0
-0.1%
RB
2024
16.5
17.1
+3.8%
RB
2025
17.8
16.9
-4.7%
WR
2021
16.8
15.3
-9.0%
WR
2022
17.1
16.4
-4.6%
WR
2023
16.9
17.2
+2.1%
WR
2024
16.1
16.3
+1.3%
WR
2025
16.4
15.4
-6.5%
TE
2021
16.9
15.0
-11.4%
How far to trust it
The size moves a lot from season to season — the earliest seasons ran highest — so a single correction would fit one year and miss the next. That is why it is shown rather than applied.
A correction you cannot see is a number you cannot check; the table lets you see it.
So you should
Read a starter’s weekly projection as slightly optimistic at any position. Do not discount quarterbacks more than anyone else.
✓ measuredMeasured on: archived weekly projections for players projected as starters (14+ points), five seasons, each position and season on its own · Basis: (actual − projected) ÷ projected, both scored from their stat lines in standard PPR, computed per season and never pooled
A big projection is a safer one
✓ validated
It rarely busts and rarely booms — two players with the same projection are not the same bet.
How it’s built
Every archived weekly projection, split by position and by how big the projection was. For each group: how often the player scored half again his number (a boom), and how often he came in at half or less (a bust).
What it rests on
A big projection is a narrower one, not just a bigger one. A quarterback projected 21+ beats his number by half only 5.6% of the time; one projected in the low teens does it 17.9%. Less upside, and less downside with it — at every position.
At the small end, around two projected points, receivers and tight ends come in at half their number or worse more than half the time. The worst place to be is a WR projected under 5, at half his number or worse more weeks than not.
projected
weeks
beats it by half
comes in at half
meets it
under 5
5,082
4 wks a season
10 wks a season
34%
5-8
2,087
4 wks a season
7 wks a season
36%
8-11
1,983
4 wks a season
5 wks a season
40%
11-14
1,706
3 wks a season
4 wks a season
43%
14-17
991
3 wks a season
4 wks a season
41%
17-21
462
2 wks a season
3 wks a season
43%
21+
84
1 wk a season
3 wks a season
38%
How far to trust it
Measured on five seasons, and it is a property of the projection source, not of any league. It also says something about that source: actual points beat the projection in 31–54% of cases across the groups, and below half in nearly all of them — the projections run a little optimistic, at every position.
So you should
Two players with the same projection are not the same bet. When you need a safe floor, take the bigger number; when you need upside to win the week, the smaller one is where it lives.
✓ measuredMeasured on: five seasons of archived weekly projections, split by position and projection bucket · Basis: share of weeks at 1.5× the projection (boom) or 0.5× and below (bust)
Many losses are closer than the bench
✓ validated
Many losses are decided by less than the points left on the bench — but most of that is only visible afterwards.
How it’s built
For every regular-season loss, the best lineup the loser could have started from the players he owned that week — picked knowing the scores. If it beats what the winner scored, the loss was winnable. Each winnable loss is then sorted by the first thing that was known before kickoff: a starter already ruled out (listed Out or Doubtful on that week’s injury report, or projected at zero), then a lineup set by that week’s projection that would have won, else hindsight only. A player simply missing from the projection record counts as unknown, not as zero: in older seasons the record drops players who have since retired.
What it rests on
Final scores and each player’s points in the league’s own scoring, and that week’s pre-game projection re-scored in the same rules. Only quarterback, running back, receiver and tight end are re-picked from the projection; kickers, defences and defenders stay as the manager set them, so it can only understate what was knowable. Measured on every season we hold: a third to over half of a league’s losses are winnable, and about one in five of those was knowable before kickoff in every season.
How far to trust it
The count is hindsight — nobody reaches the ceiling. It is the size of the pot, not a target.
Most of the pot is luck. Across the leagues we track, most winnable losses would have been lost by the projection’s own lineup too — and in over a third of those the manager had started exactly that lineup.
Following the projection every week wins some of the rest back — and gives away games the manager’s own call won. Beating the projection one season does not predict beating it the next, so no one should read their own record as a reason to ignore it.
So you should
Before lineups lock, clear every player listed as unavailable or on bye — starters listed Out or Doubtful scored essentially nothing in every season we measured, so it is the one fix that costs nothing. On a close call, use the projection as a tiebreaker, not a rule.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every regular-season loss in a league’s last completed season, counted per team and averaged over every team · Basis: regular season only, against the best lineup that team could have started from the players it owned that week; each winnable loss then sorted by what was known before kickoff
How wide a projection’s range is (the 50/80 bands)
✓ validated
Each projection comes with a likely range, tested on a season it never saw.
How it’s built
Around each weekly projection, a range where his score usually lands: a middle band that should catch half of his weeks, and a wider one that should catch four in five. Deliberately lopsided — weekly scoring has a long upside tail, so an even ± would sit too high on the downside.
What it rests on
Fitted on earlier seasons, then checked on the most recent full season, which it never saw: the 80% band caught 81.0% of real scores and the 50% band 51.0% (n=5,925 each).
How far to trust it
Both levels landing on target independently is the real check — if only the wide band worked, it could be luck. What the bands do NOT cover is the next entry.
So you should
On a close call, compare the ranges, not just the middle numbers: a narrow range is the steadier start, a wide one the bigger gamble.
✓ measuredMeasured on: 5,925 player-weeks in 2025 — a season UNSEEN when the bands were fitted on 2021–2024 · Basis: share of actual weekly scores that fell inside the band
An injury tag is the latest report’s — not necessarily this week’s
§ rule
A designation stays until the team files its next report, so early in the week “Out” can still mean last week.
How it’s built
Sleeper’s status for every player, read once a day. Game designations — Questionable, Doubtful, Out — stay on a player until his team files its next report, usually Wednesday to Friday. A player placed on injured reserve misses at least four games. Sleeper’s own reason is shown alongside when it gives one — for example “Personal” for an absence that is not an injury.
What it rests on
Sleeper’s status feed — the same one a league app shows.
How far to trust it
It can be up to a day behind Sleeper. Doubtful is roughly a one-in-four chance to play. Start/Sit already leaves ruled-out players out of your lineup, and the Briefing names any starter still carrying a tag.
So you should
Re-check on game day before you lock a lineup. An “Out” early in the week may be last week’s ruling — Michael Penix read Out on a Wednesday and started that week.
— not a measurementA design decision — how this tool chooses to work. There is no experiment behind it, and none is owed.
Team total in the matchup
§ rule
How many points the betting line expects his team to score, and how that compares with its usual — context for a close call, most useful at tight end.
How it’s built
From the betting line for his game: half the over/under plus half the point spread gives the points his team is expected to score. Shown with its rank against every team playing that week and, from the fourth week, how far it sits from the team’s own average over its earlier games.
What it rests on
Measured across the NFL: when a team is expected to score more than its usual, its tight end ranked 7-12 has beaten his projection. On close tight-end calls the projection alone picked the higher scorer 53.8% of the time; adding the team total against its usual lifted that to 56.3%, and where the two disagreed the adjusted pick was right 57.6% of the time, in four seasons out of five.
How far to trust it
It is context, not part of the projection, and it says nothing about his own share of those points.
Quarterbacks ranked 1-12 show the same only in the most recent seasons; running backs and receivers show nothing reliable, so do not read it for them.
The edge is small and only matters on a close call. It is not a reason to bench a clearly better player.
In past seasons its help showed from mid-season on; in the first few weeks after it appears, a team’s “usual” rests on only three games and it did not help.
So you should
On a close tight-end call, lean to the one whose team is expected to score more than its usual. At other positions, treat the team total as background.
✓ measuredMeasured on: every tight end ranked 7-12 at his position by that week’s projection, across the NFL, five seasons, each graded on a season the method never saw · Basis: pairs of tight ends within two projected points: how often the projection alone, and the projection plus the team total against its usual, picked the higher scorer
How a player is used (his profile)
✓ validated
How he gets his points — deep or short targets, rushing or receiving — cut at lines the industry publishes. It does not forecast anything.
How it’s built
One number that describes how a player is used, cut into three bands: for receivers, how far downfield his targets travel (short / intermediate / downfield); tight ends the same (short / intermediate / seam); for backs, how much of his work is receiving (early-down / dual / pass-catching); for quarterbacks, how much of his scoring comes from running (pocket / balanced / dual-threat). Blended with last season by how much he has played.
What it rests on
His own play-by-play usage. The receiver, back and quarterback lines are the industry’s published ones, so the label can be checked against anyone’s numbers; the tight-end line is ours, because none is published.
How far to trust it
Tested on seasons it had not seen: how a player is used does NOT predict how spiky his weeks will be, at any position. It describes; it does not forecast.
So you should
Read it as the part of the picture the projection does not show — how he gets his points. Do not start or sit a player on it.
✓ measuredMeasured on: three held-out seasons of player-weeks, position by position · Basis: whether a player’s band predicted the spread of his weekly scores — it did not, at any position
Start/Sit is a skill, and managers differ a lot
✓ validated
Every manager is graded on how much of his own roster’s best lineup he actually started — the spread between them shows it is a skill, not luck.
Every manager is graded on the same thing: what share of their own roster’s ceiling they actually started.
⭐ The point is the SPREAD, not any one figure. If start/sit were luck the managers would cluster, and they do not.
⛔ Nobody reaches 100% — that would be perfect hindsight every week.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every manager in a league, over the same weeks and the same scoring · Basis: points actually scored ÷ the best lineup available from the roster that manager owned that week
The ranges do not put error bars on a trade
✕ not validated
They describe one week’s score. There is no tested uncertainty on a trade gain, and the page will not invent one.
They describe uncertainty around a WEEKLY projection. A trade gain comes from lineup optimisation over blended SEASON values — a different quantity.
⛔ There is currently no validated uncertainty measure on a `+13.54/wk`, and this page will not invent one.
K/DEF/IDP are excluded automatically. With them in, aggregate coverage read 85.6% while every skill position was individually passing — their bands are ~1 point wide and mostly contain zero.
✓ measuredMeasured on: the same 2025 coverage test as the bands themselves, but with K/DEF/IDP left IN — which is the whole point of the number · Basis: share of actual weekly scores inside the band, aggregated across positions rather than per position
Schedule strength, and when it switches seasons
§ rule
Matchup difficulty uses last season’s defences until four weeks of this season are played, then switches.
Opponent difficulty is the mean fantasy points each defence allowed to that position.
At planning time this season’s defences have not happened, so it uses last season’s against this season’s fixtures. Once the upcoming season has four weeks played it judges opponents on that season’s own defences instead.
⛔ A switch, not a blend — weighting the two is a modelling choice with no out-of-sample test behind it. The strip always states which basis produced it.
— not a measurementA design decision — how this tool chooses to work. There is no experiment behind it, and none is owed.
Schedule strength is coarse
! caveat
Use it to break ties, never to bench a stud.
Defences change a lot year to year, so the preseason version is genuinely coarse.
⭐ Points-allowed is computed on the team a player ACTUALLY played for that week. Using current clubs instead misattributed 31.7% of 2025 skill player-weeks, and made Philadelphia read as the softest QB matchup when it was one of the toughest.
⚠️ QB/RB/WR/TE only. For IDP the strip says “not measured” rather than drawing neutral cells.
✓ measuredMeasured on: 2025 skill player-weeks (QB/RB/WR/TE); IDP is not measured at all · Basis: share misattributed when a player’s CURRENT club is used instead of the club he played for that week
Keep or Move
Which players to keep, trade or cut over the long run. Mostly hard to undo, so every verdict shows its reasons.
How a Keep / Hold / Trade / Cut verdict is decided
§ rule
If he scores at least as well as a replacement-level player at his position, he is a Keep. Below that, his trade price decides between Trade and Cut — unless he is young and rising, or out.
How it’s built
Keep — he scores at or above what you could pick up for free at his position (his vs replacement is zero or better).
Hold — below that, but 24 or younger with a growing role; or out for weeks, when his price is already at its low and selling would be selling low.
Trade — below replacement level, but other managers value him at 1,200 or more (or the league’s median value, if that is higher): he is worth more in a trade than in your lineup. A Keep also becomes a Trade when his share of snaps fell and his target share did not hold it up, while his price has not caught up. Target share is measured only at receiver and tight end; at other positions this rests on snaps alone.
Cut — below replacement level, with too little trade value to be worth shopping. Defenders have no market price at all.
What it rests on
His points last season under the league’s own scoring against the league’s replacement level, his market value, his snap and target trend over last season, and the latest injury report.
How far to trust it
It is a rule, not a forecast: the cut-offs are design choices, not measured thresholds. Expert rankings appear in the reasons but never change a verdict. Each row’s reasons list exactly which facts fired.
So you should
Read Cut as “his roster spot is worth more”, not “he is bad”. For a Trade, open Trade → Find for a package. For a Hold who is out, decide once he is back.
Signed in, the app shows this measured on your own team.
§ a rule, not a measurementApplies to: every player on the roster the verdicts are shown for, every build. The cut-offs are fixed in the engine, not fitted to anything · What it checks: his vs replacement against zero; his market value against a floor of 1,200 or the league’s median value, whichever is higher; his age against 24; and whether his snap share fell over last season without his target share holding it up (target share is measured at receiver and tight end only)
The sell list on the Briefing
§ rule
A player is on the Briefing’s sell list only when three of four warning signs agree and he still has a price worth selling.
How it’s built
Four warning signs, each already shown on Keep or Move: his share of snaps fell across last season · he outscored his workload · his market value fell 250 or more in 30 days · the age hit at his position is large. A player is listed when three agree and his value is over 800. The five most valuable are shown.
What it rests on
Three older signals were tested on later seasons and removed. “Fades in the playoffs” did not come back (a −0.25 gap against a −1.0 bar). The playoff-premium Hold list did not either (+0.85 against +1.5). “Hard December schedule” cleared its bar, but a random reshuffle of schedules clears it 18% of the time.
How far to trust it
Only the age sign rests on a measured curve. The other three are facts about last season and the market, not tested predictions that he will decline — the list’s claim is only that three of them agreeing is rarer, and more worth a look, than one.
So you should
An empty list is the normal case, not a failure. A player who is out long-term is named under the list rather than on it, because selling him now would be selling low.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: the three signals that were removed: every QB, RB, WR and TE with enough playoff history, graded on the seasons after the ones that set the flag · Basis: the flagged players’ next-season playoff gap against everyone else’s, with a random reshuffle of the flag as the control
How a player’s number is built, in four steps
§ rule
A player’s number is last season under your scoring, adjusted for the opportunity he earned, blended with the season projection — and replaced by the projection when the two sharply disagree.
1 — what he actually did last season under the league’s own scoring: 6-point passing touchdowns, yardage bonuses, defensive scoring — whatever the league’s settings say.
2 — shrunk toward the opportunity he actually earned, so a player who outran his usage is not overpaid.
3 — carried forward with the SEASON projection, at a weight chosen by measuring it rather than one that sounded reasonable.
4 — where the projection contradicts last season sharply enough, it REPLACES the blend. That can cut a player who scored well or lift one who did not, and it is the step that catches a changed role.
⭐ Open any player to watch it happen: the panel shows his raw last season beside the blended number the board actually ranks on — the gap between them IS steps 2 and 3.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every player with a prior season, under the league’s own scoring. The step-4 players named in the app are that build’s examples — the most valuable one cut and one lifted — not a rate · Basis: points per game under the league’s own scoring, shrunk toward earned opportunity, then carried forward with the season projection
The season projection, and what it was tested for
✓ validated
Blending last season with the season projection predicts next season’s average better than last season alone.
Not “what will he do on Sunday” but “what will he average next season”: blending last season with the season projection beats last season alone, at every position, measured on each league’s own scoring. Both projections are validated; neither result licenses the other.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every player-season with a prior season and a season projection, scored under each league’s own rules · Basis: mean absolute error against the FOLLOWING season’s points per game
Rest-of-season projections: deliberately not used
✕ not validated
Their history cannot be tested fairly yet — past values already knew about injuries that came later.
NOT VALIDATED AND NOT TESTABLE on historical data. Sleeper serves the final stored value for each past week, so a week-12 projection already encodes news from weeks 9–11.
Verified directly: Diggs, Prescott and Watson all show a week-1–8 projection average around 14–18 and then 0.0 for weeks 10–17 in 2024. ⛔ The projection “knew” they were out; a manager at the deadline did not.
⏰ Testable around Dec 2026, once daily as-of snapshots accumulate.
⭐ The weekly projection is now also saved just before each game, every week — the clean record a fair test of any projection needs, and why this one will become testable.
✓ measuredMeasured on: three named players in 2024, shown as PROOF THE TEST CANNOT BE RUN — not as a result · Basis: no valid basis exists yet: Sleeper serves the final stored value per past week, so a historical back-test would grade the projection on news it already contained
Is the valuation any good?
✓ validated
For players you would actually start, the value predicts next season better than last season’s points — weakest at tight end.
The honest headline is the count, not a percentage. For players at or near a starting spot — inside about 2.5× what a league actually starts at that position — the blend beat raw prior-season production in 15 of 16 position-by-year tests. Average improvement by position: WR +26.1% · RB +19.2% · QB +14% · TE +8.7%.
⛔ The one failure, named rather than averaged away: TE in 2023→24 (-1.1%). Tight end is the weakest position throughout, so treat a TE price as the least certain number on the board.
⚠️ Read the count, not the size. Six leagues re-scoring largely the same NFL players is not six independent samples — the independent unit is the SEASON TRANSITION, so there are four of them, and the individual position figures swing widely year to year.
⛔ Below that band we do not price well, and we publish no number for it. Deep bench, players nobody rosters. A single pooled figure would average a tail nobody starts into a head that works, so there is not one.
⭐ The same test the blend weight was originally chosen on, re-run on the shipped code rather than a reconstruction — and recomputed from the engine on every build rather than typed in.
✓ measuredMeasured on: players ranked inside 2.5× what a league actually starts at their position — 9 league chains × 4 season transitions · Basis: points per game over games actually scored in, for the prediction and the outcome alike
When experts disagree about a top player, trust the rank less
! caveat
For a position’s top 12, a player the experts disagree about is a bigger risk — the consensus misses him by more. Lower down, disagreement tells you little.
Among a position’s top 12, the players the experts disagree about are the ones the consensus misses by more. It is clearest at tight end and running back, weaker at receiver and quarterback.
⚠️ Below the top 12 it tells you little — disagreement there is about as likely to mean nothing as something. An earlier version of this entry said it held everywhere; that was measured across all ranks at once, where disagreement and misses both just grow with depth.
⭐ So read the rsd column as a warning about the ranking of a top player, not a verdict on the player.
✓ measuredMeasured on: each position’s own preseason consensus rank, six ranking pages, five seasons · Basis: inside each position’s rank bands (1-12, 13-24, 25-48): how far the consensus missed the players experts disagreed on most, against those they agreed on
Across every position and age, when we say a player will improve he does 70% of the time
✓ validated
When we call a player up or down before a season, this is how often it came true — and where the call is weak.
Only 43% of players improve in a given year, so “better” is the harder call of the two — and we make it on just 37% of players, fewer than actually improve. ⭐ That selectivity is what stops the number being optimism.
Saying a player will decline is right 73% of the time. That sounds stronger and is not: decline is what most players do, so the bar is far lower.
⭐⭐ The breakdown is not uniform. 16 position-and-age groups, shown on Keep or Move — the valuation that calls young receivers well is the same one that fails on WR 30+, where we call up on 32 players and only 8 improve. ⛔ Read it before trusting the headline on any one player.
⚠️ Survivorship runs against us: a player marked down who then lost his job entirely never enters the sample at all. And this is six ingested league chains, not fantasy football at large.
✓ measuredMeasured on: 5,626 player-seasons across six ingested league chains and four season transitions, players ranked inside 2.5× what the league actually starts at their position. ⚠️ The headline pools EVERY position and age — it is a summary, and the per-position figures differ sharply · Basis: PRECISION — of the players the valuation CALLED, how many did what was said. ⛔ Not the reverse: “of those who improved, how many did we catch” is a question a system that flags everyone up scores 100% on. Each call is made before the season, against the player’s own prior-season per-game rate
Age
What age costs, how long players keep their place, and how to use both when deciding whether to sell.
What age costs, by position
✓ validated
Past 24 a player keeps a little less of his production each year — fastest at running back, slowest at quarterback.
How it’s built
How much of his production a player keeps into next season, compared with a 24-year-old. That yearly hit grows with each birthday — running backs 7.6%, receivers 5.7%, tight ends 6.9%, quarterbacks 0.6% per year of age. Backs fall away fastest and quarterbacks slowest, and that ordering is measured, not assumed.
Two seasons out is not twice one season — it is one season’s loss, then another on top. And the further out any forecast goes, the less certain it is. The app keeps those two apart: age hit is only the ageing, and a future season’s number tells you how much of its drop is age and how much is just distance.
What it rests on
Every NFL player who mattered, against his next season, with ages from real dates of birth — the counts are below this entry. The curve is re-fitted every year, and the window only ever grows: each January the season that just ended joins it.
How much of his production a player keeps into next season, compared with a 24-year-old. Each line stops at the oldest age we have enough players to measure.
How far to trust it
Clearest at receiver and roughest at running back, where the oldest ages rest on a handful of players. Every row of How long they last prints its own count — read that before the rate.
Past RB 31, WR 34, TE 34, QB 36 almost nobody is still playing, so the app stops measuring and drops to a floor rather than guessing. Those players carry a ⌛ past badge: an absence of data, not a finding that he declined.
It only touches the long-term number. Win-now is scored on what a player is doing right now, undiscounted — a 38-year-old quarterback putting up big weeks still counts fully this season; he is simply not worth much two years out.
So you should
Sell a player before his position’s steep years, while his price still reflects what he does now. The age hit column on Trade shows each player against his own position, and Keep or Move draws your own players on their position’s curve.
✓ measuredMeasured on: every player in the NFL who scored 50+ points in 8+ games, paired against what he did the next season — 1,317 player-seasons across six complete seasons, ages taken from real dates of birth at the season’s midpoint. ⚠️ A season a player missed entirely counts as ZERO, because that is what it costs to hold him · Basis: how much of his own production a player keeps a year later, measured on raw NFL scoring so it is a fact about football rather than about one league’s rules. ⭐ Fitted on the MEAN, because a trade adds players together and averages add up correctly where a typical-player figure does not
Tier first, then age
✓ validated
Players in one tier score about the same, so choose the tier on production and the player inside it on age.
A tier groups players who score about the same, so most of what is left in the price is remaining years — but not all of it, because players in a tier still score a little differently.
Tier breaks are cut at the largest GAPS in the sorted values, because positions have cliffs and the cliff is the only thing a tier is for.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: tiers on a league’s board holding at least ten priced players. ⚠️ Thinner tiers cannot carry a correlation and answer the opposite question — which is how the earlier version of this entry came to say production mattered not at all. Unpriced tiers are dropped rather than scored · Basis: rank correlation of market value with age, and separately with production, inside a single tier. Meaningless across tiers — a tier is the unit
Does he keep his place? (How long they last)
✓ validated
The odds he is still worth a lineup spot next season, at his position and age — the hold-or-sell question, answered as a rate.
The points table and this one disagree about the same players, and only one of them is about ageing. A player who scored highly drifts back toward the field the next year at every age — that is regression, not decline, and a measure built on point changes charges ageing for it. Holding the group fixed applies the same drift to every row.
⭐ What it is for: the odds he is still worth a lineup spot next season, at his position and his age. That is the hold-or-move question, and it is answered by a rate rather than by a size.
⛔ A long run at the top does not make the next year likelier. One, two, or three-plus years running in the top 10 did not make holding it the next year more likely. A few names do take most of the elite seasons — that is them piling up years, not something to bet on.
⚠️ Read one position at a time. Pooled together these rows draw a clean declining line that no single position shows: the young end is nearly all backs and receivers and the old end has none of either, so the line is the mix of positions moving, not ageing.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every player in a league’s starting group at each position, across every season ingested for it, in two-year age steps. ⚠️ Rows vary enormously in how much they rest on, so EVERY ROW PRINTS ITS OWN COUNT — read that, not this. A multi-season panel lets the same man count several times, which is why the number shown is how many PEOPLE are behind a row, not how many entries · Basis: whether he was still in the same group a year later. The group is what that league actually starts, measured from real lineups rather than assumed — not a quantile, which would mean the top 9 at quarterback and the top 45 at receiver under one label
Why the points-change table reads worse than the age curve
✓ validated
It counts ordinary regression — high scorers drifting back toward the field, at every age — as if it were ageing.
The points-change table on Keep or Move (under “how much their points moved”) shows how far each player’s points moved from one season to the next, at each age. It reads more negative than the age curve and How long they last, and the extra drop is regression, not age: whoever scored high one year drifts back toward the field the next, at every age, and a points-change table books that drift as decline.
⭐ What it is still good for is the spread. Most age steps are close to a coin flip — about as many players improve as decline — and an age can net near zero while the players who gained put on three points a game and the ones who fell lost three and a half. That is where careers fork.
So you should read what age costs a player from the age curve and How long they last, and use this table to see how wide the outcomes are at his age.
⚠️ An earlier version of this table required a player to already be good in the base season, so anyone who broke out from below the line never entered the sample. It could not show a rise at any age, and reported receivers declining from 21.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every player who was fantasy-relevant in EITHER of two consecutive seasons in a league, position and age step by step — relevance in either year, so a breakout counts the same as a fall-off · Basis: within-player change in per-game production, on the weeks he was available, under the league’s own scoring. Median, so one wrecked season does not set it
Trade
Finding a deal and grading an offer. Two currencies — what a player is worth to your lineup, and what he costs — kept apart on purpose.
Defenders have no price — stream them
✓ validated
No market prices them, and they are nearly free to replace — stream them rather than pay for them.
How it’s built
The best defender at each position, measured against a replacement-level defender — his vs replacement, the same number Keep or Move uses.
What it rests on
The price sources we checked — FantasyCalc, Dynasty Dealer, DynastyProcess — price offensive players only.
How far to trust it
Measured last season in every league we track that starts defenders: the best linebacker was worth about two points a week over a replacement-level one, and 49 linebackers were within three points of the sixth best.
So you should
Do not give up a trade asset for a defender. In Grade, “you pay” leaves defenders out and says so.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: the leagues we track that start defenders, last completed season · Basis: the best linebacker’s points per week over the replacement level, and how many linebackers sat within three points of the sixth best
Draft picks in a trade
§ rule
A pick has a price but no points: it counts in what you pay, and adds nothing to either lineup until it becomes a player.
How it’s built
Picks for the next three drafts, priced at FantasyCalc’s value for the league’s format and shown as a reference. Where FantasyCalc splits a round into early and late, Grade gives the range, because a pick’s slot is not known until the standings settle.
What it rests on
FantasyCalc’s pick prices, used with their permission and credited on the page. Dynasty leagues only.
How far to trust it
It is a market price, not our valuation. Superflex matters: mid first-round picks are priced 8–12% higher in superflex, where rookie quarterbacks go.
So you should
Treat a pick as price paid or received, never as points. Find cannot ask for picks yet — to test an offer that includes them, use Grade.
✓ measuredMeasured on: FantasyCalc’s pick prices for one league’s settings, one-quarterback against two-quarterback · Basis: each pick’s superflex price against its one-quarterback price
Worth vs cost: two currencies, never blended
§ rule
vs replacement is what a player is worth to your lineup; value is what he costs in a trade. Keeping them apart shows whether you are paying for points or for hype.
Two currencies, kept apart on purpose. `vs replacement` is worth — points per week above a replacement-level player (the last starter a full-strength league would play at his position). `value` is cost — the public market price. They are never blended anywhere in this tool, so you can see whether you are paying for points or just paying for hype.
— not a measurementA design decision — how this tool chooses to work. There is no experiment behind it, and none is owed.
The trade numbers are lineup arithmetic
§ rule
A trade’s /wk number is your best lineup after the trade minus your best lineup before it — no trade-value chart involved.
`now /wk` and `2yr /wk` are your optimal lineup AFTER the trade minus BEFORE it.
Both sides are scored the same way: your best legal lineup with the players you would have, minus your best legal lineup today. What you send comes out, what you get goes in, and the difference is the number.
That is the whole calculation — no trade-value chart anywhere in it.
— not a measurementA design decision — how this tool chooses to work. There is no experiment behind it, and none is owed.
Market value is a gate, not an input
§ rule
It decides only whether the other manager would say yes; it is never added to the gain.
The market value going out is compared with the market value coming in. That comparison decides only whether the package is one the other manager would plausibly accept.
⛔ It is never added to the gain, and the “allow underpay” toggle removes the requirement entirely.
Expert rankings never set a player’s number. They appear in Signals as a question, and they set one weight, by age group: how much a forecast is trusted two and three seasons out (forecast fade), measured from how well past dynasty rankings held up that far ahead. ⭐ The age curve uses no expert input — it is measured from what players actually scored.
✓ measuredMeasured on: forecast fade only: preseason dynasty rankings set against what those players then scored one, two and three seasons later, on 2021–2023 starting seasons (n = 419–919 per cell) · Basis: how well the ranking still ordered players that far out (rank correlation), by age group; the weight is that, scaled so one season out = 1
Some moves use up others: the Briefing’s order
§ rule
The trade table cannot see that one deal spends the players another needed, so the Briefing lists your week in an order.
The trade table ranks by value gained, one package at a time. It does not know that the pieces a package costs are the same pieces another package needed — so the highest-gain deal on the list can quietly remove the second and third.
⭐ So the Briefing puts the week in an order: first an empty slot — it scores zero, and filling it needs nobody’s agreement — and any starter on the latest injury report; then a roster over its cap, where trading the surplus comes before cutting it, because a cut returns nothing; then the biggest win-now upgrade; then the best free agent; then the one player to sell.
So you should work down it in order, and before accepting any trade, check that it does not spend a player another move on the list needed.
— not a measurementA design decision — how this tool chooses to work. There is no experiment behind it, and none is owed.
No single overall score
§ rule
There is no single overall score, because no candidate metric passed the tests to earn one.
Ten candidate metrics went through three pre-registered gates and none entered the valuation, so a composite invented for the interface would sit next to validated numbers with nothing to tell them apart. Compare shows the facts side by side; which one matters depends on your window.
✓ measuredMeasured on: ten candidate metrics, each put through three gates fixed BEFORE the results were seen · Basis: a metric entered the valuation only if it cleared all three gates. None did — the absence of a composite score IS the result
Grade prices offers Find would never suggest
§ rule
Same valuation and lineup maths as Find, applied to any offer you put together.
Trade → Find only shows packages passing its filters. A real offer routinely breaks all of them, and “no results” is not an answer.
The grader runs the identical valuation, decay and lineup optimiser — which therefore exists twice, Python and a JS port. ⭐ A test runs 405 randomised rosters through both and asserts they agree on the ASSIGNMENTS, not merely the totals.
`cli offer --get … --send …` gives the same answer.
⭐ Grade also takes draft picks (dynasty leagues) and names defenders as unpriced — see Draft picks in a trade and Defenders have no price in this chapter.
✓ measuredMeasured on: 405 randomised rosters run through BOTH implementations of the lineup optimiser — the Python one and the JavaScript port this page runs · Basis: the two must agree on the ASSIGNMENTS, not merely on the totals — two different lineups can sum to the same points
Waivers
Who to pick up. It costs nothing but a roster spot, so the question is whether he beats what you already have.
Snap share: now, last season, and rank
✓ validated
How much of his team’s play he is on the field for — this season blended with last, so it works from week one.
How it’s built
The share of his team’s snaps he plays: this season blended with last season’s average, weighted by how many games he has played — so it works from week one, and for a rookie from his first game. Shown as now, last season, and his rank at his position.
What it rests on
Snap counts from every game.
How far to trust it
The blend beat either season alone at predicting the rest of the season, in every week tested. A game he missed counts as missed, not as a zero share. A few players read above 100% because of the source data; they are shown as they are rather than hidden.
So you should
Use it to see whether a role is real: a player on the field for most of his team’s snaps is getting chances whatever last week’s points said. Compare him with his position, not the whole league.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every player-week with snap counts, predicting the rest of that season from each week · Basis: average miss of the blend against this-season-only and last-season-only
vs replacement: points a week above the last starter a full-strength league would play
✓ validated
The number to learn first — every trade gain and every verdict is built on it.
THE number for deciding whether a trade helps you. Replacement levels are measured from what each league actually starts across four seasons of real lineups, not simulated — an early simulation sent the flex to a running back 60% of the time.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: four seasons of REAL lineups actually submitted in each league — not simulated rosters · Basis: how often each position actually fills each flex slot, giving the replacement level
A missing number is never shown as zero
§ rule
Absent, zero and unknown are three different claims, and they are drawn differently.
A blank `matchup` means NOT MEASURED, not "average" — it only exists for scored positions. A player with no data shows his last played season rather than a bare dash. Absent, zero and unknown are three different claims and are drawn differently.
— not a measurementA design decision — how this tool chooses to work. There is no experiment behind it, and none is owed.
League & managers
Who you are dealing with, and what a league’s own history says about it.
Manager cards: what his history shows
◷ history
Facts from his own history here — how he trades, sets his lineup and works the wire — ending in what to offer him.
How it’s built
For each manager: how he trades (from how many trades, over which seasons, and when he last traded), whether he starts a quarterback at superflex, which position fills his flex, and his waiver claims won and lost. Each card ends in what to offer him.
What it rests on
The league’s own trades, lineups and waiver claims. The trade label states what it rests on, so an old habit cannot pass for a current one.
How far to trust it
Description, not prediction. Whether managers trade well, or time the market, was measured here and is noise — which is why there is no “sharpness” score. The flex note appears only when a manager differs from the league.
So you should
Use “what to offer him” and his superflex habit to shape an offer he will take seriously — and treat an old trade label with the caution its date suggests.
— not a measurementA record of what changed and why. Nothing here is a current claim.
Past trades, scored after the fact
◷ history
Graded on what the players did afterwards, not on what we said they were worth — history, not a skill ranking.
The audit grades completed deals on delivered points afterwards.
⛔ This is history, not a skill ranking, and it must not be read as one. A trade can be correct at the time and lose badly to an injury; the reverse happens just as often.
⭐ It is here because a tool that prices trades should be willing to show how the priced trades actually turned out — including the ones that went against the manager who “won” them on paper.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: completed trades with enough scoring afterwards to grade · Basis: points each side actually delivered AFTER the deal — outcome, not the valuation that predicted it
What champions have carried
! caveat
A hint from a league’s champions — on a sample too small to be a strategy.
Compare what champions carried with the rest of the field, position by position.
⛔ Read this as a hint, not a strategy. The champion sample is tiny, roster snapshots are current-state rather than end-of-season, and a league that changes its settings breaks the comparison entirely.
⚠️ It is tagged a caveat deliberately: it is the weakest number in Learn, and it is kept because deleting inconvenient measurements is how a tool stops being checkable.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every team-season in a league’s history — a small sample, and the reason this is a caveat rather than a finding · Basis: average roster composition of champions minus the same for everyone else, by position
Part of every record was the schedule
! caveat
All-play shows how much of a record came from who you happened to play — it says nothing about skill.
All-play compares each roster against EVERY other roster each week, not just the one the schedule paired it with. The gap between a head-to-head record and an all-play record is the part nobody earned.
⛔ THIS IS NOT A SKILL RANKING AND MUST NOT BE READ AS ONE. Trade timing was tested across the leagues we track and came back p = 0.502; add/drop timing p = 0.701. Both null.
This decomposes what happened to a record. It never says who chose well.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: the all-play figures are each league’s most recent completed season; the p-values are a shuffled-null test across every league we track · Basis: all-play win rate — each roster against every other roster each week — set beside the head-to-head record
How far to trust any of it
What was measured and came back empty, what was deliberately not built, and where the noise is. It stays its own chapter, because a tool that only shows its wins cannot be checked.
When the tool cannot explain a price move, it says so
§ rule
A move with nothing in the data behind it is labelled unexplained rather than given a story — it is neither a buy nor a sell signal.
When a player’s market value moves and nothing in the data accounts for it, he is labelled that way rather than given a plausible-sounding reason.
⭐ This is the honest half of every signal on the page: a system that can explain everything is not measuring anything.
⛔ An unexplained move is not a buy signal and not a sell signal — it is an absence of information, shown so you can supply the context the tool cannot.
Signed in, the app shows this measured on your own team.
✓ measuredMeasured on: every player whose market value moved enough to flag, each build · Basis: a move is labelled explained only when a measured signal accounts for it; otherwise it is labelled unexplained rather than given a story
Consistency is measured on volume, not points
✓ validated
Catches, yards and looks — because touchdowns are a lottery.
Big weeks are touchdown weeks — 83–92% of them at RB and WR, against 2–3% of dud weeks. Touchdown rate never stabilises (r=0.14 even over six weeks), so a points-based consistency number is mostly the TD lottery.
⭐ Counting catches, yards and red-zone looks instead moves dud-rate persistence from 0.670 to 0.744 at RB, and 0.697 to 0.758 at WR.
⚠️ RB and WR only. TE measured null, and QB is excluded because there touchdowns genuinely ARE the position.
✓ measuredMeasured on: RB and WR player-weeks only — TE measured null, QB excluded on purpose · Basis: week-to-week persistence of dud rate, volume-based against points-based
Weekly finish is history, not a forecast
◷ history
It shows what happened last season and ranks nothing — points-based versions of it made lineups worse.
Median finish, top-12 and outside-top-36 rates are what HAPPENED last season. Deliberately not used to rank anything: it is PPR-points based, and three points-based consistency formulations were tested and all three made lineups worse. The validated signal is the dud rate above.
✓ measuredMeasured on: three separate points-based consistency formulations, each tested on real lineups · Basis: did using it to pick a lineup score more points? All three scored FEWER — which is why these columns describe last season and rank nothing
Measured, and deliberately not built
✕ not validated
Ideas that were measured and deliberately not built, each with the result that stopped it.
A “questionable” haircut. Costs ~15% of a player’s baseline — boom rate 21.7% → 15.2% — but availability is the bigger cost, and start/sit already shows the tag.
Accuracy-weighted expert consensus. Per-expert rankings are unreachable.
Manager sharpness scores. p = 0.502 against a shuffled null — no manager in the leagues tested beat the market on timing. The manager cards describe habits instead, and make no claim about skill.
Tier bias correction. No bias exists once floor/ceiling effects are matched, n=1,940.
✓ measuredMeasured on: FOUR SEPARATE rejected ideas, each with its own population — the boom rates are archived weekly projections, the p = 0.502 is a shuffled-null over the transactions of the leagues we track, and the n = 1,940 is the tier-bias test. ⛔ They must not be read as one result · Basis: varies by item, which is exactly why each ships with its own number rather than a combined one
Dynasty ranks swing a median 146 places
! caveat
Anything resting on fewer than 20 places of movement is noise, not a finding.
p90 is 270. Nothing resting on fewer than 20 places is a conclusion. The through-line across every analysis: the edge here is league-specific calibration and roster mechanics, not out-predicting the market. Every attempt to find market inefficiency came back null; every league-specific measurement came back actionable.
✓ measuredMeasured on: the spread of dynasty rank movement itself — a median swing of 146 places, and 270 at the 90th percentile · Basis: a difference smaller than the noise is not a finding. Against a 146-place median swing, anything resting on fewer than 20 places of movement is inside the noise and is not a conclusion
Articles
The full argument, with the evidence — for when an entry is not enough. Listed only once published; each opens in a new tab.