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.
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.
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
The site no longer displays trade-market prices. Earlier versions of Rankings showed values derived by a third-party service from trades accepted in real fantasy leagues. Publishing that data is paused while we seek the provider's written permission, and nothing on the site is computed from it today.
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 current market value — we add no editorial adjustment. The VALUE and REACH flags on the Draft Board compare two orderings of the same player: his market-value rank versus his draft-position order. When the market ranks 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.
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:
- Market value (35%): the average gap between each of your picks and the player's live market rank. Positive gaps (the market rated him higher than your pick number) raise the score.
- Starting lineup (35%): the total market value of your best legal lineup, 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), extreme hoarding at one position, and four or more starters sharing a bye week.
Tiers on the draft board are value-gap tiers: within a position, a new tier begins where the drop to the next player exceeds 12% of the previous player's value. Kickers and defenses carry no market price, 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 — market gap, open starting slots, tier cliffs, position runs, and survival odds to your next pick — and always show their reasons in plain language.
How fresh each dataset is
- Trade values / rankings: refreshed daily; if the live feed is unreachable, tools fall back to a dated snapshot and say so on screen.
- 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 2025-season numbers (the season is complete).
- 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 Season HQ 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. Panel definition and raw output: docs/PROJECTIONS.md.
Loading the published figures…
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
Market values 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.