Skip to content
BrowseClutch Context
Analytics module · as of 2026-07-23

Clutch shifts: an honest refusal, not a fabricated split

The late-game per-36 SHIFT analytic is NOT BUILT: the NBA boxscores parquet is a full-game aggregate with no period or clutch grain, so a Q4/OT split cannot be computed from it without fabricating the numbers.
confirmednull (a finding)not testabledescriptivepending
No committed chart for this module — the receipts below are the evidence.

What it means

Rather than manufacture 'clutch' stats off full-game rows, the module refuses and documents exactly why: the per-period player box lines exist in the raw cache, but the ingest step sums them into one full-game row per player and discards the period grain. It even names the fields a re-ingest would need -- a period column (late-game = period >= 4) plus the box stats and minutes at that grain -- so the fix is specified, just out of scope for a read-only showcase.

Caveats & confounds

The period grain is discarded upstream at ingest (ingest_boxscores.py sums quarter files into one full-game row); recovering it is a data-layer re-ingest, out of scope for this module.