⬆ Drop CSV here
Capturing dashboard…

Injury Risk Indicator

Team:G-TEC Players: Sessions: Date range:
Hub
— flagged
G-TEC
Drop new CSV here to add daily data
Existing data is preserved · same player + sessionDate + drillTitle rows are replaced · or click to browse
no data loaded
Risk Summary Auto-generated
Updates automatically with new data, new dates, or filter changes — direct flags for coaches & medical staff
Load data to generate the risk summary.
Readiness × Injury-Risk
Two-channel player status · volume fatigue vs high-speed exposure
adductor test = mock
Two separate questions, two channels. Readiness = volume fatigue (CMJ + adductor squeeze + soreness). Injury-risk = high-speed exposure (week-on-week HSR / sprint spike). A player can be green on one and red on the other — a single score hides that. Tap i for method, thresholds and references.
Readiness × Injury-Risk — how to read this

Why two channels instead of one score

Recent evidence separates two things a single "load" score blends. Total match volume — not high-speed running specifically — tracks the MD+2 neuromuscular drop and the adductor-strength drop (Springham 2026). Injury risk is speed-band specific: hamstring injuries are predominantly a sprint / high-speed mechanism, and the acute:chronic ratio of the 15–20 and >25 km/h bands predicts risk better than total distance (Xia 2026; Fousekis 2025). One number can't tell you whether a flagged player is fatigued from volume or exposed to a high-speed spike — and those need different actions.

Readiness channel (volume fatigue)

MarkerCapturesFlag threshold
CMJ mRSI (force plate)Neuromuscular readinessdrop > ~9%
Adductor squeeze (isometric)Groin/adductor recovery & riskdrop > ~11% or pain
Soreness (Likert)Perceived NM response≥ 3/5 (or Z > 1.2)
Thresholds are the "meaningful change" values from Table 3 of Hader & Buchheit (2026): a change only counts once it exceeds the smallest worthwhile change plus the typical error (SWC + TE). The verdict uses a confidence rule: one marker moving = monitor, two together = action. That is why the CMJ and adductor are read separately — the CMJ can say "recovered" while the adductor says "not yet".

Adductor squeeze — when to test

DayWindowReads
MD+1~24 hthe acute drop (passive, mainly starters)
MD-4 (= MD+3)~72 hwhether it recovered (full NM battery day)
MD+2 is often a day off — and that is fine. A pain-free post-match drop normally recovers within 48–72 h, so the 24 h and 72 h checks are a better recovery window than a single MD+2 test. The most recent test drives the read. A drop that persists at 72 h, or one with pain, is the flag.

Injury-risk channel (high-speed exposure)

The usable signal is the week-on-week change in high-speed running and sprint distance (Breed 2026: OR ~1.5–1.7). It is shown next to the absolute weekly metres and is low-certainty on purpose — the best multivariate hamstring model still leaves ~80% unexplained, so we steer on exposure, not a predictive score. A large rise from a low base is read with the absolute value, not as panic. Working bands: ≥ 100% = flag, 30–100% = monitor — calibrate on our own cohort.

Reading the verdicts

Each player gets two badges, each with a reason. "Action" = multiple markers crossed threshold; "monitor" = one did; "clean" = none. Treat a readiness flag with same-day session-content changes (reduce neuromuscular load); treat an injury-risk flag with exposure management — not a generic "reduce load".

Data sources

