Stryke
Player and lineup intelligence for the NBA, rebuilt one possession at a time from the league's own play-by-play. STRYKE answers what a player does in a given situation, with whom on the floor, and how sure we can be about it.
Small samples, said out loud.
Two attempts at the rim is not a shooting percentage. STRYKE blends each player's makes with the league rate for that zone, weighted by how much evidence there is, and prints the weight next to the number. A zone with too little data is marked Insufficient instead of being coloured as hot or cold.
Every split on the page is a real query: period, clock, score margin, home or away, shot mechanics, distance, and any teammate on or off the floor.
- Adjusted FG% with a 90% interval
- Points per attempt by zone and by context
- Usage conditioned on who else is playing
Possessions
Every possession and every five-on-five stint, reconstructed from raw play-by-play events back to 2015-16. Box scores are derived from the possessions, not copied, and checked against the official ones.
Shots
A shot taxonomy by zone, distance and mechanics, with makes, misses, and-ones and the free throws that follow. This is the input to the shot profile above and to MACHINE's shot model.
Lineups
Each lineup carries its status: official, confirmed, expected or projected. A projection is never shown as confirmed. Availability and rotation history drive the projected minutes for every player.
Models
Usage, shot selection, make probability, offensive rebounds and free throws, each conditioned on game state and on the other nine players. Calibration is chronological: a model is trained on the past and tested on the games that came after it.
Point in time
Every model bundle records the last game it learned from. A query for a past date sees only what was known on that date, which is what makes STRYKE safe to backtest and to feed into MACHINE.
STRYKE describes players. MACHINE puts ten of them on the floor and plays the game.
MACHINE