Derived Carry Filters
Two filters classify carry events by properties insight computes from the
carry geometry and the team's attacking direction. Both return carry intervals
with the actor fields (player_id, team_id, team_name) and, when requested,
pitch coordinates. Both require v3 data. take_on_candidate requires engine
0.5.45 or later.
Progressive carry
Carries that moved the ball toward the opponent goal, by the FBref/Opta standard. A carry is progressive when it advances at least 10 m toward the opponent goal, or at least 5 m when it starts in the attacking third, or it ends inside the opponent penalty box. Carries shorter than 5 m never qualify.
{
"type": "progressive_carry",
"teams": ["team_0"],
"players": ["0-10"]
}
| Parameter | Type | Required | Description |
|---|---|---|---|
players |
array \| null |
No | Restrict to these player ids. |
teams |
array \| null |
No | Restrict to these teams. Ignored when players is set. |
Progress toward goal needs the team's attacking direction, taken from the same
source the player report uses. Results carry
the label progressive_carry.
Warning
When the run's attacking direction is unknown, the filter returns no
intervals rather than guessing. A run scores a direction from the hub team
sheet, art_game_meta.json, or the tracking side signal; a run with none
returns nothing for this filter.
Take-on candidate
Carries that engaged a defender: the carrier came within a threshold distance of an opponent during the carry. This marks a carry as a candidate take-on. It is not a claim that the defender was beaten. The engine does not grade take-on success.
{
"type": "take_on_candidate",
"teams": ["team_0"],
"max_opp_dist_m": 1.5
}
| Parameter | Type | Unit | Required | Description |
|---|---|---|---|---|
players |
array \| null |
No | Restrict to these player ids. | |
teams |
array \| null |
No | Restrict to these teams. Ignored when players is set. |
|
max_opp_dist_m |
float \| null |
m | No | Closest-approach distance that counts as engaging a defender. Default 1.5. |
The threshold reads the carry's min_opp_dist_m metadata. A lower value selects
tighter engagements: 1.5 recovers more take-ons, 1.0 fewer but purer.
Results carry the label take_on_candidate.