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").