SkillCorner X PySport Analytics Cup

December 28, 2025 · View on GitHub

This repository contains Emaly Vatne's submission for the SkillCorner X PySport Analytics Cup Research Track. :)


Calculating Worst-Case Scenario Running Demands in Soccer Using Optical Tracking Data and Contextualizing Them with In-Game Events and Visualized Movement Sequences

Introduction

External load metrics from match play are ubiquitously used to support physical preparation in soccer (1), but are often aggregated across a match, obscuring worst-case scenario (WCS) demands. WCS demands represent the highest locomotor intensities over short rolling windows and better reflect peak match demands than whole-match averages (2,3). Preparing players for WCS demands is critical for effective training design. However, WCS metrics are rarely contextualized within the game, limiting their value to coaches. It remains unclear which technical or tactical actions precede WCS demands or how movement sequences can support sport-specific conditioning. Therefore, this study aimed to contextualize WCS running demands by identifying preceding events and reconstructing movement sequences to inform tactical teaching and physical preparation.

Methods

Optical tracking data from a randomly selected professional soccer match with publicly available tracking and event files (Brisbane Roar FC vs. Perth Glory FC; match_id = 1925299) were analyzed to develop this reusable tool. WCS running demands were calculated using a rolling moving-average approach across 1-, 2-, 3-, 4-, and 5-minute windows. For each player, WCS windows were extracted and aligned with event data using timestamps and frame counts. Events occurring prior to each WCS window were merged with its start by matching frame count and player ID. Player trajectories and speed profiles during WCS periods were reconstructed to characterize individual movement sequences.

Results

This submission provides a generalizable Jupyter Notebook that calculates WCS demands from SkillCorner tracking data, merges them with preceding in-game dynamic events on a player-specific basis, and visualizes movement sequences during WCS periods for a selected player, allowing the workflow to be applied across matches.

In the match analyzed for the development of this tool, the peak running intensity increased as window duration shortened, with the highest demands observed during the 1-minute windows, consistent with previous literature (2,3).

Table 1. Team-level summary of peak locomotor intensities across multiple WCS durations, reported as mean values with minimum–maximum ranges.

TeamPeak m/min 60sPeak m/min 120sPeak m/min 180sPeak m/min 240sPeak m/min 300s
Brisbane Roar FC220.3 (98.2 – 269.6)212.1 (78.7 – 269.6)210.4 (73.2 – 269.6)209.4 (67.5 – 269.6)209.2 (65.2 – 269.6)
Perth Glory Football Club225.1 (114.2 – 375.5)212.7 (97.9 – 375.5)210.7 (89.6 – 375.5)208.9 (81.6 – 375.5)208.5 (81.6 – 375.5)

Additionally, common preceding events differed across players and positions, with WCS demands emerging from contexts including defensive off-ball runs and on-ball engagements.

Table 2. Summary of dynamic tactical events occurring immediately before peak 60-second worst-case scenario (WCS) running demands, grouped by team.

TeamEvent TypeEvent Type CountEvent ProportionEvent Sub-TypeSub-Type Count
Brisbane Roar FCpassing_option228.57No Sub-Type2
Brisbane Roar FCoff_ball_run228.57run_ahead_of_the_ball1
Brisbane Roar FCoff_ball_run228.57support1
Brisbane Roar FCon_ball_engagement228.57pressure1
Brisbane Roar FCon_ball_engagement228.57recovery_press1
Brisbane Roar FCplayer_possession114.29No Sub-Type1
Perth Glory FCoff_ball_run337.50run_ahead_of_the_ball1
Perth Glory FCoff_ball_run337.50support2
Perth Glory FCpassing_option225.00No Sub-Type2
Perth Glory FCplayer_possession225.00No Sub-Type2
Perth Glory FCon_ball_engagement112.50pressing1

Movement sequence analysis revealed substantial inter-individual variability in how peak demands were accumulated despite similar running intensities. This part of the Notebook supports the design of conditioning drills that replicate the locomotor demands of WCS demands periods. Additionally, the visualization demonstrates that WCS demands/peak running intensities are rarely linear and in the same speed and thus training should adjust accordingly to be sport-specific.

Figure 1. Example animation of 60-Second WCS Demand Movement Sequence.

Conclusion

This workflow provides coaches and performance practitioners with interpretable, context-driven WCS calculations and analysis. By linking peak running intensities to tactical events and reconstructing movement sequences, it enhances collaboration across departments and informs individualized, sport-specific training prescriptions. The notebook offers a scalable tool that can be repeatedly applied across matches to support ongoing monitoring, tactical evaluation, and readiness-based decision-making in elite soccer.


How to Run the Code

  1. Prerequisites
    Make sure Python3 is installed.
  2. Install Pipenv
  3. Set up the environment
  4. Open the notebook
    Launch submission.ipynb and choose the Python kernel created by Pipenv.
  5. Run the notebook
    Select the match(es) that you wish to analyze. For the movement sequences visualization, select the player and window duration and then hit Play.

References

  1. Halson, S. L. (2014). Monitoring Training Load to Understand Fatigue in Athletes. Sports Medicine, 44(S2), 139–147. https://doi.org/10.1007/s40279-014-0253-z

  2. Oliva-Lozano, J. M., Rojas-Valverde, D., Gómez-Carmona, C. D., Fortes, V., & Pino-Ortega, J. (2020). Worst case scenario match analysis and contextual variables in professional soccer players: A longitudinal study. Biology of Sport, 37(4), 429–436. https://doi.org/10.5114/biolsport.2020.97067

  3. Lobo-Triviño, D., García-Calvo, T., Polo-Tejada, J., Sanabria-Pino, B., López del Campo, R., Nevado-Garrosa, F., & Raya-González, J. (2025). Analyzing Positional and Temporal Variations in Worst-Case Scenario Demands in Professional Spanish Soccer. Journal of Functional Morphology and Kinesiology, 10(2), 172. https://doi.org/10.3390/jfmk10020172