Science · Training load & fitness

Banister impulse-response vs Coggan PMC

How Koyaro’s primary athlete-facing PMC (CTL/ATL/TSB) relates to the optional Banister two-component impulse-response performance model used for research-grade coach / Phase-4 projections — and when athlete-specific τ may be fitted.

Last reviewed · Part of Koyaro’s public science knowledge base — the same method notes the coaching engine cites.

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 PMCBanister IR
InputsDaily sport load (bike TSS / run-load / swim-load)Same per-sport daily load
OutputsCTL, ATL, TSB (form)g, h, p (performance)
Time constantsFixed 42 d / 7 d EWMAτ₁ / τ₂ (defaults 42 / 7; may be fitted)
GainsBuilt into EWMA αExplicit k₁, k₂ + baseline p₀
Primary UXYes — /me/pmc (default bike; ?sport=), plan projectionNo — /me/banister, /me/banister/sports, plan banister-projection
Cross-sportThree signatures — never one triathlon CTLSame; α_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 performance

Population 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):

GateDefault
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.

Ready when there’s a seat.

Join the waitlist for closed beta. We’ll invite you when there’s room — then import your history and start a living plan.