The Fantasy Basketball Encyclopedia

Research Desks

Projection methodology desk

The 2026-27 encyclopedia should consensus-build from dated primitive stat forecasts, then transform them separately for each league format; averaging published ranks would mix incompatible questions and manufacture false precision.

Up: 2026-27 Fantasy Basketball Encyclopedia

Related: 2026-27 fantasy basketball projection methodology · 2026-27 fantasy basketball evidence and confidence policy · Using projection disagreement in fantasy basketball · Fantasy basketball replacement level · Fantasy basketball decision calibration

Scope and evidence labels

This desk was researched through 2026-07-18, America/New_York. It audits how public sources can and cannot feed the encyclopedia; it does not reproduce subscription tables or treat a vendor's marketing description as an accuracy study.

Desk verdict

Desk inference, 2026-07-18: there is no mathematically honest universal fantasy rank. The reusable object is a dated distribution over games, minutes, and primitive basketball events. Nine-category per-game value, nine-category totals, head-to-head category win probability, rotisserie standings value, platform-specific fantasy points, dynasty value, and market ADP are different transformations of that object.

The early public 2026-27 data supply is also much thinner than the page titles can suggest. Several prominent tools still expose 2025-26 data, a last-season draft view, an inaccessible subscriber table, or a dynamic page with no extractable update stamp. These remain useful for mechanics and historical priors, but not as silent 2026-27 numerical inputs.

Public projection and ranking source audit

Page states below are facts observed on 2026-07-18 unless another date is stated. Dynamic pages may change after the cutoff.

Source State at cutoff What is methodologically usable What is not safe to infer
Hashtag Basketball user guide Public method guide; ranking and projection pages were reachable Per-game versus total toggle; standard, H2H floor, and minus-one views; category inclusion and multipliers; 7/14-day blends described as 50% house projection and 50% recent sample The exact proprietary formula for percentage-category impact is not published in the guide
Hashtag category projections Labelled 2025-26, updated 2026-04-13; late-season remaining-game counts were still visible Primitive GP, MPG, makes/attempts, counting stats, total/average controls, games-played penalties, blend controls It is not a 2026-27 projection set merely because it remained online in July
Hashtag points projections Labelled 2025-26, updated 2026-04-13 Custom points scoring and primitive-stat design Current 2026-27 values
Basketball Monster Public landing page said the site was being upgraded through July and expected to open in mid-August; the navigation exposed “Projections 26-27,” but the unauthenticated projection link returned to the landing page Full-season versus short-term horizons, custom platform settings, z-score rankings, source-specific alternative projections, and an advertised high/low range Subscriber projections, exact formulas, or a probability attached to the high/low range. A range without stated coverage is not a calibrated interval
Basketball Monster July update Current forum update said Draft Monster was using last-season rankings and tied the normal opening to the schedule release Direct warning against mistaking the current draft screen for 2026-27 output Any numerical 2026-27 rank from an inaccessible table
RotoWire projections Public page still titled 2025-26; full-season, rest-of-season, today, and tomorrow horizons were listed; complete sortable access was subscription-limited Stated input families—history, projected minutes, pace, matchup, injuries/lineups, and expert review—and the importance of horizon Exact weights, reproducibility, or 2026-27 values. The landing description is not a backtest
RotoWire custom-rank explainer Published 2025-10-05 Explicit support for the proposition that H2H, roto, and points ranks must be generated from exact league settings A universal RotoWire rank independent of format
FantasyPros ECR method Help article updated 2026-07-17 ECR uses rank points and handles missing expert ranks without an arbitrary unranked placeholder ECR as a statistical projection or outcome distribution
FantasyPros NBA overall rankings Still titled 2025-26 Best, worst, average, standard deviation, expert count, ECR, and ECR-versus-ADP are useful rank-metadata fields Current 2026-27 consensus. Expert-rank spread is not player-outcome uncertainty
FantasyPros API documentation API key required; documentation exposes consensus rank fields and projection primitives, but its displayed examples are historical A schema worth emulating: season, type, GP, minutes, makes/attempts, percentages, counting stats, source count, update date, rank range and dispersion That current NBA data are public, fresh, or complete merely because fields exist in documentation
ESPN early points ranks Published 2026-04-14, before the draft and most offseason transactions A timestamped analyst opinion for H2H points and a historical market signal Category value, a stat projection, or a post-offseason depth-chart view
ESPN interactive projections Page title referenced 2026-27, but rows and update metadata were JavaScript-dependent in the public extraction A source lead that can be captured manually with a dated snapshot and declared league settings A reproducible current data set or documented model from the static page alone
LineupExperts help Public current help Points are calculated with exact league settings; category value uses a context-dependent “Z-score+”; percentage value uses makes and attempts; removing a punt category changes total value A player value independent of player universe or league context
LineupExperts basketball API Preseason endpoint described as updating once or twice weekly and requiring an add-on/API key; the in-season service said basketball was inactive Clear source/update/access metadata and primitive-field dictionaries Current full-table access or active in-season forecasts at the cutoff
DraftKick Landing page advertised projection aggregation, custom blends, exact scoring, editable stats, standings, and ADP; no visible source roster, weights, season, or update timestamp was established Product lead and useful feature checklist Reproducible consensus, independence of inputs, or current 2026-27 coverage
HoopMetrics Displayed “Last Updated: 2026-02-15” Per-game/totals, scheduled games versus played games, positional z-scores, and team aggregation as interface ideas A current post-offseason baseline or documented methodology
Roto Intel 2026 beta landing page advertised league sync and Monte Carlo category-win probabilities Emerging lead for opponent- and schedule-aware evaluation Validated probabilities, model details, backtests, or publicly auditable output

