Algosys College Basketball

Search teams and players

Type a team or player name. Results are alphabetical; players show their 2026 team. Up and Down move, Enter opens the highlighted result or the first one, Esc closes.

Rating Definitions

2025–26 men’s Division I. 365 teams; 5,737 accepted games through 2026-04-06.

ORtg
100 × total points scored ÷ total estimated possessions. Higher is better.
DRtg
100 × total points allowed ÷ total estimated possessions. Lower is better.
Net
ORtg − DRtg. Default ranking is descending net efficiency.
Tempo
40 × total estimated possessions ÷ game minutes, including overtime.
Possessions
FGA − offensive rebounds + turnovers + 0.475 × FTA, averaged between both teams for each game.
D-I W–L
Record in accepted games against teams in the official NCAA Division I season directory.

Season ratings use sums of points and possessions, rather than an unweighted average of game ratings. Display rounds to one decimal place; ranking uses full precision.

These are raw efficiencies. No adjustment for opponent strength, venue, recency, or preseason expectations has been applied. They are not KenPom ratings.

Possession formula reference ↗

Experimental model estimates

The home-page rankings table includes independent cutoff estimates for all 365 teams. The default row order remains raw net efficiency. These estimates have not passed every predictive calibration, subgroup and uncertainty gate; they are not KenPom or official NCAA metrics.

AdjO / AdjD
Possession-weighted additive offense and defensive allowance, adjusted for opponents and explicit home/away/neutral designation. Ridge regularization shrinks sparse team effects. Both are centered on the fitted Division I baseline; lower AdjD is better.
AdjNet
AdjO − AdjD. Model-view ranks use this full-precision value.
AdjT
Opponent-adjusted possessions per 40 minutes. An additive pace model weights games by minutes, includes overtime and centers team effects. Faster is a style, not inherently better.
SOS
Mean opponent cutoff AdjNet minus twice the fitted efficiency home effect times own venue sign (+1 home, −1 away, 0 neutral). All accepted Division I games are included; higher means harder. This is our transparent schedule-strength definition.
NCSOS
The same formula applied only to games explicitly designated regular-season nonconference in the corroborated frozen ESPN schedule. Conference tournaments and national postseason are excluded. It is not inferred from team names or the current conference.
Expected wins
Sum of cutoff matchup probabilities against the completed schedule. This is retrospective expected record, not a record of pregame predictions. Shown on team pages.
RR
Actual accepted wins minus cutoff expected wins. Positive residual is not proof of luck; it is a descriptive difference under this model.
Model WAB
Actual accepted wins minus expected wins for a fixed cutoff benchmark against the same schedule at the same venues. The benchmark is the 45th team by this model’s adjusted net: Villanova. This independent model WAB does not reproduce official NCAA NET-45 WAB.

Cutoff probability calibration uses the four prior seasons, with a development-selected blend of raw and adjusted matchup strength that gives raw information greater weight in smaller samples. All pregame historical comparisons exclude target-date results. The current model uses completed-season ratings for schedule summaries; it must not be mistaken for a contemporaneous forecast. Undefined venue-sensitive totals stay unavailable rather than treating missing venues as neutral. 5,736 of 5,737 venues are reconciled. Penn–Villanova has conflicting institutional designations, so both teams’ complete schedule-derived totals are withheld.

Team page definitions

