Statistic Confidence

July 15, 2026 ยท View on GitHub

subtr-actor exports a mix of replay-reported values, frame-derived measurements, and higher-level gameplay heuristics. This document tracks the current confidence level for the exported statistic identifiers.

The identifier format below is <domain>.<name>. Labeled variants use the same identifier plus labels. This is not a formal accuracy benchmark; confidence is an implementation-status assessment based on source semantics, tests, manual replay inspection, and how much inference the stat requires.

Confidence Levels

  • High: direct replay data or simple arithmetic over reliable frame state. These stats are generally suitable for user-facing summaries.
  • Medium: derived from reliable frame state, but dependent on thresholds, time windows, inferred ownership, or game-context classification. These stats are useful analytical signals, but should be validated against your replay set before use as hard labels.
  • Experimental: specialized heuristic detectors. These are useful for discovery, review, and feature exploration, but should not be treated as a production-grade source of truth without additional validation.

High Confidence

IdentifiersBasis and caveats
core.score, core.goals, core.assists, core.saves, core.shotsReplay-reported scoreboard values. Reliability mainly depends on successful replay parsing and player/team mapping.
core.shooting_percentageSimple derived value over core.goals and core.shots.
demo.inflicted, demo.takenBacked by explicit replay demolition events.
boost.avg_amount, boost.time_zero_boost, boost.time_full_boost, boost.time_boost_0_25, boost.time_boost_25_50, boost.time_boost_50_75, boost.time_boost_75_100, boost.percent_zero_boost, boost.percent_full_boost, boost.percent_boost_0_25, boost.percent_boost_25_50, boost.percent_boost_50_75, boost.percent_boost_75_100Computed from observed per-player boost values across processed frames. Accuracy still depends on frame reconstruction and replay sampling.
movement.tracked_time, movement.total_distance, movement.avg_speed, movement.avg_speed_percentage, movement.time_ground, movement.time_low_air, movement.time_high_air, movement.time_slow_speed, movement.time_boost_speed, movement.time_supersonic_speed, movement.percent_ground, movement.percent_low_air, movement.percent_high_air, movement.percent_slow_speed, movement.percent_boost_speed, movement.percent_supersonic_speedArithmetic over reconstructed player rigid-body state and simple speed/height thresholds. Non-standard modes or malformed actor state can still affect values.

Medium Confidence

