Reference simulator
Banister Form Band Simulator
This draws three training lines from your daily load. CTL is your chronic load, which reads as fitness. ATL is your acute load, which reads as fatigue. TSB is fitness minus fatigue, which reads as form, or how fresh you are. Paste 42 or more days of daily load and see the curve.
The formula
Each line is an exponentially weighted moving average of your daily load. That means recent days count more than old ones. The two lines use different time spans, so one moves slow and one moves fast.
α_CTL = 1 − e^(−1/42) ≈ 0.0235
α_ATL = 1 − e^(−1/7) ≈ 0.1331
CTL[t] = CTL[t-1] × (1 − α_CTL) + load[t] × α_CTL
ATL[t] = ATL[t-1] × (1 − α_ATL) + load[t] × α_ATL
TSB[t] = CTL[t] − ATL[t] Reading the zones
| TSB | Zone | Meaning |
|---|---|---|
| > +15 | Detraining | Too fresh — CTL has been dropping |
| +5 to +15 | Peaking | Race-ready, PR territory |
| −10 to +5 | Productive | Most training happens here |
| −20 to −10 | Dig-in | Intentional overreach, sustainable 2–4 weeks |
| < −20 | Overreached | Deload before symptoms reach you |
About this simulator
The lines start cold, with CTL and ATL both at zero on day one. So the first three weeks are a warmup before the numbers settle. Feed it at least 42 days for a useful CTL. 90 days reads much cleaner.
Kinoku's Form Band uses this same math. The one change in the app: the lines start from your real training history, not from zero. The math is otherwise the same.
Full story
The Banister article in the Learn section goes deeper. It covers why the model works, how to read five common curve shapes, and how it differs from newer models.