Min%
A player’s logged minutes divided by the team’s game minutes (40 per game plus five per overtime). A player on court for every minute reads 100%; the five slots sum to 500%.
Effective rotation size
Derived, not published. Each player’s share of all logged minutes is squared and summed; the effective size is one divided by that sum. Ten players with equal minutes read 10; one player with all minutes reads 1.
Top three and bench share
Derived from the same shares. Top three is the share of logged minutes played by the three players with the most minutes. Bench is the share played by everyone outside the five players with the most minutes. No positions are assigned.
Sample flags
Descriptive thresholds, not model output. Few games: under 10 logged games. Under 100 minutes: under 100 logged minutes. A dagger marks a rate on under 100 field-goal attempts (2P%, eFG%, TS%, FTA/FGA), under 50 three-point attempts (3P%) or under 25 free-throw attempts (FT%).
Last five
The team’s five most recent games. The small figure beside a last-five value is its difference from the season value, shown only when at least one of those games has a player log.
Rank mark
A small mark beside each national scouting rank. Its horizontal position repeats the printed rank on a scale of 365 teams, with the best rank at the right. It supplements the printed rank and the cell shading.
Player value by season
The player page lists every season in which the model produced a value with a range, newest first. Each row prints net, offense, defense, a range (10th to 90th percentile of 200 whole-game resampling draws, not a calibrated interval), an evidence label (sufficient: 600 or more on-court possessions; limited: 300 to 599), the split role of the season, and wins above replacement where it was computed (2023 onward). Split role: training and development seasons were used to fit or select the model, evaluation seasons were examined post hoc, and the descriptive season was not used in fit or gates. Each season is a separate retrospective fit, so no change or trend is shown, and the table is ordered by season only, never by value. Seasons before 2018 have a point value in the model files but no range, so no number is shown; a season the player played with no published value is listed as its own row with its split role and the reason. Flags printed beside a season: season-2021 marks the 2020-21 season, shortened by COVID-19 cancellations and kept in the model fit; unbound-teammates-share marks a player for whom more than 5% of on-court possessions included at least one of the other nine players on court (teammate or opponent) not matched to the player registry; prior-from-box-only marks a prior built from the box-score line without a prior-season value.
Team totals
Season sums of the team box score and of the opposing teams’ boxes in the same games. Observed arithmetic, not a model value, unadjusted for opponent or pace. Steals and personal fouls have no team figure in the source, so only the sum of player lines exists. Offensive and defensive rebounds exist for the team only, because player lines carry combined rebounds. Team minutes are derived (five players times game minutes), not observed.
Per game, per 40 and totals
Per game is the total divided by games played. Per 40 is the total times 40 divided by game minutes (40 per game plus 5 per overtime period). Totals are season sums. The basis chosen above the roster table also sets the basis of the team totals table.
Residual, tolerance and status
Residual is the team total in games with player logs minus the sum of player lines in those games. It is always shown; it is never dropped for being large. Tolerances were declared before the data were built and were not changed afterwards: counting statistics reconcile within 2 or 0.5% of the logged total, turnovers within 5 or 3%, rebounds within 10 or 8% (whichever is larger). Status: reconciled is within tolerance, residual shown is outside it, players exceed team means player lines add to more than the team total (a data problem), no team figure and no player split mean the comparison cannot be made. Team rebounds and team turnovers are credited to the team and not to a player, so most teams show a residual for those two statistics. A check declared in docs/team-residual-check-criteria.json found every team’s residual for them at zero or above, with medians of 3.4 rebounds and 0.6 turnovers per logged game, which is consistent with that explanation and does not prove it.
Team aggregate of player values
Experimental and model-implied. It combines the season’s player values with their share of on-court time, counting players under 300 possessions at the replacement level. The headline is the average over the five on-court slots; the five-slot sum is shown too, and a sum such as +70 is an artifact of adding five slots on the player-value scale, not a team margin. Its range comes from joint resampling draws, so it is not the sum of the players’ separate ranges. The wins figure applies the win conversion to each player separately, so it can exceed games played. It is not comparable to AdjNet or the record, and no list ranks or orders teams by it. Every value in it is a 2026 value, so one split role describes it (descriptive: not used in fit or gates).
Player value strip
Shows the published model-implied net value and its range for each player, in possession-share order. The graphic uses a shared axis with a line at zero. Open circle: limited evidence. Filled circle: sufficient evidence. Nothing is drawn when evidence is insufficient. It is not sortable, and no list ranks players by value. The model is experimental and not promoted; see the NIL section below for failed gates and the post-hoc disclosure.

NIL model-implied value (experimental)β

Not Promoted. Failed gates: L2, P4. Promotion Gates

Model nil-value-v3. Dollar status: suppressed: Elasticity cross-check failed: the wins-to-revenue elasticity prior and the cross-section implied elasticity differ by more than the declared factor, and no gate validates the prior. Frozen manifests: experiment 13921361a27d, hyperparameters 2abb3c68d90f, sources 75fc12664784. NIL overview

The 2023 to 2025 evaluation seasons were examined before this model version was built. The model changed after the promotion gates failed, so its evaluation results are post-hoc. Gates are unchanged and failed gates stay reported as failed. Tuning values were selected on development seasons 2019 to 2022. Adding shrinkage was motivated by the examined seasons, so a passing gate is weaker evidence than a clean test.