IdentifiersBasis and caveats
core.goals_conceded_while_last_defender, core.goals_for_while_most_back, core.goals_against_while_most_back, core.goal_against_boost_sample_count, core.average_boost_on_goals_against, core.goal_against_boost_leadup_sample_count, core.average_boost_in_goal_against_leadup, core.average_min_boost_in_goal_against_leadup, core.goal_against_position_sample_count, core.average_goal_against_position_x, core.average_goal_against_position_y, core.average_goal_against_position_z, core.scoring_goal_last_touch_position_sample_count, core.average_scoring_goal_last_touch_position_x, core.average_scoring_goal_last_touch_position_y, core.average_scoring_goal_last_touch_position_z, core.average_goal_time_after_kickoff, core.median_goal_time_after_kickoff, core.goal_ball_air_time_sample_count, core.average_goal_ball_air_time, core.median_goal_ball_air_time, core.kickoff_goal_count, core.short_goal_count, core.medium_goal_count, core.long_goal_count, core.counter_attack_goal_count, core.sustained_pressure_goal_count, core.other_buildup_goal_countGoal-context metrics reconstructed from frame state around scoring events. They depend on last-touch, position, boost, kickoff, ball-ground contact, and buildup classifiers.
boost.bpm, boost.amount_collected, boost.amount_collected_inactive, boost.count_collected_inactive_big, boost.count_collected_inactive_small, boost.amount_stolen, boost.amount_collected_big, boost.amount_stolen_big, boost.amount_collected_small, boost.amount_stolen_small, boost.amount_respawned, boost.count_collected_big, boost.count_stolen_big, boost.count_collected_small, boost.count_stolen_small, boost.amount_overfill, boost.amount_overfill_stolen, boost.amount_used, boost.amount_used_while_grounded, boost.amount_used_while_airborne, boost.amount_used_while_supersonicUses boost deltas, resolved pad state, ownership, location, live-play state, vertical state, and supersonic classification. More inferential than boost amount over time.
touch.touch_count, touch.control_touch_count, touch.medium_hit_count, touch.hard_hit_count, touch.aerial_touch_count, touch.high_aerial_touch_count, touch.wall_touch_count, touch.is_last_touch, touch.last_touch_time, touch.last_touch_frame, touch.time_since_last_touch, touch.frames_since_last_touch, touch.last_ball_speed_change, touch.average_ball_speed_change, touch.max_ball_speed_change, touch.total_ball_travel_distance, touch.total_ball_advance_distance, touch.total_ball_retreat_distance, labeled touch.touch_count by kind, height, surface, and dodge stateTouches are grounded in replay events, but labels and ball-effect metrics depend on nearby frame state and thresholds.
possession.time, possession.team_zero_time, possession.team_one_time, possession.neutral_time, possession.team_zero_pct, possession.team_one_pct, possession.neutral_pctInferred from touch sequences and live-play filtering. Useful as an analytical possession signal, not an official game stat.
pressure.time, pressure.team_zero_side_time, pressure.team_one_side_time, pressure.neutral_time, pressure.team_zero_side_pct, pressure.team_one_side_pct, pressure.neutral_pctDerived from possession, ball/field position, and accumulated time. Treat as a tactical heuristic.
positioning.active_game_time, positioning.avg_distance_to_ball, positioning.avg_distance_to_ball_possession, positioning.avg_distance_to_ball_no_possession, positioning.avg_distance_to_mates, positioning.time_defensive_third, positioning.time_neutral_third, positioning.time_offensive_third, positioning.time_defensive_half, positioning.time_offensive_half, positioning.time_behind_ball, positioning.time_level_with_ball, positioning.time_in_front_of_ball, positioning.time_most_back, positioning.time_mid_role, positioning.time_most_forward, positioning.time_other_role, positioning.time_no_teammates, positioning.time_closest_to_ball, positioning.time_farthest_from_ball, positioning.time_demolished, positioning.percent_defensive_third, positioning.percent_neutral_third, positioning.percent_offensive_third, positioning.percent_defensive_half, positioning.percent_offensive_half, positioning.percent_behind_ball, positioning.percent_level_with_ball, positioning.percent_in_front_of_ball, positioning.percent_most_back, positioning.percent_mid_role, positioning.percent_most_forward, positioning.percent_other_role, positioning.percent_closest_to_ball, positioning.percent_farthest_from_ball, positioning.times_caught_ahead_of_play_on_conceded_goalsThresholded interpretation of player locations, team orientation, possession state, and role ordering. Sensitive to playlist shape and role-threshold choices.
pass.completed_pass_count, pass.received_pass_count, pass.average_pass_distance, pass.average_pass_advance, pass.longest_pass_distance, one_timer.count, one_timer.average_pass_distance, one_timer.average_ball_speed, one_timer.fastest_ball_speedDepends on touch ordering, team ownership, ball movement, and timing windows. Spot-check before using as supervised labels.
fifty_fifty.count, fifty_fifty.wins, fifty_fifty.losses, fifty_fifty.neutral_outcomes, fifty_fifty.possession_after_count, fifty_fifty.win_pct, fifty_fifty.team_zero_wins, fifty_fifty.team_one_wins, fifty_fifty.neutral_possession_after_count, fifty_fifty.team_zero_possession_after_count, fifty_fifty.team_one_possession_after_count, fifty_fifty.team_zero_win_pct, fifty_fifty.team_one_win_pct, fifty_fifty.kickoff_count, fifty_fifty.kickoff_wins, fifty_fifty.kickoff_losses, fifty_fifty.kickoff_neutral_outcomes, fifty_fifty.kickoff_possession_after_count, fifty_fifty.kickoff_win_pct, fifty_fifty.kickoff_team_zero_wins, fifty_fifty.kickoff_team_one_wins, fifty_fifty.kickoff_team_zero_win_pct, fifty_fifty.kickoff_team_one_win_pctUses contested-touch and possession-transition context. Counts can be sensitive to timing windows and touch attribution.
whiff.whiff_count, whiff.beaten_to_ball_count, whiff.grounded_whiff_count, whiff.aerial_whiff_count, whiff.dodge_whiff_count, whiff.is_last_whiff, whiff.last_whiff_time, whiff.last_whiff_frame, whiff.time_since_last_whiff, whiff.frames_since_last_whiff, whiff.last_closest_approach_distance, whiff.best_closest_approach_distance, whiff.average_closest_approach_distanceWhiffs are inferred from a committed approach, proximity, speed, dodge/aerial state, and clear separation without a touch. Any touch interrupts the whiff candidate; opponent wins are classified by the dedicated beaten_to_ball stream. The legacy whiff.beaten_to_ball_count remains for playback compatibility. False positives are possible in congested or fake-challenge plays.
rush.team_zero_count, rush.team_one_count, rush.team_zero_two_v_one_count, rush.team_zero_two_v_two_count, rush.team_zero_two_v_three_count, rush.team_zero_three_v_one_count, rush.team_zero_three_v_two_count, rush.team_zero_three_v_three_count, rush.team_one_two_v_one_count, rush.team_one_two_v_two_count, rush.team_one_two_v_three_count, rush.team_one_three_v_one_count, rush.team_one_three_v_two_count, rush.team_one_three_v_three_countRush classifications depend on possession changes, advancing play, timing, and available-player context.
backboard.count, double_tap.count, ball_carry.count, ball_carry.total_time, ball_carry.avg_time, ball_carry.longest_time, ball_carry.total_path_distance, ball_carry.avg_path_distance, ball_carry.total_straight_line_distance, ball_carry.avg_straight_line_distance, ball_carry.furthest_straight_line_distance, ball_carry.avg_horizontal_gap, ball_carry.avg_vertical_gap, ball_carry.avg_speed, ball_carry.fastest_avg_speed, air_dribble.count, air_dribble.total_time, air_dribble.avg_time, air_dribble.longest_time, air_dribble.total_path_distance, air_dribble.avg_path_distance, air_dribble.total_straight_line_distance, air_dribble.avg_straight_line_distance, air_dribble.furthest_straight_line_distance, air_dribble.avg_horizontal_gap, air_dribble.avg_vertical_gap, air_dribble.avg_speed, air_dribble.fastest_avg_speedHigher-level event interpretations built from touch sequences and ball/player frame state. Plausible for review workflows, but representative replay clips should be checked.
powerslide.count_powerslide, powerslide.time_powerslide, powerslide.avg_powerslide_durationBased on player input/state across frames. Thresholding and sampling can affect short slides.

