RotoProphet

The projection model

Every stat line is three questions, multiplied.

Opportunity, Role and Ability Context for statLines Estimates asks the same three questions about every player in the league, answers each one separately, and multiplies the answers together. A stat line is what comes out of that arithmetic rather than what goes into it.

Availability
Will he play?
Opportunity & Role
How much of the game runs through him?
Ability
What does he do with it?

Each of those answers is carried as a running estimate rather than recomputed from a season average. Every game a player plays nudges it, the way a form guide moves rather than resets, so a role change shows up while it is happening instead of after the averages catch up. And every estimate is held against what the rest of the league is doing at that same moment — so a leaguewide shift in pace, officiating or how a stat is recorded moves everybody together and never gets mistaken for one player changing.

Keeping them apart is the entire point. A player can lose ten points a game because he got hurt, because his coach cut his minutes, or because he stopped making shots — three completely different futures that look identical in a season average. The model always knows which one it is looking at.

Worked through one player

Nikola Jokić, Denver Nuggets

A three-time MVP and the most complete statistical player in the league — which makes him the clearest case, because he is genuinely good at almost everything the model has to measure, and genuinely poor at one thing. Every figure below is his real published projection.

Games
~66
of 82
Minutes
33.9
a night
Points
26.1
a game
Rebounds
11.5
a game
Assists
9.8
a game
Turnovers
3.5
a game

Question 1 · Availability

Will he actually be out there?

The most valuable player in the world is worth nothing to you in street clothes. Before a single stat is projected, the model projects how many games a player suits up for.

Over a full season this matters enormously. The newest piece of it — asking whether a player holds a rotation place at all — made season-long availability 17% more accurate across the league, and 44% more accurate for players with a short or broken record, who are exactly the ones a career average has nothing useful to say about. Over the next five games it matters hardly at all, because about 87% of rostered players simply play all five. So on short horizons the model assumes he plays, because nothing beats that assumption.

Three separate things feed the answer. How often he has played. Whether he still holds a rotation place at all next season — a question the model answers with its own four-way estimate of rotation, fringe, deep bench or out of the league entirely. And, for anyone who has missed a long stretch, how that kind of absence historically carries forward.

That last piece is deliberately graded by role. Thirty-eight players carry a long-absence adjustment this season, and a starter who missed most of a year is not priced like a deep-bench player who missed the same number of games: the historical recovery is much gentler at the top of a rotation, so the model reads pre-absence minutes before deciding how hard to mark someone down.

Jokić has played between 65 and 79 games in each of the last five seasons — 71 on average, 65 last year — and the model lands on 66, with a 1.6% chance he is not a rotation player at all. Not fragile, not iron. Against a team-mate who never sits, those 16 missing games are worth about 420 points and 185 rebounds.

~66games of 82

Question 2 · Opportunity & Role

How much of the game runs through him?

This is the half of a stat line that has almost nothing to do with how good a player is. It is about how much there is to go around, and how much of it he gets.

Basketball has one genuinely hard constraint: a team plays exactly 240 minutes a night. Add up what every Nugget expects to play and you get 313.7. Seventy-three minutes have to disappear, and they do not disappear evenly.

How firmly a player owns his role depends on how much evidence there is for it. A full season of steady minutes is a strong claim; nine games late in a lost season is a weak one, and the model treats it that way, pulling a thin record toward what players of that position and age typically play. Jokić’s own record carries 96% of the weight in his projection. A team-mate with five games to his name carries 63%, and the rest comes from the cohort.

Not every game is equal evidence, either. Minutes played in a decided late-season game, or with half the roster unavailable, count for less when the model is deciding how sure it is about a role — though they still count in full towards the level itself. An audition is information about what a coach will do in April, not about what he will do in November.

Two things move minutes before the season even starts. A rookie has no record at all, so he enters on what his draft position historically buys — first-round picks arriving with real minutes, second-rounders with far fewer. And when a player is ruled out, the minutes he was going to take do not evaporate: they are shared out among the team-mates most likely to inherit his role, by position and by how similar their roles already are. Eighty-nine players are currently gaining minutes from an absent team-mate.

Underneath the minutes sits the same logic one level down. Shots, passes, rebound chances and trips to the line are all finite, and they are all contested by team-mates. Sign a second big man and the rebound chances get split. Sign a ball-dominant guard and the passing load moves. None of that is a change in ability, and the model does not let it be mistaken for one.

33.9minutes a night
Who pays for Denver’s missing minutes
Jokić
33.9
−0.8%
Bruce Brown
23.8
−1.9%
Spencer Jones
21.1
−4.3%
Tyus Jones
13.1
−5.7%

The pale bar is what each player expects; the solid bar is what the model gives him. A coach does not solve a minutes crunch by taking two minutes off his MVP — he shortens the bench. The back of the rotation pays roughly seven times what the stars do, and getting that shape right matters far more than the size of the cut.

Question 3 · Ability

What does he do with it?

Only now does the model ask how good he is — and it asks in the same shape every single time. Chances, then conversion. How many opportunities does he generate, and what fraction does he cash?

Assists are the cleanest illustration. An assist needs a team-mate to make the shot, so a raw assist count is partly a measurement of other people. Instead the model counts 14.7 passes a night that create a shot — that is his — and only at the last step asks what share Denver finishes.

One more thing happens between seasons. A player’s rates do not simply resume in October where they stopped in April, and the pattern in how they move is learnable: which way a player was already trending, how much his rate changed from the season before, and how many games he actually played. The model applies that measured summer shift to shot volume, creation, defensive rebounding, turnovers and blocks — the five where it demonstrably helps — and leaves the rest alone.

Every category is built this way. Rebound chances near him, then the share he wins. Deflections, then the share that become steals. Contested shots, then the share that become blocks. It is more work than predicting the stat directly, and it buys something specific: when a number moves, the model can say whether the player changed or the job did.

9.8assists a night

Eleven models, one for each thing worth counting

The nine fantasy categories, plus the minutes and the games they all rest on. Each is built to its own category’s logic — a steal and a free throw have almost nothing in common — but every one of them follows the chances-then-conversion shape. Open any card for how it works and what it says about Nikola Jokić.

All figures are Nikola Jokić’s live published projection as of 31 August 2026. Every model on this page has to beat one baseline before it ships — “assume last season repeats” — on seasons held back from building it, and each addition is written down with its test and its pass mark before that test is run.

The model itself is now fixed for the 2026-27 season: the code, every fitted parameter and every setting are recorded together, and two identical runs reproduce the same projections exactly. What keeps moving is the input. Every morning the whole chain runs again on the newest games and rosters, and the resulting projections — plus the state behind them — are archived permanently and checked before they are kept, so the season can be scored honestly at the end rather than re-explained. Improvements found during the season run alongside as challengers and only replace anything next year.

For what has been tried and rejected along the way, see the research log.