Desk inference: a source may therefore be useful in one layer and unusable in another. A stale page can document scoring controls; a current rank can encode opinion but no stat line; a polished model can still be uncalibrated; and a paywalled source can be compared only if a lawful dated snapshot and its settings are available.

Canonical projection contract

Every imported observation should become one immutable source record before any consensus calculation.

Field group Required content
Provenance Source, author/model, canonical URL, publication/update timestamp, retrieval timestamp, access state, snapshot/version ID
Scope NBA season, preseason/rest-of-season/daily horizon, redraft or dynasty, per-game or total, category/points/platform format, rank population
Identity Canonical player ID and name, team at source cutoff, eligible positions as sourced, roster state
Exposure Expected games available, games counted where different, active-game MPG, starts or role state when supplied
Counting primitives FGM, FGA, FTM, FTA, 3PM, PTS, REB, AST, STL, BLK, TO; retain any extra categories rather than discarding them
Distribution Point estimate; low/high only with a defined probability or scenario; source probabilities when published; never reverse-engineer certainty from rank spread
Rank metadata Rank value, expert count, missing-rank rule, best/worst/mean/dispersion, ADP separately, scoring settings separately
Audit Stale flags, manually corrected fields, derived-versus-source values, unit checks, superseding record, known source lineage

Do not overwrite an April rank with a July rank. Store both snapshots; the change itself is evidence about the information set.

Category normalization

Ordinary counting categories

For a declared comparison population \(P\), a conventional standardized contribution is

\[ z_{ic}=s_c\frac{x_{ic}-\mu_{c,P}}{\sigma_{c,P}}, \]

where \(s_c=-1\) for a category in which lower is better, normally turnovers, and \(s_c=1\) otherwise. The sign, population, horizon, and unit must all be recorded. A per-game \(z\) against 450 rosterable players cannot be compared directly with a season-total \(z\) against all players who logged a minute.

Fact: LineupExperts explicitly says its context-dependent category score can change when the report's player subset changes (help page). Desk inference: the encyclopedia should define a rosterable population from league teams, active roster slots, and a small replacement band, then publish the population with the rank.

Percentage categories

Raw FG% and FT% z-scores ignore volume. Project makes and attempts, then represent the player's effect relative to a declared baseline \(p_{0}\):

\[ d_i=A_i(p_i-p_0)=M_i-p_0A_i. \]

Standardize \(d_i\) across the declared population for a standalone rank, or—preferably for roster tools—aggregate makes and attempts first and recompute the team's ratio. LineupExperts documents this make/attempt logic. Yahoo's composite-stat help documents the importance of the underlying ratio components in platform scoring.

Desk inference: a source that supplies only FG% and FT% without attempts cannot be faithfully normalized. Mark percentage contribution missing; do not invent average volume from position.

Nine-category does not name one game

