Minutes first.
Who plays, and for how long, decides most of a box score. So every number on this site starts with a minutes projection, and no stat is shown for a player without one.
What this is, and what it is not
BTB Data is research and decision support. We do not sell picks or suggest a stake. Player pages show sportsbook lines captured before tip, beside our number as a question; nothing is graded against those lines yet. Our numbers are graded only against what happened. That comparison is the record.
1. Who is available
The pool is every player on tonight's ESPN roster, so a player who moved teams in the summer counts for his new team from night one. The league's official injury report sets each player's chance to be available:
| Status | Chance available |
|---|---|
| Out | 0% |
| Doubtful | 1.5% |
| Questionable | 55% |
| Probable | 97% |
| Available or not listed | 100% |
These are starting values. Once a month of the season has settled, they will be refit from the reports we capture. The report lists names, not ids, so each name is matched within its own team's roster; any name we cannot match is listed on the Injuries page.
A healthy player can still sit by the coach's choice. Each player's rate of those nights, from this season and last, lowers his chance to get in. So does where he ranks in his team's rotation: early in the season, when his own record says little, his chance and his expected minutes lean mostly on how often, and how long, players at that rank got in on past nights. The 13th man on a roster gets in about one night in three.
2. Minutes if he plays
His recent minutes in games he played: this season's last ten count most, last season's count for less, and two seasons back for less still. A small sample is pulled toward a typical bench role, and a player with no NBA games at all starts low with a wide range. The range shown (for example 24–33) is his 10th to 90th percentile.
3. Minutes that move
When the report lowers a player's chance to play, the minutes he is expected to lose go first to teammates at his position (guard, forward, center), then to the rest of the rotation, each in proportion to the minutes they were already getting.
4. Every team adds up to 240
Five players for 48 minutes is 240. After every adjustment each team's expected minutes are rescaled together so they sum to exactly 240, with each player capped at 42 (the cap stretches only when a team is too short-handed to reach 240 under it). Players are never trimmed one at a time.
5. From minutes to a stat line
Points, rebounds, assists and threes per minute, from last season and the season before, pulled toward the league rate for his position when the sample is small, then updated with this season as it comes in. A traded player keeps his own rates. His line is those rates times his minutes if he plays. Projected team points are each team's expected minutes times its players' points per minute: context, not a line.
6. Logged before tip, graded after
Every number is written to the ledger before its game tips, and a game that has tipped cannot be logged or changed. The next morning each player is graded against the box score. A player who did not play is void, never a zero. The bar each market has to clear is on the record: it has to beat each player's own average over his last ten games.
Not on the site yet
Confirmed starting lineups, fantasy, live in-game updates, and any grade against betting lines. The sportsbook lines on player pages are captured prices from The Odds API: our number sits beside the book's as a question, never as a recommendation. Headlines under Latest reporting link to their publishers and never change a projection or an official status.
Tonight's inputs
Report times are Eastern; a build is named by its date, never its clock.
Player history and matchup context
Player profiles include actual NBA box scores from this season and the two preceding seasons when available, with data cut off before the board's date. The directory includes players listed this season or last, and tonight's rostered players. A player off the board keeps a historical profile; his team and position are from his latest recorded box score.
Season averages and home/away and starter/bench splits use the latest available regular season. Last-five and last-ten averages use games played across regular season, play-in and playoffs, and can cross seasons. Every sample shows its game count. DNPs are listed with no stat line and excluded from averages.
Shooting percentages divide total makes by total attempts on observed rows. Per-36 production divides total stats by total minutes and scales to 36. Team matchup context uses complete paired player box scores and shows the season and sample beside the totals. These are descriptions of past performance, separate from projections and their public accuracy record.
Lineups tonight
When tonight's report takes a player who has been playing off the board, the game page names up to three teammates under Who takes his role. Usage is the share of the team's plays a player finishes with a shot, free throws or a turnover while he is on the floor. Each line is the change in a teammate's usage in the games this player missed this season and last, against the games he played, and how many games that is. It is shown only when a teammate has three or more of those games and five or more beside him, and his usage rose by at least a point; the order allows for small samples. A record of what happened, not a projection.
Four lineup reads were built and each was graded once on 2025-26 against a simple baseline before anything shipped. Only this one beat its baseline (its teammates' usage changes came closer than assuming no change). The likely starting five, the main five-man units and a better-or-worse-without-him rating did not beat theirs (last game's starters, the team's most-used units without the missing players, and the teams' box-score net ratings), so they are not shown.
BTB scores
BTB scores run 0 to 100 and 50 is the middle of each pool. They describe; they are not chances, they do not move the projections, and they are not graded on the record, which grades only the projections. Each is a percentile against the pool named below.
BTB Defense (team). Tonight's players' lineup defense, weighted by the minutes each is expected to play, against every team's latest board. Higher is better defense. Each player's defense is a ridge regression over every five-man lineup he played in (PBP Stats), so a player is not credited with his teammates' defense; last season counts most and earlier seasons less. The regression pulls each player toward average by the equivalent of 2,500 possessions, so a short run of good lineups cannot make a backup look like an elite defender. A player with no lineup history, such as a rookie, counts as average. On the game page the score also shows what it would be if everyone on tonight's injury report played; that can be lower than tonight's, when the players listed defend worse than the ones replacing them. Because every team is ranked against the others' latest boards, a team's score can move on a night it does not play.
BTB Defender (one player). His own lineup defense (RAPM: opponent points per 100 possessions with him on the floor, teammates separated out, and pulled toward average until his sample is large), against every active player with 5,000 defensive possessions of lineup sample. A player with less sample shows a dash: that covers most rookies and second-year players. The lineup data does not say who a lineup faced, so bench defenders who mostly play against other benches can still rate a little high.
We tested this rating before showing it. On 2025-26 it described a team's defense about as well as the team's own rating from last season, and it added no accuracy to points projections, so it is shown as a score and never enters them.
Matchup. How easy tonight looks for his scoring, from three things: the defenders likely on him (weighted by their expected minutes and position, with the opponent's best defender leaning toward the top scorer, each rated by BTB Defender), the game's pace against his own team's, and the opponent's defenders who are out or limited on tonight's report. Who guards whom is inferred, not tracked. It is placed against every player-game of 2024-25, so 50 is a typical draw. Higher is an easier draw.
Each opponent with expected minutes counts by those minutes and by position: his own group fully, the next group (guard and forward, forward and center) at 0.3, guards and centers at 0.05. Within his group, the opponent's best-rated defender leans toward his team's top scorer. A defender ruled out tonight has no minutes, so he drops out, and the page names the listed defenders and gives the score as it would be if they played. How much pace and the defenders count comes from 2024-25 games: how each player's points per minute moved against his own last ten. NBA tracking of who guarded whom does not reach our builds, so the likely defender is an inference, never a record.
Role. His usage over his last ten games played: the share of his team's plays he finishes with a shot, free throws or a turnover while he is on the floor, against the league. It uses this season's games first and fills from last season's, and the page says how many of the ten are this season's. Its usage is counted from box scores, so it can differ slightly from the PBP Stats season usage in a player's Advanced section.
Form. His last five games this season against his own rate before them: points, rebounds and assists per minute, weighed with his shooting, his shot attempts per minute and his minutes. A run built on hot shooting counts for less, because shooting runs fade; one built on more shots counts for more. It is ranked against the league, so 50 is the league's middle run, not 'no change': the line under the score gives his own change in points, rebounds and assists per minute. It starts once he has five games this season. Short runs are still mostly noise: this describes the run, it is not a forecast.
Pace. Tonight's game: the two teams' possessions per 48 minutes over their last ten games (both offenses counted, from box scores, crossing into last season early on), averaged, against every team's own pace. It describes the game's tempo; it does not move the projection. Higher is a faster game, more possessions. A game needs five games of box scores for both teams.
Advanced stats
Possession-based advanced stats and shot-location profiles come from PBP Stats. Every sample identifies its regular season. Current-season stats appear as the feed returns completed games; otherwise the last available season remains labeled. A source outage retains the last successful capture.
On-court team ratings describe the lineups a player played with and against. They are not on/off differences or isolated measures of individual ability. Missing identities or stats remain unavailable. Tracking measures such as potential assists, touches and rebound chances are not connected.
BTB archetypes and traits
An archetype describes how a player is used on offense. It comes from ten play-by-play features: usage, assists per 100, the share of his points that are unassisted, the share of his threes that are assisted, three-point attempt rate, share of shots at the rim, average two-point shot distance, putback points per 100, offensive rebound share and free throws per shot. We grouped every 2021-22 to 2025-26 player-season with 1,000+ offensive possessions (1,869 of them) into 8 clusters (k-means) and named each cluster after the players it holds. The centers are fixed. A player gets the nearest center once his season has 250 offensive possessions; until then, the card shows last season's archetype, labelled. The page says "close to" a second archetype when he sits near the line between two. Each sentence below describes the group's center; a player at its edge can differ on one feature, which his own numbers on the card show. In this data, 68% of players keep the same archetype from one season to the next.
- Rim Runner. The group takes most of its shots at the rim, many off the offensive glass, and rarely shoots threes.
- Interior Finisher. The group scores inside and on putbacks, takes a few threes and creates little of its own offense.
- Off-Ball Scorer. The group takes threes and longer twos, most of them assisted, and few shots at the rim.
- Spot-Up Spacer. The group has low usage, and most of its shots are assisted threes.
- Interior Creator. The group has high usage inside the arc: rim attempts, free throws and passing.
- Primary Creator. The group runs the offense, with the most usage, assists and unassisted points.
- Secondary Creator. The group has above-average usage, assists and unassisted points, a step below the primary creators.
- Connector. The group sits near the league's middle on every feature; no one part of the game stands out.
Traits are fixed cutoffs on a player's percentiles in the same season. Most rank him against every qualified player, all positions together, so a Rim Protector blocks shots at the rim at a big man's rate, not the most among guards. The two rebounding traits rank him at his position, as his season card's bars do, because nearly every center would otherwise be a Glass Cleaner. A player can hold any number of traits, or none. In the rules below, "90th+" means the top 10% of qualified players that season.
- Self-Creator: self-created points per 100, 90th+.
- Shot-Maker: eFG over expected 85th+, at usage 50th+ and self-created points 50th+.
- Floor Spacer: three-point attempt rate 70th+ and 37%+ from three on 100+ attempts.
- Rim Finisher: FG% at the rim 85th+, with a rim share of 60th+.
- Foul Magnet: fouls drawn per 100 90th+ and free throws per shot 80th+.
- Playmaker: points created by assists per 100, 90th+.
- Ball Security: turnovers per 100 among the fewest 20%, at usage 50th+.
- Offensive Rebounder: offensive rebound share 90th+ at his position.
- Glass Cleaner: defensive rebound share 90th+ at his position.
- Rim Protector: blocks at the rim per 100, 90th+.
- Disruptor: steals per 100, 90th+.
- Charge Taker: charges drawn per 100, 95th+.
Archetypes and traits are ours, built from PBP Stats play-by-play. They use no play-type or player-tracking data (no isolation or pick-and-roll frequencies, no matchup data), so a role that depends on those, such as a point-of-attack defender, is not one of them. They describe; they do not move the projections, and they are not graded on the record.
How a defense guards him
On a player's page for tonight, two views of the opponent's defense this season. His shots: every field-goal attempt in ESPN's play-by-play falls in one of five zones (at the rim, the rest of the paint, midrange, corner three, above-the-break three). For each defense we count the share of its opponents' shots from each zone, mixed with 2,000 league-average shots so early games cannot carry it, and rank the 30 teams (1st lets opponents take the biggest share from there). The court is shaded where the defense ranks in the top ten. FG% allowed is printed as a count and never shaded: in 2024-25 and 2025-26, what a defense allowed opponents to make from a zone barely repeated from the first half of a season to the second, while where it let them shoot did.
His archetype: what players of each BTB archetype scored against the defense, compared with each player's own per-minute level in his other games this season, per 36 minutes. A team's number against everyone is mixed toward zero by an amount fitted on 2024-25 and checked once on 2025-26, and it leads. Each archetype's own number is shown unmixed with its games and minutes: in those seasons, how a defense did against one archetype mostly followed how it did against everyone. Both views describe how games have gone. Our projections do not use them, and neither is the Matchup score.