How the NBA model works
We project every player's stat line, compare it to the bookmaker's number, and publish only the gaps big enough to matter. No black box - here is every step.
How a pick is made
Blend the season line with recent form
The base projection blends a player's season average with rolling last-5, last-10 and last-20 game windows, mixed with Sharpe-optimised weights per playstyle archetype: a high-usage creator's recent games carry more signal than a low-minutes role player's, so their recent windows are weighted heavier. Backtested across 52,396 scored lines over the full 2025-26 season.
Adjust for opponent and pace
The base number is scaled for the opponent - how many of that stat they concede to the position versus league average, and how that defence handles the player's playstyle (fouls drawn, 3P%, FG%, points allowed) - and for the expected pace of the game. A projection into a fast, leaky matchup is worth more than the same number into a slow, elite defence.
Convert the gap to a z-score
The difference between the projection and the bookmaker line is divided by that stat's normal game-to-game volatility. A 2-point gap means something very different on a 27.5-point line than on a 6.5-assist line; the z-score puts every stat on one scale of how big the gap is relative to ordinary noise.
Only large gaps become picks
STRONG requires a gap of at least 1.0 standard deviations; Bet requires at least 0.7. Anything smaller is a Pass and never reaches Tonight's Picks. Most lines on most nights are priced about right - the model stays quiet until the gap is bigger than the noise.
What goes into a projection
How DvP (defence-vs-position) is built: every game log attributes a player's stats to their position (PG/SG/SF/PF/C) against the opponent; per (defence, position, market) we average what the position produces per game, and league average is the mean across all 30 teams for that slice. factor = team_avg / league_avg - above 1.0 is softer (favourable), below 1.0 is tougher. The model applies the 3PM / steals / blocks factor when projecting those props - the matchup is half the read.
Confidence tiers
Edge alone is not enough. Dividing the gap by the player's own volatility (the z-score) scores signal against noise, and only the two tiers below ever publish.
The markets we model
Six single markets - points, rebounds, assists, three-pointers, steals and blocks - each run their own model, alongside five combos (PRA, P+R, P+A, R+A and S+B). A combo is built by summing its component singles and is only flagged when every component agrees on direction, so combo picks are the rarest on the board.
Alongside the props, a game-level model prices moneyline and spreadpicks - flagged where books are slow to reprice injuries - on the second tab of Tonight's Picks.
Every tool, free and Pro
Everything the model touches is published as a tool you can browse. Research, trends, the injury feed and the graded record are free; the model-derived boards are Pro.
STRONG and Bet props, plus moneyline and spread when the model has a signal. The page and graded record are free; upcoming picks are Pro.
Hit rates and per-game form for every prop line, split by recent form, home/away and matchup.
The prop lines players are trending on, plus the Form Cheat Sheet's 100% club as a second tab.
Search any prop for a projection-vs-line read, an edge score and a five-tier read, with a margin-graded game log.
Season stats and the model pick record are free; the 2026-27 projections lens is Pro. Last season archived on the Record tab.
Every defence ranked across six markets - points, rebounds, assists, threes, steals and blocks - by what it concedes to each position.
One defence's full concession fingerprint by position, with a league rank for every spot.
Every out, doubtful and game-time call, grouped by team and updated hourly from the Underdog feed.
Every STRONG and Bet pick logged before tip and graded against official NBA box scores. 2025-26 available as archive.
Reading the Opposition Report
Stars are opponents whose line sat in the top 20% league-wide for that market; Above Avg is the next 40%; Field is the bottom 40%. OVER% is how often those players beat their line against the defence in question, with pushes excluded. Because each line is a player's own recent form, the league OVER% for any tier runs well under 50% - so every tier is judged against the league rate for that same tier: more than 5pp above it reads CONCEDES, more than 5pp below reads SUPPRESSED. A tier with too few games to call is marked as a small sample rather than given a verdict.
How picks are graded
- Every pick is logged before tip-off. No retroactive edits.
- Results are graded against official NBA box scores.
- WIN = the stat finished in the picked direction. LOSS = wrong direction. VOID = player DNP or game postponed. PUSH = the stat landed exactly on the line.
- P&L assumes a flat stake at standard -110 vig (WIN +1.00u, LOSS -1.10u).
- Win rate counts only actionable outcomes (W + L); VOIDs and PUSHes are excluded from the rate.