Athlete summary
Your Performance Management Chart shows fitness (CTL), fatigue (ATL), and form (TSB) from daily training load (usually bike TSS). That Coggan-style PMC is what Koyaro uses for taper planning, readiness form, and the athlete UI (bike signature by default).
Multi-sport: run and swim keep separate Banister / PMC signatures (w_bike, w_run, w_swim). Do not treat a summed CTL as triathlon fitness. Optional bike→run transfer α defaults to 0; swim transfer α is always 0 in v1. Athlete-fit α / sport-specific τ is (phase 2b). See and.
Separately, coaches and the Phase-4 AI can request a Banister projection: the same training load drives two exponential components (positive / negative training effect), then a weighted difference estimates performance (for example threshold watts), not just “form” in TSS units.
TSB is still the primary form number. Banister is opt-in research tooling.
What each model answers
| Coggan PMC | Banister IR | |
|---|---|---|
| Inputs | Daily sport load (bike TSS / run-load / swim-load) | Same per-sport daily load |
| Outputs | CTL, ATL, TSB (form) | g, h, p (performance) |
| Time constants | Fixed 42 d / 7 d EWMA | τ₁ / τ₂ (defaults 42 / 7; may be fitted) |
| Gains | Built into EWMA α | Explicit k₁, k₂ + baseline p₀ |
| Primary UX | Yes — /me/pmc (default bike; ?sport=), plan projection | No — /me/banister, /me/banister/sports, plan banister-projection |
| Cross-sport | Three signatures — never one triathlon CTL | Same; α_bike→run default 0; swim α = 0 |
Coggan’s EWMA is a practical simplification of impulse-response thinking: it tracks fitness and fatigue on the TSS scale and defines form as yesterday’s CTL − ATL. Banister’s original systems model maps load → performance via gains that convert arbitrary load units into the performance metric you fit against (FTP tests in Koyaro).
Banister equations (engine)
g(n) = e^(−1/τ₁) · g(n−1) + w(n) # fitness / positive effect
h(n) = e^(−1/τ₂) · h(n−1) + w(n) # fatigue / negative effect
p(n) = p₀ + k₁ · g(n) − k₂ · h(n) # modelled performancePopulation defaults: τ₁ = 42 d, τ₂ = 7 d, k₁ = k₂ = 1, p₀ = 0 (illustrative dynamics until a fit is accepted).
Athlete-specific fitting & uncertainty
Fitting τ and gains requires enough dated performance observations (FTP tests on the load calendar):
| Gate | Default |
|---|---|
| Min observations | ≥ 5 |
| Min span | ≥ 42 days |
| R² floor | ≥ 0.50 |
| Constraints | τ₁ > τ₂ + 7 d; k₁ > 0; k₂ > 0 |
Rejected fits fall back to population defaults and always surface uncertainty_note + rejection_reasons. Accepted fits still report RMSE / R² — treat projections as research-grade estimates, not guarantees.
Literature
- Banister, Calvert, Savage & Bach — systems model of athletic training (1975).
- Calvert, Banister, Savage & Bach — impulse-response / fitness–fatigue framework (1976).
- Coggan — Performance Manager / CTL–ATL–TSB as the practical PMC used in coaching software (TrainingPeaks and successors).
- Millet et al. (2002) — limited bike→run transfer; swim highly specific (doi 10.1055/s-2002-19276).
- Tanaka (1994) — limited VO2 cross-training transfer; swim weakest.