Kinoku
Menu

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.

Any unit works: TSS, TRIMP, session-RPE × duration, or tonnage. The lines have no unit inside.

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

TSBZoneMeaning
> +15DetrainingToo fresh — CTL has been dropping
+5 to +15PeakingRace-ready, PR territory
−10 to +5ProductiveMost training happens here
−20 to −10Dig-inIntentional overreach, sustainable 2–4 weeks
< −20OverreachedDeload 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.