diff --git a/plots/line-training-load-pmc/implementations/python/.gitkeep b/plots/line-training-load-pmc/implementations/python/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plots/line-training-load-pmc/metadata/python/.gitkeep b/plots/line-training-load-pmc/metadata/python/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plots/line-training-load-pmc/specification.md b/plots/line-training-load-pmc/specification.md new file mode 100644 index 0000000000..e8fad51e3e --- /dev/null +++ b/plots/line-training-load-pmc/specification.md @@ -0,0 +1,31 @@ +# line-training-load-pmc: Training Load Performance Management Chart + +## Description + +A Performance Management Chart (PMC), popularized by TrainingPeaks, summarizes an endurance athlete's training history on a single shared time axis. Two exponentially-smoothed lines track Chronic Training Load (CTL, "fitness", ~42-day time constant) and Acute Training Load (ATL, "fatigue", ~7-day time constant), while a filled area or band shows Training Stress Balance (TSB, "form" = CTL − ATL) above and below a zero baseline. Daily Training Stress Score (TSS) values appear as points or thin vertical bars, giving the raw workout intensity behind the smoothed trends. The chart reveals whether an athlete is building fitness, accumulating fatigue, or freshening up (positive form) for a target event. + +## Applications + +- Coaches periodizing an athlete's season to peak fitness while managing fatigue before a key race +- Cyclists and runners deciding rest vs. overload by reading current form (TSB) against rising fitness (CTL) +- Sports scientists studying training monotony, ramp rate, and injury/overtraining risk from acute:chronic load +- Self-coached endurance athletes tracking long-term progression and taper timing across a training block + +## Data + +- `date` (datetime) - Calendar day across the training period, one row per day +- `tss` (numeric) - Daily Training Stress Score, the raw load for that day (0 on rest days) +- `ctl` (numeric) - Chronic Training Load / fitness, ~42-day exponentially weighted average of TSS +- `atl` (numeric) - Acute Training Load / fatigue, ~7-day exponentially weighted average of TSS +- `tsb` (numeric) - Training Stress Balance / form, computed as previous-day CTL minus previous-day ATL +- Size: 90-365 daily points (a typical training block or full season) +- Example: One athlete's daily TSS over a 6-12 month build, with CTL/ATL/TSB derived via standard EWMA formulas + +## Notes + +- Plot CTL and ATL as smooth lines on the primary axis (e.g. blue for fitness, purple/magenta for fatigue); CTL should look smoother and lag ATL +- Render TSB as a filled area or band relative to a zero baseline, ideally two-toned (positive form = fresh/blue, negative = fatigued/red); it may sit on a secondary axis since it oscillates around zero +- Draw daily TSS as light points or thin bars near the bottom so they read as the raw input without dominating the smoothed lines +- Keep a single shared time (date) x-axis; use a clear legend distinguishing Fitness (CTL), Fatigue (ATL), Form (TSB), and daily TSS +- A horizontal reference line at TSB = 0 helps separate "fresh/positive form" from "fatigued/negative form" +- If the library supports it, a secondary y-axis for TSB keeps it readable against the larger CTL/ATL magnitudes; otherwise scale all series onto one axis diff --git a/plots/line-training-load-pmc/specification.yaml b/plots/line-training-load-pmc/specification.yaml new file mode 100644 index 0000000000..952a2502c9 --- /dev/null +++ b/plots/line-training-load-pmc/specification.yaml @@ -0,0 +1,32 @@ +# Specification-level metadata for line-training-load-pmc +# Auto-synced to PostgreSQL on push to main + +spec_id: line-training-load-pmc +title: Training Load Performance Management Chart + +# Specification tracking +created: 2026-06-10T22:50:45Z +updated: null +issue: 8646 +suggested: MarkusNeusinger + +# Classification tags (applies to all library implementations) +# See docs/reference/tagging-system.md for detailed guidelines +tags: + plot_type: + - line + - area + - point + data_type: + - timeseries + - numeric + - continuous + domain: + - sports + - health + - general + features: + - multi + - composite + - temporal + - trend