Appearance
1v1 Advantage Creation
The advantage_creation_1v1 section in the markings response contains a row for each 1-on-1 advantage creation attempt (i.e. an iso or post up) we identify in the tracking data.
Overview
We identify a 1v1 creation attempt when the ball handler attempts to create an advantage against a defender who is in a set guarding position (i.e. there hasn't already been an advantage created prior to this situation). These are classicly thought of as isolations and post ups.
Each row includes:
- The key players involved (ball handler and their primary defender)
- The frame and timing when the 1v1 opportunity began
- Whether we classify the situation as a post-up based on our own methodology
- Fields that we use for that classification if you want to develop your own: whether the 1v1 started with a back-to-basket catch, included a live dribble back-down, and whether the player clearly faces up soon after the start
A few important notes:
- The player must have the ball. If the player is posting up and never receives the ball, that situation will not appear in this data set.
- The offensive player must be in the frontcourt when the 1v1 window begins. Beating backcourt pressure is therefore not considered a 1v1 creation attempt, but if the defender is in a guarding position when the ball enters the frontcourt then it could be a 1v1 creation attempt that starts at that point.
- The defender must not be recovering from a prior advantage created. For example, if the defender is closing out when the ball handler attacks, this would not be a 1v1 creation attempt. However, if the defender closes out and gets on balance before the ball handler attacks, then we would consider it a 1v1 creation attempt. This, for example, we would not consider a 1v1 creation attempt because the closeout is what creates the advantage:
- While this we would consider a 1v1 creation attempt because the defender gets set after the closeout:
- Similarly, if the ball handler comes off a ball screen and the defense switches while the ball handler continues to attack, that would not be a 1v1 creation attempt, we would say the advantage is created by the ball screen:
- However, if the ball handler pauses long enough after the screen for the defender to set themselves, or the defender is initially set, this would be considered a 1v1 creation attempt:
- Closeouts and ball screen continuations are examples of situations that are very difficult to get right with 100% accuracy. We have done a lot of work on this so far and will continue to work to improve it, but it still is the most frequent cause of error and is likely always going to be an area that is difficult to get 100% correct because of how subtle the differences can be.
- Transition is another example of a tricky situation to distinguish between a true 1v1 or not. Ideally, if the defense is not yet set from a change of possession, we say that the advantage is created by transition, not 1v1, like this:
- However, if the defense is mostly set (particularly the on ball defender) or gets set during the creation window, we consider it a 1v1 creation attempt, like this:
- Elbow action and Delay action, where the ball handler is primarily looking for a handoff or to pass, are also tricky situations. In these cases, an offensive player may catch with their back to the basket or operate in a way that can have a lot of similarities to a true 1v1, for example here: We have attempted to filter these out if they are clearly handoff or pass scenarios, but there is a fine line when a player fakes a DHO and attacks or attacks slightly and then turns to DHO or looks for a handoff and then sees an opportunity to drive or shoot. For example, this play we filter out as a fake DHO, but it is very difficult to filter all of these out perfectly without losing some true 1v1s:
- Additionally, there are post ups that seem designed to facilitate passes or handoffs rather than creation. For example, Split action, where the offense feeds the post mainly as a way to run off ball action, is much more similar to the Elbow and Delay action described above. However, in these cases, given the action originates in a more classic post position, we have decided to include these as 1v1 attempts. We think there is value in knowing if teams are creating off ball action out of the post. The distinction between these actual post ups and those we filter out as elbow touches is mostly based on where on the floor the ball handler initiates the action.
- If a post player is fronted and receives the ball, and then the fronting player leaves the area while another player guards the ball (i.e. a "kickout" or "scram" switch), this will be included as a 1v1 creation attempt with the original defender as the primary defender.
- If a player has the ball in the frontcourt and gets actively double teamed, we consider this a 1v1 creation attempt even if the ball handler doesn't dribble or attack at all, as we deem the double team an indication that the ball handler created an advantage for themselves:
- Another place where our data has some issues is when we'd probably say the action is a ghost screen or ball screen, but the screen is not picked up by our Ball Screens data set because it is a more subtle screen. For example, on this play, the defense adjusts to the presence of the screener, even though the screener never really gets close to setting a screen, so we would not want to call this a 1v1 attempt. But if we do not identify this as a ball screen, then it will end up incorrectly being included as a 1v1. The upside of this is that as the ball screen data set improves, it will have a compounding effect that will improve the 1v1 data set as well.
Sample Response
json
{
"markings": {
"advantage_creation_1v1": [
{
"advantage_creation_1v1_id_ctg": "1v1_40eccc45471f16a26f6a5ea00a8825fd",
"advantage_creation_start_type": "none",
"attacking_positive_x_basket": false,
"ball_defender_id_nba": 1629652,
"ball_handler_id_nba": 1628368,
"ball_handler_loc_x": -326.15,
"ball_handler_loc_y": 112.43,
"ballhandler_touch_start_rim_distance_in": 463.94,
"chance_id_ctg": "chance_624d84698232537f69780a28011f412a",
"faces_up_soon_after_start": null,
"game_id_nba": "0022501230",
"has_back_down": false,
"is_post": false,
"period": 2,
"start_game_clock": 112.0,
"start_he_frame": 194366,
"start_shot_clock": 18.0,
"start_wall_clock": "2025-12-14T03:20:08.379+00:00"
}
]
}
}Fields
Identifiers
advantage_creation_1v1_id_ctg
Type: string
CTG-generated unique identifier for this 1v1 advantage creation event
game_id_nba
Type: string
NBA game ID
chance_id_ctg
Type: string
CTG chance ID for the chance during which this 1v1 occurred
Players
ball_handler_id_nba
Type: integer
NBA player ID of the ball handler in the 1v1 situation
ball_defender_id_nba
Type: integer
NBA player ID of the primary defender guarding the ball handler
Location
attacking_positive_x_basket
Type: boolean
true if the offensive team is attacking the basket on the positive-x side of the court (i.e., the basket with positive x coordinates)
ball_handler_loc_x
Type: float | Unit: inches
X coordinate of the ball handler's location at start_he_frame
ball_handler_loc_y
Type: float | Unit: inches
Y coordinate of the ball handler's location at start_he_frame
Timing
period
Type: integer
Period number (1–4 for regulation, 5+ for overtime)
start_he_frame
Type: integer
Hawk-Eye frame number where the 1v1 advantage creation opportunity begins. The start frame is determined differently depending on the situation:
- Post-ups with back-to-basket jockeying for position: The start frame is set to when the offensive player first has their back to the basket with the defender close by (i.e. when they first try to establish post position)
- Fronted post ups: Similar to back-to-basket, the start frame captures when the player first attempts to establish position while being fronted
- All other 1v1s: The start frame is set to the first dribble during the 1v1 window (if one exists), rather than when the defender first got into guarding position. This better captures when the ball handler actually began their attack. If there is no dribble, the start frame is set to when the defender is first in position to guard the ball handler (based on proximity and rim angle).
start_wall_clock
Type: string
UTC wall clock timestamp for the start frame
start_game_clock
Type: float | Unit: seconds
Game clock (time remaining in the period) at the start frame
start_shot_clock
Type: float | Unit: seconds
Shot clock at the start frame
Classification
is_post
Type: boolean
Is this 1v1 considered a post-up situation? true if there is a meaningful back-down or if the window starts with a back-to-basket catch (unless the player clearly faces up soon after and the catch was not very close to the rim).
advantage_creation_start_type
Type: string
How did this 1v1 opportunity begin?
back_to_basket_before_catch— The ball handler caught a pass with their back to the basket in a post area, facing away from the rim both before and after the catchlive_dribble_back_down— The 1v1 window started from a live dribble with a significant back-down patternnone— Neither of the above patterns was detected (e.g. a more standard isolation)
has_back_down
Type: boolean
Did the ball handler execute a back-down during this 1v1? true if there is a significant cluster of frames where the ball handler is dribbling slowly, close to their defender, with their back to the basket.
faces_up_soon_after_start
Type: boolean
Indicates whether the player clearly faced up toward the rim soon after the 1v1 started. Only populated when advantage_creation_start_type is back_to_basket_before_catch, null otherwise.
ballhandler_touch_start_rim_distance_in
Type: float | Unit: inches
Distance from the ball handler to the rim at the start of the touch that contains this 1v1. This can help distinguish deep post catches from mid-post or perimeter situations.