Gates and results

GateRequirementThresholdObservedScopeResult
L1accepted_game_share>= 0.60.6932023Pass
L1accepted_game_share>= 0.60.7212024Pass
L1accepted_game_share>= 0.60.7482025Pass
L3bound_possession_share>= 0.851.0002023Pass
L3bound_possession_share>= 0.851.0002024Pass
L3bound_possession_share>= 0.851.0002025Pass
L4minutes_within_2_share>= 0.951.0002023Pass
L4minutes_within_2_share>= 0.951.0002024Pass
L4minutes_within_2_share>= 0.951.0002025Pass
L2conference_accepted_share (minimum over conferences)>= 0.40.3852023Fail
L2conference_accepted_share (minimum over conferences)>= 0.40.2892024Fail
L2conference_accepted_share (minimum over conferences)>= 0.40.3602025Fail
P1rmse_gain_vs_box>= 0.020.0772023Pass
P1rmse_gain_vs_box>= 0.020.0662024Pass
P1rmse_gain_vs_box>= 0.020.0522025Pass
P1pooled school-cluster bootstrap lower bound of gain vs box> 00.044pooledPass
P2seasons with incremental gain vs prior rating >= minimum (of 3)>= 23.000pooledPass
P2pooled bootstrap lower bound of incremental gain> 00.031pooledPass
P3interval_coverage_80 within [min, max]within 0.70.7852023Pass
P3interval_coverage_80 within [min, max]within 0.70.7782024Pass
P3interval_coverage_80 within [min, max]within 0.70.8102025Pass
P4worst slice RMSE of the model relative to box baseline<= 0.050.053pooledFail
R1crosswalk coverage (min of school-data rows and registry teams)>= 0.90.981primaryPass
R2conference-blocked CV rmse gain; coefficient positive; interval lower bound above 0; sensitivity same sign>= 0.020.257primaryPass
R3implied per-win elasticity versus prior (report only)report 00.095primaryreport-only
R4temporal hold-out gain on multi-year EADA>= 0.02—not-runNot run
S1rest effect points per rest-day unit (evaluation-pooled)>= 0.30.857evaluationPass

Sources

SourceVerifiedDesignUseLimitsRetrieved
Sill (2010), Improved NBA adjusted +/- using regularization and out-of-sample testing (MIT Sloan)VerifiedNBA ridge adjusted plus-minus, out-of-sample testRidge over unregularized fits; prior scale contextConference paper, one short window, NBA data; scale context only2026-10-04
Rosenbaum (2004), Measuring how NBA players help their teams win (82games)VerifiedUnregularized adjusted plus-minusNever show a point value without a rangeStandard errors of 2.1 to 6.3 per 100 possessions; not peer reviewed2026-10-04
Basketball-Reference, Box Plus/Minus 2.0VerifiedBox-score regression to adjusted plus-minus with a Bayesian priorStructure of the box-score prior and the replacement-level conceptNBA scaled; no published fit statistics2026-10-04
Deshpande and Jensen (2016), Estimating an NBA player's impact on his team's chances of winning (JQAS)VerifiedBayesian posterior draws for player impactDraw-based range language; retrospective contribution wordingAuthors call estimates unsuitable for forecasting2026-10-04
PLOS ONE analysis of ESPN real plus-minusVerifiedFixed-effects analysis of teammate leakageValues are labelled retrospective contribution, context-dependent, never abilityNBA data2026-10-04
Dummy terms for low-minute players in regularized adjusted plus-minus (arXiv:2608.19454, preprint)VerifiedHeld-out margin RMSE with pooled dummy termsPooled terms for low-minute and unbound playersPreprint; NBA data2026-10-04
Lineup-level regularized adjusted plus-minus (arXiv:2601.15000, preprint)VerifiedShrinkage toward summed player estimatesSupports structured priors for sparse samplesPreprint; NBA data2026-10-04
Brown (2008), In-season prediction of batting averages (Annals of Applied Statistics)VerifiedEmpirical-Bayes shrinkageGroup-mean prior for unlinked playersBaseball2026-10-04
Nguyen and Matthews, performance-dependent dropout and aging curves (arXiv:2210.02383)VerifiedSurvivorship in observed aging curvesSurvivorship caveat for the descriptive development diagnosticBaseball offense2026-10-04
Chung (2017), Management Science 63(2): value of a win in college athletics (HBS summary)VerifiedRevenue response to winsPrior for the per-win revenue elasticity; not validated hereSecondary summary only; paper not opened; revenue not split by source2026-10-04
Borghesi (2018), Journal of Sports Economics abstractVerifiedMarginal revenue of recruitsSanity comparison only; never a parameterAbstract level; proprietary ratings underlie it2026-10-04
NCAA 2024 Division I Revenue Distribution PlanVerifiedPrimary NCAA documentContext for why the school share of tournament units is unknownSharing within conferences is encouraged, not specified2026-10-04
EADA 2024 User's GuideVerifiedPrimary U.S. Department of Education documentCaveat on every revenue numberRevenue is any money used to pay expenses; self-reported, no external review2026-10-04
College Sports Commission revenue-sharing pages and NIL Go data reportVerifiedPrimary regulator pagesDated context figures only; not used in any calculationSchool-wide; no sport, school or player breakdown; settlement agreement not retrieved2026-10-04
Steenland and Deddens (1997), Effect of travel and rest on performance of professional basketball players (Sleep)VerifiedNBA rest and travelRest capped at three days; order of magnitude onlyAbstract level; 1990s NBA2026-10-04
Eastward jet lag and NBA performance (PMC9245584)VerifiedNBA travel and directionShows distance claims cannot be assumed; travel distance is not modeledResults conflict across NBA studies2026-10-04
The Sport Journal, evaluating the two-game road trip in college sportsVerifiedSun Belt men's road trips, 48 tripsCollege effects may be null; a null is reported as a nullSmall sample; one conference2026-10-04