Yahoo's published standard categories are FG%, FT%, 3PTM, PTS, REB, AST, STL, BLK, and TO (default settings, checked 2026-07-18). Ottoneu's category game instead uses points, rebounds, assists, steals, blocks, FG%, FTM, 3PT%, and fewest turnovers (Ottoneu scoring rules). Both have nine dimensions; their ranks are not interchangeable.

Even with identical categories, objectives differ:

The academic results are research evidence under stated models, not proof of production accuracy in a live 2026-27 league.

Points-league normalization

For linear scoring, apply the league's exact weights to projected event totals:

\[ FP_i=\sum_c w_c x_{ic}. \]

Yahoo's help currently lists default basketball point weights including 1 per point, 1.2 per rebound, 1.5 per assist, 3 per steal or block, and -1 per turnover (default settings, checked 2026-07-18). Ottoneu publishes materially different “Simple” and “Traditional” equations (rosters and scoring). ESPN's rules likewise define H2H points as commissioner-selected category weights accumulated over the matchup (scoring format).

Therefore a rank labelled only “points” is under-specified. Preserve every scoring weight, penalty, cap, roster rule, and lineup horizon.

Bonuses are nonlinear. A double-double bonus cannot be awarded because a player's average line crosses ten in two categories. It requires a game-level probability model. Similarly, missed-shot penalties require attempts and makes rather than FG% alone.

Sleeper's Lock-In mode is a separate decision problem: one game per player per week counts after the manager chooses to lock it, and the player is then unavailable for the rest of that week (Sleeper game-mode rules, updated 2025-10-21). Multiplying per-game output by weekly games systematically misstates that format; the relevant model is an optimal-stopping distribution over eligible games.

Per-game, totals, and playable opportunity

Keep three quantities separate:

\[ \text{active-game line}_i=M_i r_i, \]

\[ \text{season total}_i=E[G_i]\,M_i r_i, \]

\[ \text{fantasy-realizable total}_i=E[L_i]\,M_i r_i, \]

where \(L_i\) is the number of games that can actually be started under roster locks, caps, eligibility, congestion, and manager behavior. Expected availability is not the schedule maximum, and scheduled games are not automatically playable games.

The total conversion must be performed on makes, attempts, and counting primitives—not on a published z-score. When only a total and expected games are available, a derived per-game estimate is allowed if the denominator is explicit and nonzero; flag it as derived because a source may use a different games convention.

Desk inference: every encyclopedia player page should display both per-active-game and season-total views. Weekly tools should add schedule and lineup feasibility later, rather than contaminating the underlying skill projection.

Replacement level and auction value

Rank answers “who is better in the declared population?” Replacement answers “what is lost if this roster slot is filled by the best feasible alternative?” Define

\[ S_i=V_i-V_{R(s,f,h)}, \]

where \(R\) depends on roster slot or position \(s\), format \(f\), and horizon \(h\). In daily leagues, replacement is a path through waiver players and available games, not necessarily one season-long player. The full operational treatment lives in Fantasy basketball replacement level.

For auction values, allocate the spendable player budget over positive replacement surplus after preserving the league's minimum bids. Do not convert overall z-rank directly to dollars. Ottoneu's published structure—12 teams, a $400 cap, 25 roster spots, and a player pool extending beyond the NBA—illustrates why a platform-specific replacement pool can be radically deeper than a default redraft league (Ottoneu rules).

ADP is acquisition behavior, not replacement value. Keep projected production, replacement surplus, auction price, and market ADP in separate columns.

Uncertainty: what a useful range must mean

Causal components

The base forecast should decompose

\[ T_i=G_i\times M_i\times r_i \]

into at least:

Low/base/high encyclopedia cases are causal states—such as cleared by opening night, delayed with a restriction, or displaced in the rotation—not the minimum, median, and maximum numbers scraped from vendors.

Range labels

A range must say whether it is:

Basketball Monster advertised projection ranges for 2025-26 but its public landing page did not assign a coverage probability at this cutoff (site); the encyclopedia should call those source ranges, not 80% or 90% intervals. By contrast, the historical FantasyLabs NBA glossary defines its DFS ceiling and floor so that 15% of outcomes lie above and 15% below, implying a labelled central 70% band (glossary). That page is older and DFS-specific, so it is a methodological example rather than a 2026-27 season-long input.

Between-source disagreement is not a prediction interval. It omits shared model error, can be narrow when sources copy the same assumptions, and can be wide because dates or formats differ.

