Features

Team

Training load · ACWR

Spot who is overloaded before they get injured: from each session’s sRPE to ACWR, monotony and strain, with the maths in plain sight.

The base input is sRPE (Foster’s method): after training, the player gives their RPE from 1 to 10 and the minutes; sRPE = RPE × minutes. ACWR compares how much you loaded this week against your own average of the last month: ramp up too fast and it flags risk; load too little and it flags undertraining. It also includes a minutes × player view per match, to keep an eye on game time and squad rotation.

app.squadstats.dev/workload

Staff Training Load panel: a load-source selector (internal, external, minutes × player), a notice explaining ACWR and its 0.8–1.3 optimal zone; an average ACWR of 4.00 and a count of players in optimal, caution and intense; an advanced-load block with a weekly load of 1720, monotony and strain; and a breakdown by risk zone (undertrained, optimal, caution, intense) next to the team’s total 7-day load.
Average ACWR and players by zone at a glance, plus weekly load, monotony and strain (Foster). Every zone spells out what it means and what to do — and the panel itself warns that the ratio is a guide, not a diagnosis · demo data
Technical detail · ACWR, EWMA, monotony, strain and readiness

Rolling ACWR. acute = Σ sRPE 7 days / 7; chronic = Σ sRPE 28 days / 28; ACWR = acute / chronic. Zones (aligned with Gabbett):

ACWRZone
< 0.8Undertrained
0.8 – 1.3Optimal (sweet spot)
1.3 – 1.5Caution
> 1.5Danger

“Uncoupled” EWMA ACWR (Williams/Lazarus): weights recent days more heavily and corrects the coupling bias. EWMA(series, λ) = λ·today + (1−λ)·EWMA_yesterday, with λ_acute = 2/(7+1) = 0.25 and λ_chronic = 2/(28+1) ≈ 0.069. Both methods coexist.

Monotony and Strain (Foster), 7-day window: monotony = daily_mean / daily_sd; strain = weekly_load × monotony. Cut-offs — monotony: <1.5 low, 1.5–2.0 moderate, ≥2.0 high; strain: <4000 contained, 4000–6000 medium, ≥6000 elevated.

Readiness 0–100 (our own index): readiness = (wellness/5)×100 − [20 if ACWR>1.5 | 10 if >1.3 | 5 if <0.8] − 30 if active injury, clamped to [0,100]. Only calculated if there is wellness for today.

Honesty: rolling ACWR needs roughly 4 weeks of history before the chronic term is representative (the “running-in month problem”). It is a guide, not a diagnosis.

Try it with your real squad.

Tell us about your team and we’ll set up a demo with temporary access.