Feature Request: Pressing Pattern & Transitional Play Analysis Support
Context
Watching the Arsenal 1-1 Manchester City match at the Emirates (Sep 21, 2025), I observed several pressing and transitional patterns that kloppy could help formalise and quantify. Currently, kloppy excels at loading, querying, and transforming event/tracking data, but there is no built-in support for pressing pattern analysis or transition phase detection — both of which are increasingly central to modern tactical analysis.
Match Observations (Arsenal 1-1 Man City, PL GW5)
1. Man City's Early High Press → Counter-Transition Goal (9th min)
- City opened with a high press in the first few minutes, forcing Arsenal into errors.
- After an Arsenal corner (~7th min), a positional mistake in set-piece structure triggered an immediate City counter-transition: Haaland flicked to Reijnders, the pair sprinted forward, and Haaland finished just 9 seconds after the initial pass. This was a textbook press→win ball→rapid vertical transition→goal sequence.
- kloppy's current event filtering (e.g.,
dataset.filter("shot.goal")) can find the goal, but cannot automatically identify the full pressing-to-transition chain that created it.
2. Arsenal's Second-Half Sustained Possession Press (Low Conversion)
- Arsenal held ~67.2% possession overall (2nd half even higher) but managed only 1 shot on target in the first half.
- The Gunners' territorial pressing pushed City deep, but lacked cutting-edge penetration — a pattern of high pressing intensity with low shot conversion that would be valuable to quantify programmatically.
- City recorded their lowest possession (32.8%) under Guardiola in 601 top-flight matches and only 8 touches in the opposition box (also a Guardiola-era low). These extreme stats suggest Arsenal's pressing was dominant but inefficient at creating high-quality chances from the press.
3. City's Defensive Transition Collapse (93rd min)
- After Haaland was substituted for a defender, City switched to full defensive mode, protecting the lead.
- In the dying minutes, City's defensive shape became shaky under sustained Arsenal pressure. The equaliser came from Eze's lofted long ball over a disorganised City backline, with Martinelli chipping over a stranded Donnarumma.
- This is a classic defensive transition failure — when a team that has been counter-attacking shifts to a low block, the structural coherence often breaks down. Detecting these transition-phase switches automatically from tracking data would be extremely useful.
Proposed Features
-
Pressing Sequence Detection
- Add a query/filter mechanism to identify chains of events representing a pressing sequence: e.g., consecutive defensive actions in the opponent's half within a time window, leading to a ball win or shot.
- Could extend kloppy's regex-based filtering to support multi-event patterns like
"press.win_ball.shot" or "press.win_ball.transition.goal".
- Allow parameterisation (time window, pitch zone, minimum number of pressing actions).
-
Transition Phase Classification
- Implement automatic classification of match phases: Offensive Transition (win ball → attack within X seconds), Defensive Transition (lose ball → defensive shape recovery), Sustained Attack, Sustained Defense, Set Piece.
- This would allow analysts to quantify how often a team creates goals from offensive transitions vs. sustained attacks, or how often they concede during defensive transition failures (as City did in the 93rd minute).
-
Pressing Intensity Metrics
- From tracking data, compute pressing intensity indicators: average distance of defending team's players to the ball when in opponent's half, compactness metrics, PPDA (Passes Per Defensive Action), etc.
- These would help formalise observations like Arsenal's dominant but inefficient pressing in this match.
-
Transition Speed Metrics
- Measure the time from ball win to first shot attempt (offensive transition speed) and time from ball loss to defensive shape recovery (defensive transition speed).
- The Haaland goal (9 seconds from pass to goal) and the Martinelli equaliser are perfect test cases.
Why This Matters for kloppy
Pressing and transitional play are the defining tactical concepts of the modern game (Guardiola, Arteta, Klopp all build their systems around them). kloppy already standardises data from providers like StatsBomb (with 360 freeze-frame data), SkillCorner (tracking data), and Opta — all of which contain the raw information needed to compute these metrics. Adding pressing/transition analysis would make kloppy not just a data-loading library but a tactical analysis toolkit, significantly increasing its value to analysts, coaches, and researchers.
Test Data
The StatsBomb open data and SkillCorner open data already contain matches with similar pressing/transition patterns. The Arsenal vs Man City match itself (if available through a supported provider) would be an excellent demonstration case.
I'd love to hear the community's thoughts on this. Are pressing pattern detection and transition phase classification features that would fit kloppy's scope? Would anyone be interested in collaborating on an implementation?
Feature Request: Pressing Pattern & Transitional Play Analysis Support
Context
Watching the Arsenal 1-1 Manchester City match at the Emirates (Sep 21, 2025), I observed several pressing and transitional patterns that kloppy could help formalise and quantify. Currently, kloppy excels at loading, querying, and transforming event/tracking data, but there is no built-in support for pressing pattern analysis or transition phase detection — both of which are increasingly central to modern tactical analysis.
Match Observations (Arsenal 1-1 Man City, PL GW5)
1. Man City's Early High Press → Counter-Transition Goal (9th min)
dataset.filter("shot.goal")) can find the goal, but cannot automatically identify the full pressing-to-transition chain that created it.2. Arsenal's Second-Half Sustained Possession Press (Low Conversion)
3. City's Defensive Transition Collapse (93rd min)
Proposed Features
Pressing Sequence Detection
"press.win_ball.shot"or"press.win_ball.transition.goal".Transition Phase Classification
Pressing Intensity Metrics
Transition Speed Metrics
Why This Matters for kloppy
Pressing and transitional play are the defining tactical concepts of the modern game (Guardiola, Arteta, Klopp all build their systems around them). kloppy already standardises data from providers like StatsBomb (with 360 freeze-frame data), SkillCorner (tracking data), and Opta — all of which contain the raw information needed to compute these metrics. Adding pressing/transition analysis would make kloppy not just a data-loading library but a tactical analysis toolkit, significantly increasing its value to analysts, coaches, and researchers.
Test Data
The StatsBomb open data and SkillCorner open data already contain matches with similar pressing/transition patterns. The Arsenal vs Man City match itself (if available through a supported provider) would be an excellent demonstration case.
I'd love to hear the community's thoughts on this. Are pressing pattern detection and transition phase classification features that would fit kloppy's scope? Would anyone be interested in collaborating on an implementation?