Calibration and backtesting

Forecast evaluation requires frozen preseason snapshots. Final revised projections cannot be scored as though they were available on draft day.

Target Recommended checks Failure revealed
Games played and MPG MAE, median absolute error, bias, quantile/interval coverage Availability or rotation miss
Primitive per-game rates MAE/RMSE by stat; bias by age, role, rookie status, team change, and injury return Skill/rate miss
Season primitive totals MAE plus decomposition into games, minutes, and rate Whether a good rank hid the wrong mechanism
Binary events Brier score and reliability bins for events such as opening-night availability or rotation membership Misstated event probabilities
Full distributions CRPS, interval coverage, average interval width, and tail checks Uncalibrated or unhelpfully broad ranges
Category outcomes Predicted versus realized category-win probabilities and matchup probabilities Transform/objective miss
Points outcomes Error under each exact scoring formula Platform translation miss

Gneiting, Balabdaoui, and Raftery define the forecasting goal as maximizing sharpness subject to calibration (2007 paper). A narrow interval is valuable only if it achieves its stated coverage. Reliability diagrams group predicted probabilities and compare them with observed frequencies; current scikit-learn documentation also warns that Brier and log loss mix calibration with other performance properties rather than measuring calibration alone (calibration guide).

Desk inference: calibration cohorts must be time-based and out-of-sample. Report veterans, rookies, traded players, injury returners, and low-minute players separately. A model can be globally calibrated while failing badly on the exact cases fantasy managers care about.

Consensus handling

Do this

  1. Freeze a source snapshot and its cutoff.
  2. Map identities, teams, horizon, units, and format into the canonical contract.
  3. Retain source GP and MPG before touching rates.
  4. Convert makes/attempts and counting primitives to a common per-active-game basis only where denominators are known.
  5. Exclude or quarantine stale, mislabelled, structurally incomplete, and wrong-format rows.
  6. Combine each primitive component using a robust median or trimmed mean as the default.
  7. Preserve every source estimate and decompose disagreement into games, minutes, rate, and scoring transformation.
  8. Weight a source only after out-of-sample evidence, shrink learned weights toward equal weighting, and cap dominance.
  9. Treat sources sharing an upstream projection feed or nearly identical snapshots as a correlated family, not independent votes.
  10. Rebuild per-game, totals, category, points, replacement, and league-specific ranks from the consensus primitives.

Forecast-combination research supports treating simple averages as strong baselines and emphasizes that dependence, instability, and weight estimation matter; see the broad forecast-combination review and the Federal Reserve discussion of forecast averaging under instability (Clark and McCracken). These are general forecasting sources, not basketball-specific accuracy claims.

Do not do this

FantasyPros' ECR illustrates the distinction. Its official method is a principled ordinal consensus that avoids arbitrary treatment of unranked players. It is still a consensus of rank sheets, not a consensus of games, minutes, or stat distributions.

Desk inference, proposed implementation:

  1. Maintain one canonical low/base/high primitive model per player with an information cutoff.
  2. Publish a declared reference nine-category per-game rank and season-total rank, plus transparent category components and the comparison population.
  3. Publish a declared reference points rank only after printing the scoring equation next to it.
  4. Add platform translators for Yahoo, ESPN, Sleeper, Fantrax, Ottoneu, and custom rules rather than presenting one generic points number.
  5. Add H2H category probability and rotisserie-threshold tools as roster-level layers, not as substitutions for the primitive player model.
  6. Record source-specific projections beside the encyclopedia estimate; never erase dissent.
  7. Keep ADP, expert rank, dynasty market value, redraft projection, and replacement surplus as separate concepts.
  8. Generate team minutes and player projections from the same roster snapshot, with each team's representative base rotation summing to 240 regulation minutes.

Audit gates before a rank is publishable

Community and emerging-model caution

A March 2026 creator post about Courtside Orbit described H2H-category G-scores, Monte Carlo simulation, and opponent-aware tools (Reddit thread). In comments, the creator also acknowledged that packed-day projections did not yet distinguish starters from bench and that a future variance model remained planned. This is a valuable design lead and an equally valuable warning: sophisticated simulation does not repair an incorrect playable-lineup layer. It is community self-report, not independent validation.

Gaps at the 2026-07-18 cutoff

Open questions