Features excluded and why

  • Player-level pay data and commercial NIL valuations: not used; those sources are proprietary or self-reported, and no figure here is observed pay or a market price.
  • Position, class, age, height, weight and hometown: not performance measures and not used.
  • Injuries, travel distance, time zones and attendance: no data in the repository.
  • Portal event studies, synthetic controls and a minutes-allocation optimizer: out of scope for this version.
  • Multi-year EADA data: blocked until a person reads the terms of use in a browser and confirms the fiscal-year mapping, so the temporal revenue gate is not run.
  • The tournament-unit revenue component: disabled until the unit-earning rule is confirmed from an NCAA primary document.
  • League-wide player rankings, dollar leaderboards and any comparison of an individual with the House cap: not provided by design.

Game exclusions

  • 2023: lineup-coverage, 1181 games
  • 2023: minutes-mismatch, 1 games
  • 2023: no-independent-minutes, 109 games
  • 2023: no-pbp, 362 games
  • 2023: not-in-audited-table, 914 games
  • 2023: score-decrease, 2 games
  • 2023: score-mismatch, 86 games
  • 2024: lineup-coverage, 1036 games
  • 2024: no-independent-minutes, 118 games
  • 2024: no-pbp, 353 games
  • 2024: not-in-audited-table, 922 games
  • 2024: score-mismatch, 75 games
  • 2025: lineup-coverage, 890 games
  • 2025: minutes-mismatch, 1 games
  • 2025: no-independent-minutes, 145 games
  • 2025: no-pbp, 353 games
  • 2025: not-in-audited-table, 938 games
  • 2025: score-mismatch, 52 games
  • 2026: lineup-coverage, 146 games
  • 2026: minutes-mismatch, 1 games
  • 2026: no-independent-minutes, 6 games
  • 2026: no-pbp, 468 games
  • 2026: not-in-audited-table, 1028 games
  • 2026: score-decrease, 1 games
  • 2026: score-mismatch, 55 games
  • 2026: unknown-venue, 1 games