GPS (StatSports, weekly HSR & sprint), force-plate CMJ and daily wellness/soreness are the club's real data real. The adductor squeeze is mock data in this build demo — swap in the real isometric-adductor test once it is logged on MD+1 / MD-4.
References. Springham 2026 (JSCR) · Xia 2026 (Front Public Health) · Fousekis 2025 (Medicina) · Breed 2025 (Sports Med Open) · Hader & Buchheit 2026 (SPSR #307, Table 3) · Buchheit & Hader 2025 (SPSR #258). Working thresholds are defaults to be calibrated in-house.
Complaint Burden by Body Region
Where the squad's self-reported load of complaints actually sits — with an honest confidence interval
loading…
Research link — Shrier, Impellizzeri, Chandran, Williams, Shaw & Steele, Sports Medicine, 2 July 2026 (doi 10.1007/s40279-026-02486-5). The standard formula for injury-rate confidence intervals assumes independent Poisson events. When the same player reports repeatedly, that assumption breaks and the interval comes out artificially narrow — and for burden (time or points lost rather than event counts) it does not hold at all. The fix is a cluster bootstrap that resamples players, not observations.
Body region Incidence
/1000 player-days
Severity
mean pain 1–5
Recurrence
episodes / player
Burden
pain points /100 days
P(heaviest)
share of resamples
95% interval — standard vs cluster bootstrap CI
width
point estimate (burden) standard 95% CI cluster-bootstrap 95% CI red = interval ≥10% wider once clustering is accounted for P(heaviest) = share of the 10,000 resamples in which that region tops the table

What this panel answers

Two questions the squad-level view could not answer before: where does the complaint load actually sit, and how sure are we of that ranking. Burden is decomposed the way injury epidemiology decomposes it — burden = incidence × severity — so you can see whether a region is heavy because it keeps coming back or because it hurts more when it does.

Definitions

Exposure — one player-day counts when that player submitted a morning check-in.
Episode — a run of complaint days for the same player and region; a new episode starts after ≥3 complaint-free days.
Incidence — episodes per 1000 player-days.
Severity — mean reported pain score (1–5) summed over an episode, divided by the number of episodes.
Recurrence — episodes per affected player: 4.3 means the average player who reports that region reports it in four separate episodes.
Burden — total pain points per 100 player-days. It equals incidence × severity ÷ 10, so the two columns to its left fully explain it.

The two intervals

The thin grey line is the textbook interval, SE(log IR) ≈ 1/√(events). The thick coloured line resamples the 27 players with replacement 10,000 times and takes the 2.5th and 97.5th percentile. Where complaints are spread across nearly the whole squad the two intervals almost coincide — the standard formula happens to get away with it. Where the load is concentrated in a handful of players the honest interval is materially wider. That is exactly where you are tempted to act ("we have a lower-back problem"), and exactly where the textbook formula gives you too much certainty.

How to read the ranking

P(heaviest) comes out of the same 10,000 resamples: for every resampled squad the regions are re-ranked, and the column reports how often each region ends up on top. It costs nothing extra to compute and it turns "the intervals overlap" from a caveat into a number — a region leading the table in 30% of resamples is not meaningfully ahead of the one behind it. Overlapping intervals mean no ranking. Read the region column together with the number of players behind it and the share carried by the top three — a high burden from three players is a player problem, not a region problem.

Data sources & limitations

Morning check-in wellness (wellness.csv) and the pain body map (wellness_pain.csv) — the club's real data. Check-in names are resolved through the same squad name map the Wellness/RPE module uses, so free-text spelling variants count as one player. Three honest caveats. (1) This is self-reported morning pain, not registered time loss; the calculation follows Shrier et al. but the outcome measure is a complaint proxy, so it is not comparable to published injury-burden figures. (2) The denominator is check-in days, so a player who stops submitting drops out of the denominator — which can bias precisely when someone is injured. (3) In this dataset almost every episode is a single day, so episode duration carries no information and severity is driven by the pain score alone. Fix (1) and (3) by logging time loss per complaint; the panel will then report true burden without changing its logic.
Date range
Players
Position
Risk threshold
What you see Five squad-level KPIs summarising the selected window: number of high-risk players, mean ACWR, average step-balance asymmetry, mean Eccentric Load (GPS), and the count of load spikes ≥120%.
How to use it Use this row as a daily heads-up. Scan it first to see whether the squad as a whole is in the optimal training band, then drill down into the visuals below for player-specific detail.
How to interpret High-risk players > 0 or load spikes ≥ 1 means at least one athlete needs follow-up. Mean ACWR outside 0.8–1.3 signals squad-wide under- or over-loading. Mean asymmetry > 5% is a team-level red flag.
Methodology & Formulas
Click to expand the calculation logic used throughout this dashboard
Eccentric Load Trend — Team
Daily mean Eccentric Load (Dynamic Load method) across the squad — excludes "Entire Session"
Ecc Load (DL) — solid
7-day rolling avg (DL) — dashed
What you see Daily team-mean Eccentric Load (Dynamic Load method) shown as a solid orange line, with the 7-day rolling average overlaid as a dashed navy line to smooth out day-to-day noise.
How to use it Track squad workload over time. Watch the gap between the solid daily line and the dashed rolling line: large positive gaps = sudden spike, large negative gaps = unloading.
How to interpret A steep upward trend day-on-day suggests cumulative fatigue building. A flat or declining curve before a match is normal taper; an unintended decline mid-week may indicate under-loading.
ACWR Distribution
Latest 7d:28d ratio for every player — sorted high → low. <0.8 Underload · 0.8–1.3 Optimal · 1.3–1.5 High · >1.5 🔴 Very High Risk
What you see Every player in the squad with a valid ACWR, sorted from highest at the top to lowest at the bottom. Background bands and bar colours mark the four risk zones: amber Underload, green Optimal, orange High, red Very High.
How to use it Top of the list = first to address. Players with red bars (>1.5) need immediate load reduction; amber bars (<0.8) need a top-up session to keep fitness from dropping.
How to interpret <0.8 = Underload (fitness loss risk) · 0.8–1.3 = Optimal training zone · 1.3–1.5 = High (monitor closely) · >1.5 = 🔴 Very High Risk (acute overload, elevated injury risk).
Eccentric Load per Player
Mean per session over the selected window — both methods stacked side-by-side
Ecc Load (GPS)
Ecc Load (DL)
What you see Per-player mean Eccentric Load over the selected window — the GPS method (navy) and Dynamic Load method (orange) shown side-by-side per player.
How to use it Compare load between players to spot outliers. Large divergence between the two methods for the same player is worth investigating — it often indicates an unusual movement profile.
How to interpret Tall bars = consistently high eccentric work over the window. Players sitting well above the squad median are accumulating the most braking / decelerating stress and should be monitored for hamstring & hip-flexor freshness.
Dynamic Load Breakdown
Anterior · Lateral · Vertical — mean per player (excl. Entire Session)
Anterior (sprint/brake)
Lateral (COD)
Vertical (impact)
What you see Stacked bars showing the per-player mean Dynamic Load split into its three movement axes: Anterior (sprint & braking), Lateral (change of direction), and Vertical (impact / landing).
How to use it Use the stack composition — not just total height — to understand what kind of stress each player is absorbing. Compare the same player across days/weeks to detect a shift in movement profile.
How to interpret High Anterior → watch hamstrings & hip flexors. High Lateral → monitor adductors & lateral hip. High Vertical → check knee/ankle and jump readiness. A balanced stack is generally healthy.
Asymmetric Overload Scatter — Ecc Load (DL) × Step Balance
One dot = one player's latest session. Each dot is labelled with the player's shirt number and coloured by Risk Level. Hover for full details.
What you see Each dot is one player's latest session in the selected window. X-axis = Eccentric Load (DL). Y-axis = Step Balance asymmetry %. The number on the dot is the player's shirt number; the dot colour is the player's Risk Level for that session.
How to use it Focus on the top-right quadrant (red shading): high load combined with high asymmetry. The dashed lines mark the 5% (monitor) and 10% (elevated) asymmetry thresholds. Hover any dot for player name, shirt number, exact Ecc Load, Step Balance, and Risk Level.
How to interpret Red dots = Extreme risk; orange = High; amber = Medium; green = Low. Top-right combinations (high load + high asymmetry) on a red/orange dot are the highest-priority cases — flag for medical review.
Risk Heatmap — Player × Date
Combined Risk Score per player per session date — green = safe, red = extreme
<30 Low
30–50 Medium
50–70 High
>70 Extreme
What you see A grid of every player (rows) against every session date in the window (columns). Each cell is coloured by the Combined Risk Score (0–100): green = low, yellow = medium, orange = high, red = extreme.
How to use it Scan rows to spot players with a streak of orange/red cells (sustained risk). Scan columns to spot dates where the whole squad spiked. Empty cells = no session that day.
How to interpret Isolated orange/red cells are usually fine — a single demanding session. Two or more consecutive high cells, or any extreme (red) cell, warrants a load-reduction plan and a conversation with medical staff.
Eccentric Load Table
Latest session per player with both methods · % of personal max · click headers to sort
Player Position Date Ecc Load (GPS) /min Ecc Load (DL) /min % Max GPS % Max DL
What you see One row per player, showing the most recent session's Eccentric Load via both methods (GPS & DL), per-minute intensities, and the result expressed as a % of that player's own all-time max.
How to use it Click any column header to sort. The /min columns control for session length, and the % Max columns normalise across players who train at very different absolute levels.
How to interpret % Max ≥ 100 means the player just produced their personal-best load — flag for follow-up. Per-minute values much higher than the squad median signal an unusually intense session for that player.
Risk Indicator Table
ACWR · Load Spike % · Step Balance · combined risk level — sortable
Player Position ACWR Acute (7d) Chronic (28d) Spike % Step Balance Asym Idx Risk Score Level
What you see The full risk picture per player on their latest session: ACWR, the underlying Acute (7d) & Chronic (28d) means, today's load Spike %, Step Balance, the Asymmetry Load Index, and a final 0–100 Risk Score plus its Level (Low → Extreme).
How to use it Sort by Risk Score (descending) to put the highest-risk players at the top. Cross-check why the score is high by reading across the row — is it the ACWR, the Spike, the Asymmetry, or all three?
How to interpret Risk Score <30 = low (green), 30–50 = medium (amber — monitor), 50–70 = high (orange — modify load), >70 = extreme (red — flag for medical review). ACWR >1.5 or Spike >120% are individual red flags even at lower combined scores.
Trend Table
Linear regression slope of Ecc Load (GPS) over the selected window — direction & progression score
Player Position Sessions Mean Ecc Load Slope/day Progression score Trend status
What you see For each player, a linear-regression trend on Eccentric Load (GPS) within the selected window: number of sessions, mean load, slope per day, a normalised Progression Score (% change per day), and a Trend Status label.
How to use it Sort by Progression Score to find the players ramping up the fastest (top) or unloading the most (bottom). Players marked Insufficient data have fewer than 3 sessions in the window — extend the date range to evaluate them.
How to interpret Rising = load trending up (planned in build-up phases, risky if unintended). Plateau = stable load (typically ideal mid-season). Decreasing = unloading (good before a match, concerning otherwise). Combine with the Risk Indicator Table to decide on action.
Interpretation Guide
How to read the metrics — for coaches, performance & medical staff
Pattern What it means Action
High Dec + high DL AnteriorHeavy braking / sprint-stop loadWatch hamstring & hip-flexor freshness
High DL LateralChange-of-direction stressMonitor adductors & lateral hip
High DL VerticalImpact / landing loadMonitor knee & ankle, jump readiness
Step Balance > 5%Asymmetry — possible compensationMovement screen, single-leg testing
ACWR > 1.5Acute spike vs chronic baselineReduce load 1–2 sessions, taper
ACWR < 0.8Under-loading — fitness loss riskTop-up conditioning
High Ecc Load + high asymmetryCombined-risk warning🚨 Flag for medical review