PROJECTS

IN PROGRESS · 2026 · AGGIE SPORTS ANALYTICS

Quantifying Off-Ball Movement from Player Tracking Data

Almost every soccer statistic describes the player on the ball. This one measures the other ten. Working from broadcast tracking of Germany's 1-2 loss to Japan at the 2022 World Cup, it finds every moment a player breaks into a run without the ball and scores it on the space won and the danger created. A first-pass classifier sorts each run by shape; that part is still being validated.

QUANTIFYING OFF-BALL MOVEMENT FROM PLAYER TRACKING DATA
124runs detected in the pilot match
PythonPlayer TrackingExpected Threat (xT)Soccer Analytics

THE STORY

Run counts are the easy number, and they mislead. Germany out-ran Japan 79 to 45 in a game Germany lost, and Japan's 45 runs were worth more than Germany's 79: 0.51 of expected threat against 0.35. That gap between how much a team runs and how much those runs are worth is the thing I am trying to measure. One match is a pilot, not a finding. 20 of the 124 detections were checked by hand and all 20 held up, the goal times match open data to the second, and the run-type labels are first-pass geometry I would not defend yet. Next it gets pointed at a teammate's tracking model, and then at UC Davis women's soccer film.

FEATURES

Run Detection

Speed and acceleration rule over PFF FC broadcast tracking at 29.97 Hz

Run Typing

Geometry sorts each run: in-behind, ahead-of-ball, come-short, overlap, underlap

Separation Gained

Distance won on the nearest defender across the run

Threat Delta

Change in expected threat on Karun Singh's xT grid

Reception Check

Which runs actually got the ball: 35 of the 124

Validation

Goal timestamps matched to the second against StatsBomb open data

LIVE DEMO

Try the live model

DOCUMENTS

CODE

Repo pending · active research with Aggie Sports Analytics