Skip to content

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.