Skip to content

Team Possession

A continuous span over which one team is in possession of the ball. Ends when possession transfers to the opponent, the ball goes out of play, or the underlying classifier loses confidence (team_side = 'unknown').

Category: Possession

Properties

Property Type Description Values
team_label int8 Team label, harmonised across the match (0 or 1).
team_side str Camera-relative side a team_possession span belongs to. left, right, unknown
unknown_reason str Why a span was tagged team_side='unknown'. unclear

Property Values

team_side

A continuous span over which one team is in possession of the ball. Ends when possession transfers to the opponent, the ball goes out of play, or the underlying classifier loses confidence (team_side = 'unknown').

Value Description
left Camera-relative left side of the pitch.
right Camera-relative right side of the pitch.
unknown Possession classifier had low confidence. Pair with metadata.unknown_reason for the cause.

unknown_reason

Why a span was tagged unknown (currently only set on team_possession spans with team_side='unknown').

Value Description
unclear Possession classifier confidence was below threshold.

Accuracy

Held-out model quality — how well the engine reproduces ground truth on frozen evaluation games it was never trained on. This is not per-match confidence (each event row also carries its own confidence_event). Metric: frame_macro_f1 (per-frame, macro-averaged over classes), measured 2026-07-10.

Ground-truth source Accuracy Macro F1 Frames
World Cup Broadcast 0.87 0.87 466,231
Senior broadcast pool 0.87 0.84 591,033
Non-broadcast youth pool 0.85 0.83 696,981
Senior tactical-camera pool 0.79 0.78 659,733

Querying

{
  "filters": [
    { "type": "team_possession", "teams": ["team_0"] }
  ]
}

Response

Events of this type appear in the Events endpoint response:

{
  "start": 125.5,
  "end": 135.5,
  "label": "FC Example",
  "event_type": "team_possession"
}

The label is the team name (e.g., "FC Example").