Skip to content

Chance Matchups

The chance_matchups section in the markings response contains one row per on-court player per chance, attempting to identify the player's matchup at the beginning and end of the chance.

Overview

This data set is player-centered. Each chance has one row for each of the ten players on the court:

  • When is_on_offense is true, matchup player fields refer to the defender guarding player_id_nba.
  • When is_on_offense is false, matchup player fields refer to the offensive player guarded by player_id_nba.

The data includes both 1-to-1 matchup assignments and probabilistic matchup estimates which allow multiple players to be assigned to the same matchup. 1-to-1 assignments mean that at each frame, we try to estimate who each player is assigned to. Double teams are not allowed, so each player must be assigned to exactly one other player.

Probabilistic matchup estimates suggest what the probability is that each player is assigned to each other player at each frame, so if a player is playing between two offensive players they might be 0.5 for each. And if two players are guarding one, they both might be near 1.0 for that player.

Sample Response

json
{
  "markings": {
    "chance_matchups": [
      {
        "chance_id_ctg": "chance_51bfc1fda2cc0deb125bee9988859667",
        "end_highest_matchup_probability": 0.8724,
        "end_highest_probability_matchup_player_id_nba": 1630180,
        "end_matchup_player_id_nba": 1630180,
        "end_matchup_frame_he": 806,
        "end_second_highest_matchup_probability": 0.0876,
        "end_second_highest_probability_matchup_player_id_nba": 1642852,
        "game_id_nba": "0022500404",
        "is_on_offense": true,
        "most_common_matchup_frames": 124,
        "most_common_matchup_player_id_nba": 1630180,
        "player_id_nba": 1629023,
        "start_highest_matchup_probability": 0.9132,
        "start_highest_probability_matchup_player_id_nba": 1630180,
        "start_matchup_player_id_nba": 1630180,
        "start_matchup_frame_he": 414,
        "start_second_highest_matchup_probability": 0.0611,
        "start_second_highest_probability_matchup_player_id_nba": 1642852
      }
    ]
  }
}

Fields

Identifiers

game_id_nba

Type: string

NBA game ID


chance_id_ctg

Type: string

CTG-generated chance ID


player_id_nba

Type: integer

NBA player ID for the player whose matchup context is described by this row


Context

is_on_offense

Type: boolean

true when player_id_nba is on offense for this chance. Offensive rows point to the defender guarding the offensive player. Defensive rows point to the offensive player guarded by the defender.


Chance Checkpoints

start_matchup_frame_he

Type: integer | Nullable

Hawk-Eye frame used as the start-of-chance matchup checkpoint. For chances that end up in the halfcourt, the idea is to try to find a frame where the matchups have settled initially but before any actions are run. null if there is no way to determine matchups cleanly before the chance ends.


end_matchup_frame_he

Type: integer | Nullable

Hawk-Eye frame used as the end-of-chance matchup checkpoint. For chances that end in a shot, this is set to the shot release. null if no end checkpoint can be determined.


Clear Matchups

start_matchup_player_id_nba

Type: integer | Nullable

NBA player ID for the player's matchup near the start checkpoint. This uses 1-to-1 clear assignments, so each defender is assigned as best as possible to an offensive player with no duplicates. null if no clear matchup assignment is available.


end_matchup_player_id_nba

Type: integer | Nullable

NBA player ID for the player's matchup near the end checkpoint. This uses 1-to-1 clear assignments, so each offensive player is assigned as best as possible to a defender with no duplicates. null if no clear matchup assignment is available.


most_common_matchup_player_id_nba

Type: integer | Nullable

NBA player ID for the player's most common matchup during the chance. This uses 1-to-1 clear assignments, so each defender is assigned as best as possible to an offensive player with no duplicates. null if no clear matchup assignments are available during the chance.


most_common_matchup_frames

Type: integer | Nullable

Number of frames during the chance where most_common_matchup_player_id_nba was the player's clear matchup. null if no clear matchup assignments are available during the chance.


Start Matchup Probabilities

start_highest_probability_matchup_player_id_nba

Type: integer | Nullable

NBA player ID for the player's highest-probability matchup near the start checkpoint using the probabilistic matchup estimates. null if no matchup probability estimate is available.


start_highest_matchup_probability

Type: float | Nullable

Estimated probability for start_highest_probability_matchup_player_id_nba. null if no matchup probability estimate is available.


start_second_highest_probability_matchup_player_id_nba

Type: integer | Nullable

NBA player ID for the player's second-highest-probability matchup near the start checkpoint using the probabilistic matchup estimates. null if there is no meaningful second matchup estimate.


start_second_highest_matchup_probability

Type: float | Nullable

Estimated probability for start_second_highest_probability_matchup_player_id_nba. null if there is no meaningful second matchup estimate.


End Matchup Probabilities

end_highest_probability_matchup_player_id_nba

Type: integer | Nullable

NBA player ID for the player's highest-probability matchup near the end checkpoint. null if no matchup probability estimate is available.


end_highest_matchup_probability

Type: float | Nullable

Estimated probability for end_highest_probability_matchup_player_id_nba. null if no matchup probability estimate is available.


end_second_highest_probability_matchup_player_id_nba

Type: integer | Nullable

NBA player ID for the player's second-highest-probability matchup near the end checkpoint. null if there is no meaningful second matchup estimate.


end_second_highest_matchup_probability

Type: float | Nullable

Estimated probability for end_second_highest_probability_matchup_player_id_nba. null if there is no meaningful second matchup estimate.