AI system for analyzing athlete performance
Sports performance analytics is one of the most data-intensive areas of ML application. Professional clubs in the Premier League, NBA, and MLB are investing millions in systems that transform GPS tracking, biometric data, and video into actionable insights for coaching staffs.
Data sources
GPS/IMU tracking:
- Catapult Sports, STATSports, Polar: devices in players' vests
- Metrics: speed, acceleration/deceleration, distance, sprint count
- Frequency: 10-100 Hz (GPS) + 1000 Hz (accelerometer)
- Производные: player load, high-speed running distance, mechanical work
Video analytics:
- OPTA / StatsBomb: event data из video tracking (xG, xA, pressures)
- STATSports Vision / Second Spectrum: automated position tracking 25 fps
- Computer Vision: skeleton tracking (MediaPipe, OpenPose) for biomechanics
Biometric data:
- HR monitors: Polar H10, Garmin HRM-Pro
- HRV (Heart Rate Variability): индикатор recovery и overtraining
- Sleep tracking: Whoop, Oura Ring
- Lactate testing: direct laboratory measurement data
RPE (Rate of Perceived Exertion): Subjective assessment of effort 1-10 after training/game is one of the best predictors of injury risk.
Performance Metrics
Physical KPIs:
physical_metrics = {
'total_distance_km': session_total_distance / 1000,
'hsr_distance_km': high_speed_running_m / 1000, # >5.5 m/s
'sprint_distance_km': sprint_distance_m / 1000, # >7.0 m/s
'accel_decels_count': count(acceleration > 2.5 or deceleration > 2.5),
'max_speed_ms': session_max_speed,
'player_load': catapult_player_load,
'explosive_distance': explosive_acceleration_distance
}
Technical KPIs (из event data):
- Pass completion rate, PPDA (pressing intensity)
- xG, xA, expected threat (xT)
- Ball recovery rate, duels won %
Fatigue Modelling
Acute:Chronic Workload Ratio (ACWR):
def acwr(weekly_loads, acute_window=1, chronic_window=4):
"""
Оптимальная зона ACWR: 0.8-1.3
ACWR > 1.5 → высокий риск нагрузочной травмы (40% выше baseline)
ACWR < 0.8 → недозагрузка, низкая готовность
"""
acute = np.mean(weekly_loads[-acute_window:])
chronic = np.mean(weekly_loads[-chronic_window:])
return acute / chronic if chronic > 0 else 1.0
HRV-based recovery: RMSSD (Root Mean Square of Successive Differences) из HRV:
- 15%+ reduction in RMSSD vs. personal baseline → decreased readiness
- Declining trend for 3+ days → accumulated fatigue, need a fasting day
Injury Risk Prediction
Features:
injury_risk_features = {
'acwr': acwr(last_4_weeks_loads),
'hrv_deviation': (hrv_today - hrv_baseline) / hrv_baseline,
'cumulative_fatigue': sum(fatigue_scores_last_7d),
'days_since_rest': days_since_full_rest_day,
'previous_injuries': binary_history_of_injury,
'age': player_age,
'session_rpe': subjective_effort_rating,
'sleep_quality': sleep_tracker_score,
'muscle_soreness_reported': self_reported_soreness
}
injury_risk_model = LightGBMClassifier().fit(X_train, y_injury)
today_risk = injury_risk_model.predict_proba([today_features])[:, 1]
Target metric: AUC 0.70-0.80 for prospective validation (next month, out of sample). Higher accuracy is likely overfit.
Load Management and periodization
Formation of a training plan:
- Phase classification: preparatory, preseason, in-season, post-match
- Loading wave: 3 weeks of accumulation + 1 week of unloading
- Individual thresholds: each player has personal load thresholds
RL for training planning: Agent optimizes your weekly training plan:
- State: текущий fitness, fatigue, injury risk, schedule
- Actions: training volume and intensity
- Reward: maximize fitness improvement − injury probability
Comparative analytics
Benchmarking:
- Comparison with the best players in the league in similar positions
- Z-score metrics: how much above/below average
- Radar chart: visualization of the player profile
Talent development tracking: Young players: a trajectory model—what progress should look like over the years. Ahead of the trajectory → accelerated development.
Trainer Dashboard
- Player Readiness Board: ready / caution / limited / unavailable
- Weekly load summary for each player
- Injury risk heatmap for next week
- Individual vs. team benchmarks
- Trend charts: physical fitness dynamics over the season
Stack: TimescaleDB for sensor data, Grafana for dashboards, FastAPI for ML inference, React for the custom coaching interface.
Timeframe: GPS analytics + ACWR + basic dashboards — 6-8 weeks. A system with injury prediction, HRV integration, and periodization planning — 4-5 months.







