Whistle Physics Contact measurement · Los Angeles

Research · Phase 1 proof-of-concept

What public data supports today, and what it doesn't yet.

We built the corpus and a first pose-physics pipeline on public broadcast video. The corpus is large. The first features show no measurable separation between correct and incorrect calls at n=54. That is the result expected at this sample size and this tracking quality, so we report it as a null.

01 / Corpus

Public, graded, and large

Every row carries the league's own grade of the call. Public pages only, about one request per second, every download cached.

  • Last Two Minute events 79,974

    3,893 games, 2017-18 to 2025-26. 96% have a downloadable broadcast clip.

  • Coach's challenges 5,990

    2019-20, 2020-21, 2023-24, 2024-25, 2025-26. Overturn rate rose from 40% to 64%.

  • Clips processed 56 clips · 644 MB

    14 each of CC / IC / CNC / INC. Shooting, personal and offensive fouls, 2024-25 and 2025-26.

L2M decisions across the corpus
DecisionMeaningEvents
CNCCorrect non-call56,378
CCCorrect call17,318
INCIncorrect non-call4,170
ICIncorrect call690
blankUnparsed or "undetectable"1,415

Incorrect calls are rare: 0.9% of graded events. That rarity drives the sample-size math below. 2015-16 and 2016-17 L2M index pages return 404. 2021-22 and 2022-23 challenge results were not found live or archived. Challenge clips: in progress (links collected, not yet downloaded). Season-by-season breakdowns of this corpus are on the Numbers page.

02 / Pipeline

From a graded event to physics features

Broadcast video today; the pilot brings the arena feed. The pipeline stays the same and only the pose source changes.

Locate the event. L2M gives only the game clock. On-device OCR reads the scorebug and syncs the event to video time. This synced 34 of 56 clips; the other 22 use the median clip offset (event about 11.3 s in), the same rule for every decision class so timing can't leak the label.

Track pose. A 2D pose model with multi-object tracking over a four-second window around the event, with camera translation and shot cuts stored per frame.

Pick the contact pair. On-court players in different jerseys with feet at a similar image depth, closest skeleton gap within ±1.2 s of the event.

Measure. Camera-stabilised, in units of player height: approach speed, minimum skeleton gap, post-contact torso and head deviation, reaction latency, an embellishment ratio, and the defender's verticality.

03 / Examples

Pose at the contact frame

The broadcast frame is blurred out; only the tracked skeletons are drawn. Trails show hip paths over ±0.6 s.

  • Reactor (larger post-contact deviation)
  • Initiator
  • Other detections
  • Skeleton overlay: an offensive player's screen on a defender, both skeletons overlapping at the contact point, other players in thin grey.
    Correct pairOffensive foul, correct non-call (CNC)A screen on a defender. The auto-picked pair is right.
  • Skeleton overlay: a defender and a shooter in contact, the defender's arm across the shooter's body.
    Correct pairShooting foul, incorrect non-call (INC)Contact on a shot that the review says should have been called.
  • Skeleton overlay: the two highlighted skeletons are far apart, showing a wrongly selected contact pair.
    FailureIncorrect call (IC), wrong pairThe auto-pair picks a sideline person and a far player. This is the main failure mode.
04 / Result

Separation check: none at n=54

Labels come from the L2M review. Leave-one-out logistic regression on 6 features, 200-permutation null, bootstrap 95% CI.

No measurable separation between correct and incorrect calls at n=54.

The permutation p-values are the test, and none is below 0.60. LOO AUCs well below 0.5 are a known leave-one-out artifact on null data, not anti-prediction.

Leave-one-out logistic regression
TaskQuestionn (pos)LOO AUC95% CIPermutation p
foul_truthDid a foul occur? (CC+INC vs IC+CNC)54 (27)0.260.13–0.400.93
cc_vs_icAmong whistles, was it right?26 (13)0.330.13–0.550.60
inc_vs_cncAmong non-calls, was a foul missed?28 (14)0.090.00–0.230.98

Strongest single features: none survives 36 tests; the minimum p is 0.12. The two directional hints are physically sensible but within noise: on correct whistles the defender was more upright (3.5° vs 7.9° from vertical), and missed fouls show bigger post-contact head displacement. Two of 56 clips were dropped because the auto-picked pair was visibly wrong (one CC, one IC); the audit images showed the label, so the exclusion was not label-blind.

Clips per class needed to detect an effect (α=0.05, power 0.8)
Target AUCClips per class
0.60130
0.6557
0.7032
0.7520

The corpus holds 690 IC and 4,170 INC events, so 150–300 clean clips per class is reachable from public data alone. The bottleneck is contact-pair accuracy, not data.

05 / Limitations

What this does not show

Read the result with these in mind.

  1. One broadcast angle, 2D.Depth is guessed from foot height in the image and camera zoom isn't compensated. Contact force, timing and the cylinder rule are 3D quantities; broadcast pose sees a projection at about 170 px per player.
  2. Heuristic pair and role identity.In a visual audit of 16 of 56 auto-picked pairs, 13 were ok, 1 partial and 2 wrong. Reactor and initiator are assigned by behaviour, not the L2M committing and disadvantaged player. Occlusion at contact causes tracking ID switches.
  3. Labels and sample.n=54. Incorrect calls are 0.9% of the corpus, and L2M grades only the last two minutes of close games. All 56 clips are from 2024-25 and 2025-26. Event time is ±0.5 s where the clock shows M:SS, and 22 clips use the median offset.
  4. Pooled play types.Shooting, personal and offensive fouls are pooled, though their physics differ: a charge is about position, a shooting foul about arm contact.
06 / Next

Open work

No numbers yet for any of these.

  • Scale the labelled set to 150–300 clips per class from the existing corpusIn progress
  • Fix identity first: jersey-number OCR plus team colour, and appearance re-identification to cut ID switchesIn progress
  • Per-play-type models (block/charge, shooting arm contact, displacement fouls)In progress
  • Coach's challenges as a second label source: an overturn means the on-floor call was wrongIn progress
  • Separation result on a larger, label-blind audited setIn progress
07 / Status

Proof-of-concept in development on public data. Applying to NBA Launchpad 2027.