Under the hood
Methodology
Every number on this site comes from somewhere specific, refreshes on a schedule, and has limits. This page explains all three in plain language — no jargon, no hand-waving. If you want help reading the tables on a player's page, we also have a guide to reading a career stat line.
How the Trade Analyzer values a package
The Trade Analyzer does not use market prices. It uses projected points above replacement, computed for the exact league you select.
We start from the consensus projection for each player — the median across the independent sources that published one — and lay out the whole league's starting lineups: your team count multiplied by the starting template. Every player is then assigned to that board so each one is used at most once, only in a slot he may legally fill, and the league-wide total is as high as it can legally be. A player's value is what the league loses if he did not exist: the best legal total with him, minus the best legal total without him.
That is why value moves when you change the settings. A superflex slot adds a starting seat per team, so the quarterbacks behind the elite ones suddenly matter; a 14-team league starts more players, so depth is worth more. Nothing is hand-tuned for those cases — it falls out of the assignment.
A trade is then measured against a reference team: the median starting roster from that same assignment. A package is worth the difference between that team's best legal lineup with the package and without it. So a third running back who cannot beat anyone already starting is worth zero, not a third of something, and consolidating two starters into one costs a roster spot in the arithmetic rather than in a footnote.
The range shown beside each verdict is source disagreement, not a probability. We re-run the comparison with one side's players at the low end of what the sources say and the other side's at the high end, then reverse it. If the verdict survives both, we name a side; if the range crosses zero, we say the sources do not separate the two packages. This is an estimate about a reference roster, not a prediction that any particular manager would accept the trade, and it knows nothing about your actual bench, your record or your schedule.
How Evaluate My Team scores a roster
Evaluate My Team uses the same projected-points valuation as the Trade Analyzer — one model, one cache, one answer. Your roster's starting lineup is solved as a single exact assignment: every player fills at most one slot, only slots he is eligible for, and FLEX and superflex seats go wherever they make the lineup total highest. The headline number is that lineup's projected points.
It is compared with a reference lineup: the median team from assigning the entire current player pool to every starting seat in a league with your settings. “12% above a typical lineup” means exactly that — your best legal lineup scores 12% more than the median team's. There are no letter grades, because a grade hides the threshold that produced it.
Team strength is deliberately not the sum of each player's standalone trade value — those marginal values measure what the league loses without one player at a time and are not additive across a roster. Bench depth is reported separately (a bench player is “startable” if he would clear the reference lineup's weakest starter at his position). A player our sources have not projected in your scoring stays visible as unresolved and contributes nothing; he is never counted as zero. A player with no stored injury status reads “status unknown”, never healthy. The page is redraft only. Kickers count when your lineup has a K slot: 3 points a field goal and 1 an extra point, from the projection set, with no distance tiers and no miss penalties. Leagues synced in League HQ do not seat kickers yet: that lineup still starts the four skill positions only.
How the Keeper Calculator prices a pick
The Keeper Calculator compares each keeper's MustDraft projected value (points above replacement, identical to the Trade Analyzer's unit) with the expected value of the draft pick he costs.
The forfeited pick is computed from your real draft slot and the snake order: in a 12-team league, slot 1 keeping a round-2 player gives up overall pick 24, while slot 12 gives up pick 13. The pick's value comes from a curve built over every current player who carries both a current-draft ADP in your scoring format and a MustDraft value, joined by canonical player id. The curve is a smoothed neighbourhood average — one oddly priced player never sets a round's whole cost — and is constrained to be monotonic, so a later pick never costs more than an earlier one.
Verdicts compare ranges, not points: the spread across projection sources on your player against the spread of draft position around the pick. “Keep” or “Let go” appears only when those ranges clearly separate; overlap is a close call, and a player with fewer than two independent projection sources is labelled limited and never receives a strong verdict. Duplicate keeper-round costs are flagged because league rules differ on how they resolve.
ADP attribution: current draft ADP comes from Fantasy Football Calculator, fetched once daily per scoring format, never during a page visit. It is one market's current draft behaviour — we label it “current draft ADP”, not a multi-source consensus. FFC's team-size parameter does not segment its data (verified 2026-08-03: identical player lists and ADP for 8-team and 14-team requests), so scoring is the cohort dimension and your league size enters through the snake-pick arithmetic. Dynasty, rookie-only, auction and superflex keeper formats are not supported.
What "market value" means
Rankings does not display any third-party trade-market prices. Earlier versions of Rankings showed values derived by a third-party service from trades accepted in real fantasy leagues. Publishing that provider's data is paused while we seek their written permission, and nothing on the site is computed from it today. That pause covers the third-party feed only. It does not cover the dynasty trade values we compute ourselves from our own trade data, described below.
Rankings now use MustDraft projected value — the same points-above-replacement number the Trade Analyzer, Evaluate My Team and the Keeper Calculator use, described above. It is a projection-based lineup value for the league settings you pick, not a price: nobody's trades are read, and no market data is involved. If market values return, they will be labelled as prices and kept separate from projections, because "what the room pays" and "what forecasters expect" are different measurements and combining them hides both.
What "real leagues" and "real drafts" mean
"Thousands of real leagues" means actual, active fantasy leagues whose managers accepted trades with their own seasons on the line — not survey answers, not expert polls. "Real drafts" on the Draft Board means live mock drafts run by real users on a third-party drafting platform. ADP (average draft position) is the average slot where each player was taken across those drafts; the count of drafts in the current week is shown right on the board so you can judge the sample yourself.
How rankings and draft flags are derived
The Rankings board is simply every player sorted by MustDraft projected value — we add no editorial adjustment. The VALUE and REACH flags on the Draft Board compare two orderings of the same player: his projected-value rank versus his draft-position order. When our values rank a player 12 or more spots better than drafters are taking him, he's flagged VALUE; 12 or more spots worse, REACH. It's a rank-gap heuristic, not a projection.
Why the draft boards open in ESPN's order
The Mock Draft board and the Draft Companion list players in the order of ESPN's published draft rankings, refreshed daily with the rest of the projection feed. A board sorted by projected points alone puts most of the league's starting quarterbacks in the top thirty, because a quarterback outscores every other position on raw points and a one-quarterback league does not draft that way. ESPN's list already accounts for that. ESPN publishes a standard list and a PPR list, so a half-PPR board reads the PPR one and says so. A player ESPN does not rank sits at the bottom in draft-position order, and if the rankings are unavailable the board falls back to draft position and tells you. Our own consensus value still appears beside every player; it is the number, not the order.
How mock-draft grades are calculated
The Mock Draft Trainer's grade is a documented formula over public data — there is no hidden expert panel. Four components produce a 0–100 score:
- Pick value (35%): the average gap between each of your picks and the player's rank by MustDraft projected value. Positive gaps (our values rated him higher than your pick number) raise the score.
- Starting lineup (35%): the total projected value of the best lineup you could actually start, ranked against every other team in your draft room.
- Depth (15%): the same room ranking applied to bench value.
- Balance (15%): penalties for required starting slots left unfilled (only in drafts long enough to fill them, and only for slots this draft's own player pool could actually have filled), extreme hoarding at one position, and four or more starters sharing a bye week.
Tiers on the draft board are gap tiers drawn on projected points. Within a position we sort by projection, look at the gap between each player and the next over the part of the position a 12-team room actually drafts (the top 36 running backs and receivers, the top 24 quarterbacks and tight ends), and start a new tier where a gap is unusually large for that position: larger than the typical (median) gap plus one and a half times the typical spread of the gaps around it, measured robustly so the two or three cliffs at the very top cannot hide the steps further down. A tier holds at least two players and a position has at most eight tiers; everyone below the drafted range sits in the last tier. The tiers are a reading of the projections as published, drawn where the projections themselves step, and the projections are an average of four forecasters who disagree by a few points per player, so treat a tier line as a marker, not a wall. Kickers and defenses carry no projected value, so they are never graded as value or reach and get no tier. "MustDraft Suggestions" in the draft room score candidates on the same public signals — value gap, open starting slots, tier cliffs, position runs, and survival odds to your next pick — and always show their reasons in plain language.
How the dynasty trade values are built
The Dynasty Rankings board and the Trade Ticker run on our own numbers, built from our own data. Nothing on either page comes from the paused third-party feed described above.
Where the data comes from. Real, completed trades from real dynasty leagues, de-identified before anything is stored: we keep what was swapped and when, not who swapped it. No survey answers, no expert polls, no scraped price list. Two kinds of transaction are set aside before anything is fitted. Trades from leagues that start individual defensive players are left out, because this board prices offence only and a defender on one side of a deal would distort every offensive player on the other. Transactions of more than a dozen assets are left out too: those are roster swaps and orphan-team takeovers, not two managers agreeing that two packages are even.
How a value is fitted. Every trade is one statement that the two sides were close to even. The model looks for the set of player and pick values that comes closest to satisfying all of those statements at once, with recent trades counting for more than older ones. Values are recomputed from scratch every night, and they are relative prices on one shared scale, not points or projections. Superflex and 1QB leagues are fitted separately, because a quarterback is not the same asset in the two formats.
What we refuse to publish. A player needs at least 15 supporting trades to appear, and a rookie pick at least 25. Picks from a season before the current one are dropped from the board even when they are still in the data, because they are no longer assets anyone can trade. The current season's picks stay, right through its rookie draft and after it, for the same reason: that is what the market is actually pricing. Any asset whose fitted value rounds to zero is also dropped, because that is the model saying it has nothing rather than saying the asset is worthless. A player our directory does not list on an active roster (retired, released, on a practice squad or simply unsigned) is not published either, however many trades still mention him.
Two adjustments we make on purpose.
A rookie pick curve has to fall as the rounds go on, so within each season we force the published round values to be non-increasing. Where a later round comes out above an earlier one, we replace both with their average, weighted by how many trades back each of them. That can move the lower round up as well as the higher one down: what is preserved is the weighted total across the rounds we pooled, so the adjustment redistributes value between adjacent rounds rather than inventing it. Across seasons the rule is a ceiling: a later season's pick is never published above the same round of the nearer season, because a draft two years away is a discount on one year away, and we only ever lower a value to enforce that.
Separately, a player with only a handful of supporting trades is pulled toward a typical value for the board, more strongly the thinner his evidence is, so a barely-traded name cannot sit above a star on the strength of three odd trades. This one only ever moves a number down or leaves it alone, and it needs a board with enough well-traded players to calibrate against. The Superflex board has that today. The 1QB board does not, so it does not yet receive this adjustment: read its thin-support rows with more caution than the Superflex ones.
The support count next to each row is the number of trades behind it. Treat a low one as a warning even after the adjustments above.
How fresh each dataset is
- Trade values / rankings: refreshed daily; if the live feed is unreachable, tools say values are unavailable rather than showing stale numbers.
- Dynasty trade values: recomputed nightly from our own trade data; the board shows the timestamp of the run it is serving.
- News headlines: collected every 30 minutes.
- Trending adds/drops: refreshed every 30 minutes from league activity.
- ADP: refreshed daily during draft season.
- Season stat leaders: final numbers from the most recent completed season.
- Career stats on player pages: rebuilt daily.
How our projections are built — and how accurate they are
The weekly and rest-of-season projections in Front Office are our own work, built from public NFL box-score data. They are not licensed, scraped or adapted from anyone else's projections or rankings, and no "expert consensus" is involved.
The model tracks each player's usage as a per-game rate on two clocks — a fast one that reacts to a changed role, a slow one that holds their established baseline — and keeps availability (how often they actually play) separate from production. Points are projected conditional on playing, so availability never quietly deflates a weekly number; it feeds the rest-of-season total and the confidence score instead. Every feature for a given week is built only from weeks before it.
The published point estimate is a median, not an average. Weekly fantasy scoring is heavily right-skewed — a few enormous games drag the average above what typically happens — so the median is both the more useful number and the more accurate one.
Three layers, and which one a number came from
An earlier version of this page said we had no injury or bye handling. That was true of the projection model and became misleading about the product, because the recommendation layer does handle both. There are three separate things and it is worth keeping them apart:
- The point projection. Usage-based, and deliberately conditional on the player being active. It contains no injury information, no bye awareness, no opponent and no weather. A player who has been ruled out still has a projection here, and that is by design — it answers "how many points if he plays".
- The availability overlay. Separate, and applied on top. Bye weeks come from the stored NFL schedule and are certain. Injury designations come from a status feed with a recorded source and timestamp; when that feed is unavailable or the record is stale, the answer is unknown — never "healthy".
- The recommendation. What the tools actually tell you. This is where a player on bye or confirmed out is excluded from a lineup, dropped from free-agent lists and counted as zero rather than as his projection. Questionable and doubtful players are still started, and flagged so you can decide.
So: the model does not know about injuries, and the advice does. The accuracy figures below measure layer 1 only.
Measured accuracy
Every figure below comes from one locked evaluation panel — the same seasons, the same players, the same eligibility rules — so the numbers can be compared with each other.
Walk-forward backtest on 28,732 player-weeks the model never trained on, across 2021, 2022, 2023, 2024, 2025, in PPR scoring. Kickers and defences are excluded: the nflverse player-stats release does not carry them, so they cannot be scored on this panel. Their projections ship but are not covered by these figures.
Mean absolute error 4.386 points. Against a recent-form average that is -5.5% — a real improvement, and a modest one. We would rather say that plainly than dress it up.
| Predictor | MAE | vs our model |
|---|---|---|
| MustDraft v1 | 4.386 | — |
| Recent-form average | 4.641 | +5.5% worse |
| Positional average | 6.093 | +28.0% worse |
| Position | Player-weeks | MAE |
|---|---|---|
| QB | 3,215 | 6.133 |
| RB | 7,519 | 4.397 |
| TE | 5,983 | 3.486 |
| WR | 12,015 | 4.360 |
| Group | Player-weeks | MAE |
|---|---|---|
| Likely starters | 12,178 | 6.048 |
| Low-usage players | 16,554 | 3.163 |
| Weeks | Player-weeks | MAE |
|---|---|---|
| 1–6 | 9,587 | 4.524 |
| 7–12 | 9,275 | 4.267 |
| 13–18 | 9,870 | 4.364 |
| Position | Inside | Below | Above | Avg width |
|---|---|---|---|---|
| QB | 47.7% | 29.1% | 23.2% | 10.3 pts |
| RB | 50.4% | 25.2% | 24.4% | 7.0 pts |
| TE | 50.3% | 25.9% | 23.8% | 5.6 pts |
| WR | 50.7% | 25.8% | 23.5% | 7.1 pts |
What we can and cannot say about the ranges. Coverage lands close to the 50% it aims for, which means the band is honest about its own width. It does not mean the band is narrow, useful, or better than anyone else’s — a very wide interval also achieves its coverage. We have not measured sharpness against a competing forecaster, so we make no claim that the ranges are our strongest result.
Not measured: 80% interval coverage — only the 50% band is built and scored; Sharpness against a competing forecaster, so interval quality cannot be called better than anyone else's; Pinball loss / CRPS; Kickers and defences; Rookies and debuting players; Start/sit decision regret and pairwise accuracy; Cluster-bootstrap confidence intervals on the differences.
A "floor" here is not a worst case. It is the 25th percentile: a quarter of the time the real result will be below it.
What the projection model doesn't know
Being specific about this matters more than the accuracy numbers do. These are limits of layer 1 — some are handled by layer 3, and it says which:
- No opponent adjustment. Matchup quality is not reflected. We built it and measured it, and it did not improve held-out accuracy, so it did not ship.
- No injury or practice data in the model itself. Handled by the availability overlay instead, with its source and age shown wherever it changes advice.
- No bye awareness in the model itself. Handled by the recommendation layer, from the real schedule.
- No weather, no betting lines, no depth-chart or coaching-change signal anywhere yet.
- No rookies or debuts — with no prior data we publish nothing rather than guess. This is a real gap for a draft-season product and is the next thing being built.
- Players with no NFL team are skipped entirely.
Every projection set is versioned and dated, so a number you were shown can always be traced back to the build that produced it.
What the numbers can't tell you
Projections lag breaking news by hours; early-season and preseason samples are noisy; a "fair trade" verdict is a band, not a truth — roster fit, byes, and league tendencies matter and no aggregate can see them. Treat everything here as guidance, not certainty. If a number decides your championship, read it twice and check the timestamp under it.
How news is collected and categorized
Headlines on News and Rumours are gathered automatically from the public feeds of major national sports outlets. Every item links to — and credits — the outlet that did the reporting; nothing is rewritten. Category labels (Trades, Signings, Injuries, Coaching & FO, Buzz) are assigned by automated keyword rules with an explicit veto list for legal stories, opinion pieces, and other non-transactions. When the rules aren't confident, a story is left uncategorized rather than mislabeled. Spotted a wrong label anyway? See corrections.