Roster Math

From the roster up

Roster Math rates college basketball teams by rating the players on them first. That is the whole idea, and most of what follows is the discipline it takes to make it honest.

Team results are the only ground truth

A college basketball team plays about thirty games. A player's box score is a noisy shadow of what he did on the floor, lineup data is thinner still, and a recruiting rank is a guess about a seventeen-year-old. The one thing that is measured cleanly, every night, is how many points each team scored per possession against whom. So the team rating comes first, and everything underneath it is held to one standard: when a team's players are rated and their ratings are added up, minutes-weighted, the sum has to match how the team actually played. A player model that cannot pass that test is not describing players, it is describing something else.

What a rating is

A team's rating is points per 100 possessions better than an average Division I team on a neutral floor: +30 is elite, 0 is average, and the gap between two teams is the margin the model expects on a neutral floor. Offense and defense are the two halves, each against the average, and the rating is their sum. It is estimated from every game, adjusted for the strength of every opponent and for where the game was played, with the fit shrunk toward a prior so that a team's number is not thrown around by one hot shooting night. A small part of each game's three-point luck is removed from the target, and the score is split into its four factors (shooting, turnovers, offensive rebounds, free throws) so that the noisiest part is shrunk hardest. Tempo is modelled separately, which is why "rating" is per 100 possessions and not per game.

A player's rating is points per 100 possessions better than an average Division I player while he is on the floor. Contribution weights it by the share of a rotation slot he is projected to play, so a star on the bench and a role player who never sits both read right.

The player, before the season

A preseason projection is a shrinkage problem. Every player has a prior and an amount of evidence, and the less evidence he has, the more the prior wins. A returning player is projected from his own record, shrunk by how much he played, with the known patterns applied: good freshmen keep improving, good seniors regress harder, about forty percent of a one-season spike is given back, and the recruiting pedigree he arrived with still says something years later. A transfer is projected from his record at the old school with the change in level priced in; transfers as a group have slightly under-delivered their projections, and the model knows it. A freshman is projected from his recruiting rank and, where there is one, his place in the preseason NBA mock drafts, which turned out to be the better signal for the very top of the class. A junior-college, international or Division II arrival is the thinnest case: no approved source carries his previous league, so he gets a careful prior and, for the handful projected to matter, a hand-written one with its source noted.

Then minutes. Who plays is as important as how well, so a second model projects each player's share of a rotation slot from his record, his position and the crowding around him, with a cap, because nobody actually plays the 85% of minutes his projection would like, and a squeeze on deep rosters, because the tenth man on a loaded team does not play.

The team, before the season

The roster's player ratings are added up, minutes-weighted, into a roll-up. The roll-up is then calibrated against what teams with that roll-up actually did, alongside last season's rating (a program carries over more than its players do), the roster's experience, its shape and the program's own level two and three seasons back. That calibration is where the model admits what the roster alone cannot see, and every team's page shows its terms. A simulation on top of it gives every team an 80% range, a probability of finishing in the top 25 and a probability of finishing No. 1. The ranges are honest: over the seasons they were tested on, eight teams in ten landed inside theirs.

In season

Once games are played, the projection becomes the prior of the in-season rating, worth about eight games, and fades as results accumulate. A player's rating blends his projection with his box score to date in proportion to how much each has to say. A player who is out moves the team's rating by what his minutes were worth, from the date he is out, not before. The published number updates on Mondays.

What is not done

Betting

A rating system that cannot say where it beats the market is not finished. The paper season is the test: a rule fixed before tip-off, every qualifying pick recorded against the posted lines, settled weekly, with closing-line value as the metric that decides whether the model earns real stakes next season. Until then, nothing is wagered.

Glossary

Rating
Points per 100 possessions better than an average Division I team on a neutral floor. +30 is elite, 0 is average. The gap between two teams is the expected margin on a neutral floor at an average pace.
Offense
Points per 100 possessions the team scores above what an average team would against the same opponents. The rank is among all teams.
Defense
Points per 100 possessions the team allows below what an average team would. Positive is good. The rank is among all teams.
80% range
The projection interval for the rating: eight seasons in ten, a team's true strength lands inside it. Wider means more uncertainty, usually more newcomers.
Top 25
The model's probability that the team finishes the season rated in the top 25, from 20,000 simulated seasons of the projection.
No. 1
The model's probability that the team finishes the season rated No. 1.
Returning
The share of the team's projected minutes that played for the same team last season.
Projected record
Expected wins and losses over the games on the schedule as posted (regular season and listed tournaments), each game simulated with the rating's uncertainty. The range beside it is the 10th to 90th percentile of wins.
Preseason
The team's rank in the frozen preseason projection, before any game was played.
MPG
Projected minutes per game: the player's projected share of a rotation slot times 40.
Rating (player)
Points per 100 possessions better than an average Division I player while he is on the floor, offense and defense combined.
Contribution
Rating times the projected share of a rotation slot: what the player adds to the team's rating. The roster's contributions, summed, are the team's roll-up.
Player rank
Before the season the players are ordered by rating times the square root of the share, so a star projected to play most of the game ranks above a reserve with a better per-minute rating. In season they are ordered by contribution so far.
Rating rank
The player's rank by rating alone, ignoring minutes.
D1 yrs
Division I seasons played before this one.
Group
Returning: played for this team last season. Transfer: came from another Division I team. Freshman: ranked recruit out of high school. Other newcomer: junior college, international, Division II or unranked.
From
Last season's team.
Proj. margin
The model's expected margin from the team's side, with home court where the game is not neutral.
Win prob.
The model's probability of winning, from the expected margin and the game's uncertainty.
Edge
The model's margin minus the market's consensus line at the recording minute, in points. A pick needs three or more.
CLV
Closing-line value: the consensus line at the recording minute minus the closing line, from the pick's side. Positive means the market moved toward the pick.
Tempo
Possessions per game above or below the average team.

Who

Roster Math is a personal project, built in the open and run from one laptop. The numbers are the model's; the mistakes are the author's. It posts as @Roster_Math on X and @roster_math on Instagram.