Limitations

  • Evaluation seasons 2023-2025 were examined under nil-value-v2, where gates L2, P1 and P4 failed. The nil-value-v3 model changes (own box prior for low-minute returners, shrinkage toward the box prior) were made after those failures. Selection used development seasons 2019-2022 only, but v3 evaluation results are not pristine: they are a re-look at examined data. Gates that still fail are reported as failed.
  • Companion diagnostic beside the frozen P4 gate (never in place of it): the median maximum relative RMSE over slices of the same sizes drawn at random is +0.050, against the frozen threshold of 0.05. This companion is computed from the examined evaluation-season predictions, so it is a post-hoc diagnostic and not a basis for any pass. The median chance maximum is at or just below 0.05, which is knife-edge, and the 5th to 95th percentile range is wide; it does not soften the P4 result. P4 is a failed gate as the gate computes it.
  • Shrinkage disclosure: the P1 and P4 gates of record are computed on a predictor blended toward the box prior (weight 0.5 on the player-value model), a design choice made after the v2 gates failed and after the evaluation seasons were examined. At weight 0.5 the development worst slice was +0.008 but the examined evaluation worst slice is +0.053, so tuning on development was optimistic about evaluation. Without shrinkage the evaluation worst slice is +0.094, which also fails P4. The P1 pass does not depend on the blend: without it the evaluation gains are +9.0%, +6.6%, +5.8%.
  • The decision to add shrinkage was motivated by evaluation-season evidence that had already been examined (amendment A7 withdraws the claim that it was chosen on development alone). Only the weight within the grid was selected on development seasons 2019 to 2022, the grid was written after the P4 failure, and the dummy ratio sits at the edge of its grid.
  • L2 is capped by source data (missing play-by-play player ids, play-by-play and independent minutes). No rule was loosened, and L2 is reported as the gate computes it.
  • Retrospective contribution is context-dependent: an association within the fitted lineups, not the effect of adding a player and not ability.
  • Ranges are diagnostic whole-game resampling ranges, not calibrated intervals.
  • Evaluation seasons were examined during earlier team-rating work, so they are historical evidence rather than untouched tests.
  • Dollar figures, when shown, are model-implied allocations of a program-level estimate. They are never observed pay and never a market price.
  • EADA revenue is self-reported by schools with no external review, and for most programs revenue equals expenses.
  • The EADA 2024-25 label is paired to repo season 2025 (primary) or 2026 (alternate); the fiscal-year mapping is unconfirmed.
  • P1, P2 and P4 weight prior-season player values by minutes players actually played in the evaluated season (known rosters); the prior-rating baseline has no roster information. This is a known-roster test, not a forecast. Players who left have no minutes and drop out.
  • P3 coverage is conditional on players with enough possessions in both seasons, uses a method-of-moments variance that assumes independent season errors, and is not a test of the ranges shown to users.
  • L3 counts lineup players that resolve to a registry player id, the loosest reading of bound, and it is measured after the minutes-agreement filter, which rejects games with an unbound player. It cannot discriminate. The strictly athlete-linked possession share and the pre-filter shares are reported in binding_diagnostics and in each lineup season summary.
  • Association, not a causal effect: rest is not randomized and depends on scheduling choices and, in postseason play, on advancing.
  • Rest is linear and capped, and is measured from Division I games only, so exhibition and non-Division I games make rest look longer.
  • The AdjNet control is a stale weekly rating, so strength changes within a season are not controlled.
  • Per-season coefficients vary widely and the evaluation estimate exceeds the development and descriptive estimates.
  • The team-cluster bootstrap resamples the first-listed team only and ignores opponent dependence, so the range is too narrow.
  • Dollar ranges are driven by a literature elasticity prior that no gate validates; their spread reflects the prior sd and win-draw variance only, and the cross-section can disagree with the prior.
  • EADA revenue equals expenses for most rows; displayed lower bound is 0 for those programs.
  • Cross-sectional slope cannot separate revenue response from rich programs buying wins, so e comes from the prior.
  • No NIL, collective or House revenue-sharing line exists in the EADA data.

Ranges are the 10th to 90th percentile of whole-game resampling draws. They are not calibrated intervals. Model-implied allocation of a program-level estimate. Not observed pay or a market price.

Speculative compensation (experimental)β

Amendment A10, owner decision: the product publishes per-player compensation as a best-guess, speculative, unvalidated estimate. The dollar chain changed from suppressed to published as speculative; the value model is unchanged and stays promoted: false (gates L2 and P4 fail). Nothing here is a promotion argument.