Experimental

IdentifiersBasis and caveats
flick.count, labeled flick.count by confidence_band and kind, flick.high_confidence_count, flick.is_last_flick, flick.last_flick_time, flick.last_flick_frame, flick.time_since_last_flick, flick.frames_since_last_flick, flick.last_confidence, flick.average_confidence, flick.best_confidence, flick.average_setup_duration, flick.average_ball_speed_changeSpecialized flick detector using setup, timing, ball-speed change, and car/ball state heuristics. Reverse kind labels require backflip-direction pitch, forward impulse relative to dodge-start orientation, and car rotation under the ball; they are heuristic review signals.
ceiling_shot.count, ceiling_shot.high_confidence_count, ceiling_shot.is_last_ceiling_shot, ceiling_shot.last_ceiling_shot_time, ceiling_shot.last_ceiling_shot_frame, ceiling_shot.time_since_last_ceiling_shot, ceiling_shot.frames_since_last_ceiling_shot, ceiling_shot.last_confidence, ceiling_shot.average_confidence, ceiling_shot.best_confidenceSpecialized detector for ceiling-shot-like sequences. Sensitive to car-surface state, aerial continuation, and touch timing.
wall_aerial.count, wall_aerial.high_confidence_count, wall_aerial.is_last_wall_aerial, wall_aerial.last_wall_aerial_time, wall_aerial.last_wall_aerial_frame, wall_aerial.time_since_last_wall_aerial, wall_aerial.frames_since_last_wall_aerial, wall_aerial.last_confidence, wall_aerial.average_confidence, wall_aerial.best_confidence, wall_aerial.average_setup_duration, wall_aerial.average_takeoff_to_touch_time, wall_aerial.average_touch_heightSpecialized detector for controlled wall-to-air continuations. It depends on wall-contact thresholds, inferred wall control, takeoff timing, touch attribution, and ball impulse.
wall_aerial_shot.count, wall_aerial_shot.high_confidence_count, wall_aerial_shot.is_last_wall_aerial_shot, wall_aerial_shot.last_wall_aerial_shot_time, wall_aerial_shot.last_wall_aerial_shot_frame, wall_aerial_shot.time_since_last_wall_aerial_shot, wall_aerial_shot.frames_since_last_wall_aerial_shot, wall_aerial_shot.last_confidence, wall_aerial_shot.average_confidence, wall_aerial_shot.best_confidence, wall_aerial_shot.average_takeoff_to_shot_time, wall_aerial_shot.average_shot_heightSpecialized detector for shots after wall takeoff. It does not require prior controlled wall possession and depends on replay-reported shot events.
speed_flip.count, speed_flip.high_confidence_count, speed_flip.is_last_speed_flip, speed_flip.last_speed_flip_time, speed_flip.last_speed_flip_frame, speed_flip.time_since_last_speed_flip, speed_flip.frames_since_last_speed_flip, speed_flip.last_quality, speed_flip.average_quality, speed_flip.best_qualitySpecialized kickoff/movement mechanic detector using thresholded orientation and cancel signals.
wavedash.count, wavedash.high_confidence_count, wavedash.is_last_wavedash, wavedash.last_wavedash_time, wavedash.last_wavedash_frame, wavedash.time_since_last_wavedash, wavedash.frames_since_last_wavedash, wavedash.last_quality, wavedash.average_quality, wavedash.best_qualitySpecialized landing/jump mechanic detector. Short timing windows make it sensitive to sample rate and state reconstruction.
half_flip.count, half_flip.high_confidence_count, half_flip.is_last_half_flip, half_flip.last_half_flip_time, half_flip.last_half_flip_frame, half_flip.time_since_last_half_flip, half_flip.frames_since_last_half_flip, half_flip.last_quality, half_flip.average_quality, half_flip.best_qualitySpecialized recovery mechanic detector using orientation, jump, and movement signals.
dodge_reset.count, dodge_reset.on_ball_countTracks raw dodge-refresh counter events and the on-ball subset used as flip-reset evidence. Needs more replay-backed validation before production use.
bump.inflicted, bump.taken, bump.team_inflicted, bump.team_takenInfers non-demo player collisions from movement and proximity signals. Especially sensitive to sampling, crowding, and ambiguous contact.

Interpreting Detector Scores

Fields named last_confidence, average_confidence, best_confidence, last_quality, average_quality, and best_quality are internal detector scores. They are not calibrated probabilities. Read them as "how strongly the observed frames matched this detector's heuristic."

For downstream models, prefer using these scores as soft features or review signals. Avoid treating them as ground-truth labels without manual or benchmark validation.

Updating This Document

When adding or changing an exported stat, update this document with the <domain>.<name> identifier and the most conservative confidence level that fits the evidence.

Promote a stat only when there is evidence that its semantics hold across replay versions, playlists, skill levels, and unusual game states. Useful evidence includes focused unit tests, replay fixtures with known expected events, manual review in the stats player, comparison with official Rocket League stats or a trusted external source, and documented behavior for kickoffs, goals, overtime, demos, disconnects, and non-standard modes.