Simulation workspace
Build a matchup.
See the whole distribution.
Set the rotation, choose the simulation depth, and run the same calibrated engine used by the command line. Every run receives a fresh seed automatically and keeps it in the result.
Ready when you are
No result yet
Configure the matchup and run a simulation.
Official point-in-time slate
The schedule,
as it actually exists.
Forecast published games from the official NBA feed. Injury reports are matched to current player IDs; uncertain statuses become explicit availability scenarios inside the distribution.
2026–27 feed
Published games
Availability-aware forecast
Choose a published game
Each forecast receives a fresh reproducible seed and runs 1,000 calibrated scenarios.
Full regular season
One click.
All 1,230 games.
Simulate a complete 30-team, 82-game NBA season with the same possession engine as Matchup Lab. Each matchup is played once, preserving the upsets and variance of a real season. Browse every result and its native event-built player box score.
2026–27 regular season
Ready to tip off
Exact 41-home / 41-away balance, NBA opponent frequencies, chronological rating updates, and one complete possession-level game for every scheduled matchup.
Front office · phase three
A league that
remembers everything.
Begin from the current 2026–27 roster universe. Every calendar move is saved as a verifiable event, and any decision point can become an independent branch without changing the original. The official cap ladder, apron transaction gates, and uncertainty-aware player development are available in dedicated workspaces.
Long horizon
Season and series.
Run small round robins or a complete best-of series. Every run is fresh; its seed remains attached to the completed result.
Competition results
Your standings or series ledger will appear here.
Calibration
Model health.
Compare simulated league ecology with the bundled 2023–24 source totals. This is a fidelity check, not a claim of predictive edge.
No audit in this session
The operational-profile run passed at 3.03% mean error.