NBA

NBA Betting Model: Possession-Level Monte Carlo

The Possession MC V5.0.2 engine simulates every possession of every NBA game using real player data, Beta-distributed shooting, and score-state dynamics. 10,000 simulations per game, every day.

View Today's NBA Picks

Engine Overview

Most NBA prediction models use regression: they find correlations between historical statistics and game outcomes, then project those correlations forward. This works until it doesn't, typically when injuries change a lineup, when a team adjusts its playing style mid-season, or when matchup-specific factors (pace, defensive scheme, three-point volume) deviate from historical averages.

Our approach is fundamentally different. The Possession MC V5.0.2 engine simulates each game possession by possession, modeling the actual flow of a basketball game. Each simulation run plays out roughly 200 possessions (100 per team) with realistic turnover rates, shooting distributions, rebounding, free throws, and substitution patterns. We then repeat this 10,000 times per game to build a probability distribution for every possible outcome.

How the Simulation Works

1. Possession-by-Possession Modeling

Each possession begins with a ball handler and follows a decision tree: turnover probability (based on team and player TO rates), shot type selection (two-pointer, three-pointer, or free-throw-drawing play), and shot outcome. The key innovation is that each of these probabilities is drawn from the actual game context, not averaged over a season.

If a team is trailing by 12 in the fourth quarter, their three-point attempt rate increases to match observed late-game behavior. If they are leading by 15, pace drops and possessions get longer. This score-state dynamics system means the simulation naturally produces realistic game flow patterns, including comebacks, blowouts, and overtime scenarios.

2. Beta-Distributed Shooting

Player shooting accuracy is not a fixed number. A player who shoots 45% from the field does not make exactly 45 of every 100 shots. Some nights he shoots 60%, other nights 30%. We model this variance using Beta distributions parameterized by each player's season statistics. The shape of each player's Beta distribution captures both their average accuracy and their variance, meaning shooters with small sample sizes (fewer games played) have wider distributions that reflect genuine uncertainty.

This matters for betting because it means our spread and total projections include realistic tails. A team with high-variance shooters will have wider projected score distributions, which directly affects how we assess spread value and over/under pricing.

3. 13-Player Roster Modeling

We model the full 13-man rotation for each team, not just the starting five. Each player has a minutes distribution based on their season role, and substitution patterns follow observed coaching tendencies. When a starter is injured, the simulation does not simply downgrade the team by a fixed amount. Instead, the backup player enters the rotation with their own shooting distributions, rebounding rates, and defensive impact. The emergent effect on team performance is calculated, not assumed.

4. Injury Integration

Injury data is pulled from multiple sources: the ESPN injury report, Basketball Reference game logs, and the NBA's official injury report. We use a multi-source validation pipeline that cross-references these sources to avoid acting on stale or incorrect injury designations. When a key player's status changes from "Questionable" to "Out," affected games are automatically re-simulated with updated rosters.

We learned the hard way that single-source injury data is unreliable. In March 2026 we identified a bug where the engine was using a player's injury "status" field (like "Strain") instead of the severity designation ("OUT"), causing all injuries to be silently ignored. This has been fixed with explicit field mapping and multi-source validation.

5. Rating-Anchored Simulation

Raw simulation outputs can drift from reality if player statistics are noisy or incomplete. To prevent this, the engine anchors simulated outcomes to team-level offensive and defensive ratings derived from season-long performance data. This means individual player variance is preserved (high-variance shooters still produce high-variance games) but the team-level averages converge on observed efficiency metrics.

6. Calibrated Scoring and Pace Compensation

V5.0.2 includes three critical calibration improvements from earlier engine versions. First, pace-duration compensation ensures that fast-paced games (like those involving Indiana or Sacramento) produce the correct number of total possessions rather than running overtime-length simulations. Second, the contest model (which previously applied defensive adjustments that double-counted team defensive ratings) has been removed. Third, free throw dedup prevents counting free throws as both points scored and new possessions.

Data Sources

What the Model Outputs

For each NBA game, the simulation produces:

These outputs are then passed through Bayesian probability shrinkage (15% toward 50%) and profitability zone analysis before generating final picks. This ensures that the edges you see have been corrected for model overconfidence.

NBA Performance

V5.0.2
Engine Version
10,000
Sims Per Game
13
Players Per Roster
~200
Possessions Per Sim

Why Possession-Level Simulation Matters for Betting

Traditional models predict game outcomes as single numbers: "Team A has a 62% chance to win." This is useful but incomplete. It tells you nothing about spread value, total value, or how different bet types interact with the model's uncertainty.

Possession-level simulation produces a full probability distribution. You can ask the model: "In how many of 10,000 simulated games does Team A win by more than 7?" or "What is the probability the total exceeds 225?" or "What is the median margin when Team A wins?" Each of these questions maps directly to a specific bet type, and the simulation answers them all from the same underlying model.

This is why we can offer spread, moneyline, and total picks from a single simulation run, with each pick having its own independently calibrated probability and edge calculation. A regression model would need three separate models for these three bet types. Our simulation does it in one pass.


Explore Other Models

CBB Model

Savant Ultra v5.0.1 — 5-on-5 player simulation with EvanMiya BPR ratings and regime calibration.

NHL Model

V19.1 Pinnacle — MoneyPuck xG, real danger zones, per-zone goalie modeling.

NFL Model

Elite V1.1 Pinnacle — EPA metrics with CDF edge calculation and drive sequencing.

Soccer Model

V16.3 PBP — FBref xG, isotonic calibration, formation analysis, and BTTS modeling.

MLB Model

Elite Matchup V4.2 — count-state simulation, catcher framing, bullpen fatigue, and park factors.

LoL Model

Championship v2.1 — 5-layer Glicko-2 with market blend and patch-aware meta analysis.


See Today's NBA Picks

View simulation-driven NBA picks with Kelly-optimized sizing, or upgrade to premium for the full slate with detailed writeups.

View Free Picks Go Premium - $19.99/mo