How it works

An engine that plays real basketball

Most all-time lineup tools just add up box-score averages, which rewards stacking five ball-dominant scorers. SweepSzn doesn't. It models the things that actually decide an NBA season, then simulates all 82 games — and tells you, in plain English, why your five wins or loses.

Playing a round

  1. 1
    Spin the reels

    An orange team reel and a violet era reel land on a franchise and a decade. Lock one and re-spin the other to chase the player you want. You get one re-spin of each.

  2. 2
    Draft your five

    Browse that team-and-era roster and slot a player at each position — PG, SG, SF, PF, C. Eligibility is enforced from real position data, so five point guards is not a lineup.

  3. 3
    Get the verdict

    The engine simulates 82 games and returns a record, a letter grade, and a two-column breakdown of exactly what helped and what hurt. In Daily mode it ranks you on a server-verified leaderboard with streaks.

  4. 4
    Share it

    Every result gets a unique permalink and a share card. Send it, challenge a friend to the same spins, or chase a higher leaderboard rank.

A real example

This is a live engine result — a balanced two-way GOAT five. Even this lineup loses wins to usage overload, which is the whole point.

example result · projected record
784
A+ HISTORIC
ORtg 119.9
DRtg 96.5
Net +23.4
Why this record
What's helping
Star offense+27.9
Combined scoring + creation above an average lineup (volume × efficiency, era-adjusted).
Star defense+11.1
Combined defensive impact — steals, blocks, defensive rebounding and rim protection.
Spacing (2.5 shooters)+0.8
Enough outside shooting to bend the defense and open driving lanes.
What's hurting
Usage overload (160% demand)-13.2
Too many ball-dominant stars: one ball and ~100 possessions can't feed them all, so efficiency drops.

No other version explains why your five wins or loses.

What the engine models

Finite possessions. There is one basketball and roughly 100 possessions a game. Five 30%-usage stars cannot all eat. The engine tracks every player's usage demand and docks lineups that blow the possession budget — the single biggest thing box-score adders get wrong.

Era normalization. Every player is z-scored against their own season's league average, so Wilt Chamberlain's pace-inflated 1962 line isn't compared head-to-head with a modern stat. Eras are leveled before anyone is rated.

Defense at full weight. Defense carries close to equal weight with offense. Rim protection, perimeter defense, and the defensive glass all count — not just steals and blocks. Pre-1974 defense (before steals/blocks were tracked) is estimated honestly from win shares rather than guessed.

Spacing. Not enough outside shooting clogs the paint and drags down the whole offense, no matter who is on the floor. The engine fits a continuous spacing term from real data.

Fit and redundancy. Five creators, no rim protection, or no shooting each show up in the math. A lineup is more — and sometimes less — than the sum of its box scores.

Calibrated, not guessed

Every coefficient is fit to real history — 1,170 NBA team-seasons (1985–2025) across 24,687 player-seasons — not hand-tuned. Out-of-sample accuracy is 6.07 wins RMSEin year-grouped cross-validation, and wins come from a Pythagorean expectation (exponent k ≈ 14). The proof it's honest: stack five ball-dominant scorers and a box-score adder calls them historic at 74-8; SweepSzn knows one ball can't feed them all.

24,687 player-seasons1,170 NBA team-seasons6.07 win RMSE (out-of-sample)k ≈ 14 Pythagorean exponent

Spin the reels. Draft your five. Go for 82-0.

Build your five →