Each figure is a best guess of a player's share of the school's own revenue-sharing budget, with an 80% range. No pay data exists to check it. It is not observed pay, an offer or a market price.

  • Estimand: a school’s own House-settlement revenue-sharing money for men’s basketball in 2025–26. No such budget existed in earlier seasons, so earlier seasons carry no figure.
  • Point best guess is the median of 4,000 joint draws of budget and player value; the range is the 10th to 90th percentile. Within every draw the players’ figures sum to the team pool exactly. The ranges are mixtures of assumptions, not calibrated intervals.
  • The disagreement between the literature elasticity and the cross-section elasticity (a factor of about 2.7) is carried as four pool scenarios and shown as spread, never resolved silently.
  • Not included: third-party and collective NIL deals, non-cash benefits, bonuses and incentive terms, and anything outside the school’s own revenue-sharing channel.
  • No comparison with actual pay (none is held), no league-wide ordering by dollars; rosters stay in possession-share order. Opt-out schools have a pool of exactly zero.

Loading assumptions and anchors.

NIL value methodology · manifest loading

Expected performance (experimental)β

Status: failed-development. Model nil-projection-v1, promoted: false. Development failed, so no per-player projection is published and no player page shows an expected-performance figure; this page publishes the criteria table only. The net-value projection failed development (E1) and is not published. Selection used development seasons 2019 to 2022 only, with criteria declared before any 2023 to 2025 result was looked at. Seasons 2023 to 2025 had been examined before this method existed, so they are reported once as previously examined evidence and were never used to choose anything; only the 2026 to 2027 forward test is clean.

2019-2022, fit on 2012-2018 targets: RMSE 1.410 for the method, 1.536 for persistence of the input-season published net (M0) and 1.812 for the input-season league mean (M1); mean 80% range width 3.61 against 4.68 for a constant-width Gaussian around M1 and 3.91 around M0; 6031 pairs. 2023-2025, refit on 2012-2022 targets, previously examined: RMSE 1.474 for the method, 1.634 for persistence of the input-season published net (M0) and 1.936 for the input-season league mean (M1); mean 80% range width 3.60 against 4.64 for a constant-width Gaussian around M1 and 3.90 around M0; 5456 pairs.

Net projection, development criteria

GateRequirementThresholdObservedScopeResult
E1RMSE gain against persistence of the input-season published net is at least 0.08 in each season and the pooled interval lower bound is above 0>= 0.080.082development 2019-2022Fail
E2RMSE gain against the league mean of the input season is at least 0.05 in each season and the pooled interval lower bound is above 0>= 0.050.222development 2019-2022Pass
E3Pooled CRPS gain against a constant-width Gaussian around the input-season league mean is at least 0.05>= 0.050.217development 2019-2022Pass
C180 percent interval coverage within [0.76, 0.84] pooled and [0.72, 0.88] in each seasonin range 0.760.803development 2019-2022Pass
C250 percent interval coverage within [0.45, 0.55] pooledin range 0.450.499development 2019-2022Pass
C3Calibration slope of outcome on predicted median within [0.85, 1.15] pooledin range 0.850.980development 2019-2022Pass
C480 percent coverage within [0.72, 0.88] in each evidence tier (by_season holds the tiers)in range 0.720.770development 2019-2022Pass
C5Each of 10 PIT bins holds between 0.5 and 1.5 times its expected count (by_season holds the ratios)in range 0.50.889development 2019-2022Pass
N1Shuffled-target control: after refitting on shuffled training targets, the E2 and E3 gains have pooled intervals that include 0includes 0 00.012development 2019-2022Pass
R1Pooled possession-share RMSE gain against persistence is at least 0.05 with interval lower bound above 0>= 0.050.148development 2019-2022Pass
R2Possession-share 80 percent coverage within [0.76, 0.84] pooledin range 0.760.796development 2019-2022Pass

Net projection, previously examined seasons

GateRequirementThresholdObservedScopeResult
E1RMSE gain against persistence of the input-season published net is at least 0.08 in each season and the pooled interval lower bound is above 0>= 0.080.098evaluation 2023-2025, previously examined, not a clean testPass
E2RMSE gain against the league mean of the input season is at least 0.05 in each season and the pooled interval lower bound is above 0>= 0.050.238evaluation 2023-2025, previously examined, not a clean testPass
E3Pooled CRPS gain against a constant-width Gaussian around the input-season league mean is at least 0.05>= 0.050.234evaluation 2023-2025, previously examined, not a clean testPass
C180 percent interval coverage within [0.76, 0.84] pooled and [0.72, 0.88] in each seasonin range 0.760.784evaluation 2023-2025, previously examined, not a clean testPass
C250 percent interval coverage within [0.45, 0.55] pooledin range 0.450.482evaluation 2023-2025, previously examined, not a clean testPass
C3Calibration slope of outcome on predicted median within [0.85, 1.15] pooledin range 0.850.981evaluation 2023-2025, previously examined, not a clean testPass
C480 percent coverage within [0.72, 0.88] in each evidence tier (by_season holds the tiers)in range 0.720.766evaluation 2023-2025, previously examined, not a clean testPass
C5Each of 10 PIT bins holds between 0.5 and 1.5 times its expected count (by_season holds the ratios)in range 0.50.922evaluation 2023-2025, previously examined, not a clean testPass
R1Pooled possession-share RMSE gain against persistence is at least 0.05 with interval lower bound above 0>= 0.050.169evaluation 2023-2025, previously examined, not a clean testPass
R2Possession-share 80 percent coverage within [0.76, 0.84] pooledin range 0.760.756evaluation 2023-2025, previously examined, not a clean testFail

Shooting expectations (not published per player)

GateRequirementThresholdObservedScopeResult
free_throw:S1attempts-weighted RMSE gain against the raw prior-season percentage in every development season>= 0.030.133development 2019-2022Pass
free_throw:S2attempts-weighted calibration slope of realised on predicted percentage, pooled developmentin range 0.81.105development 2019-2022Pass
free_throw:S3predictive 80 percent beta-binomial coverage, pooled developmentin range 0.70.760development 2019-2022Pass
free_throw:S4targets shuffled within season, k re-picked on shuffled development data; attempts-weighted RMSE gain against the input-season league rate has a pooled confidence interval that includes 0includes 0 0-0.000development 2019-2022Pass
free_throw:E-gainpooled evaluation RMSE gain against the raw percentage above 0 with confidence interval lower bound above 0> 00.101evaluation 2023-2025, previously examined, not a clean testPass
free_throw:E-coveragepooled evaluation coverage within [0.65, 0.95]in range 0.650.751evaluation 2023-2025, previously examined, not a clean testPass
free_throw:E-slopepooled evaluation calibration slope within [0.75, 1.25]in range 0.751.171evaluation 2023-2025, previously examined, not a clean testPass
three_point:S1attempts-weighted RMSE gain against the raw prior-season percentage in every development season>= 0.030.301development 2019-2022Pass
three_point:S2attempts-weighted calibration slope of realised on predicted percentage, pooled developmentin range 0.80.690development 2019-2022Fail
three_point:S3predictive 80 percent beta-binomial coverage, pooled developmentin range 0.70.842development 2019-2022Pass
three_point:S4targets shuffled within season, k re-picked on shuffled development data; attempts-weighted RMSE gain against the input-season league rate has a pooled confidence interval that includes 0includes 0 00.000development 2019-2022Pass
three_point:E-gainpooled evaluation RMSE gain against the raw percentage above 0 with confidence interval lower bound above 0> 00.271evaluation 2023-2025, previously examined, not a clean testPass
three_point:E-coveragepooled evaluation coverage within [0.65, 0.95]in range 0.650.814evaluation 2023-2025, previously examined, not a clean testPass
three_point:E-slopepooled evaluation calibration slope within [0.75, 1.25]in range 0.750.956evaluation 2023-2025, previously examined, not a clean testPass

Limitations

  • 2023-2025 were examined before this method was written (amendments A6 and A7 of the NIL record) and the input values for 2019-2022 come from a model whose hyperparameters were chosen on 2019-2022. Evaluation results are reported once as previously examined evidence and were never used to choose anything. Only the 2026-to-2027 forward test is clean.
  • The hashed gates file (docs/nil-projection-gates.json) declares one development decision and one on-fail clause, with no per-statistic exception: if development fails, no per-player projection object is published, the methodology object publishes the failed table, and the page shows only a link to it. This object is that table.
  • Development E1 fail: RMSE gain against persistence of the input-season published net is at least 0.08 in each season and the pooled interval lower bound is above 0. Observed 0.0823 (by key: 2019 0.0839, 2020 0.0877, 2021 0.0795, 2022 0.0792), threshold 0.08.
  • Development failed on criterion E1 (RMSE gain against persistence of the input-season published net, at least 0.08 in each season). The earlier release of free-throw percentage projections rested on a per-statistic reading that the gates file does not state, and on a wider calibration band than the one used for net; amendment A9 withdraws it. No per-player projection of any statistic is published, and none is planned unless the owner reverses A9.
  • Rows for free-throw and three-point percentage are shown as the frozen run reported them. They decide nothing: only the criteria listed in the development decision do, and E1 failed.
  • Evaluation seasons 2023-2025 were examined before this method was written, so the evaluation rows are previously examined evidence, not a clean test. They were never used to choose a parameter.

Criteria hash 14a485539e68 · manifest e407af3f305f. NIL value methodology

Team identities and color

Conference membership belongs to each team season and follows the Kaggle historical conference records. Missing membership stays unavailable. Team swatches use frozen NCAA.com colors, supplemented by ESPN and documented school brand sources. Historical pages use current palettes, not reconstructed historical colors. Wins are green and losses red. Ranked metrics use a relative scale from green at the best rank through yellow at the median to red at the worst rank. Rankings already account for whether higher or lower values are better. W/L and numeric ranks remain visible.

Team scouting and player reports

Scouting values use summed accepted team boxes. Effective FG% = 100 × (FGM + 0.5 × 3PM) / FGA; turnover rate = 100 × turnovers / estimated possessions; offensive rebound % = 100 × ORB / (ORB + opponent DRB); free-throw attempt rate = 100 × FTA / FGA. Two-point shooting subtracts threes from total field goals. Assist rate uses FGM; block rate uses opponent two-point attempts. Point distribution divides points from each shot type by total points.

Defense columns describe opponents’ corresponding statistics. Division I averages pool both participants in all accepted games, using sums rather than averaging percentages. National ranks use full precision and competition ranking (ties share a rank); lower offense turnover rates and lower defensive shooting/rebounding/efficiency values rank better. Defensive turnover rates rank higher values first. These remain unadjusted statistics.

Team player tables aggregate only appearances for that team. Minute share divides logged player minutes by all team game minutes, including overtime. Per-game values use the player’s logged appearances. The last-five rotation uses the latest five accepted team games, not the player’s five most recent appearances. Missing records are not treated as zero-performance games.

Lineups come from SportsDataverse’s reconstructed on-court player IDs, linked through existing season identities. Accepted intervals require five distinct linked players, clean source status, monotonically increasing elapsed clocks, at most 30 unobserved final seconds, and agreement with player box minutes within 90 seconds per player. Unobserved final seconds are excluded from coverage and lineup minutes. Lineup shares divide observed group minutes by all last-five game minutes. Groups are unordered and positions are not inferred. Native NCAA play-only repairs do not supply reconstructed lineup fields.

Schedule venue labels use uniquely matched Kaggle historical participants with the same linked team identities, date, and both scores; an unmatched venue remains unavailable. Designated home/away score sides alone do not determine venue.

Data Sources

Source Catalog and Captured Artifacts

Team identities come from the direct NCAA 2026 Division I directory. Full-season team statistics are reconstructed in the secondary NCAA-derived SportsDataverse archive. The 160 direct NCAA sample finals all agree with their published season game scores.

Individual player statistics are published across accepted season games when player identities, shooting arithmetic, and summed scoring reconcile to team finals. Play-by-play publication covers 5,716 games and 2,782,378 events whose teams, dates, clocks, and final scores pass validation. Two additional rated games have invalid clocks and are withheld.

Historical team results and raw efficiencies are available in History. Validated NCAA-derived player statistics and play-by-play cover available games from 2010–2025; native ESPN player boxes supplement accepted games from 2004–2009. Linked career pages track corroborated seasons and team associations. Cross-provider player links require repeated matched games, team agreement and exact individual statistics; names alone never establish identity.

Player performance aggregates sum accepted appearances. Per-game rates use logged games; per-40 rates use logged minutes. Shooting percentages use summed makes and attempts. Estimated true shooting uses points ÷ (2 × (FGA + 0.44 × FTA)). Missing games are excluded, and zero-denominator rates are unavailable. Career rates are recomputed from combined counts, rather than averaged across seasons.

Team archive ↗ · Play-by-play archive ↗

Historical Collections · 203,027 games across 42 seasons. Historical efficiency uses available detailed games only.