How CTL is really calculated?



frost

Member
Oct 25, 2007
414
6
18
As a new TrainingPeaks WKO+ user I came to wonder how CTL is calculated? I had assumed it just to be a plain average TSS/day for period of CTL constant but obviously it is quite far from it.

I have total of about 3500 TSS for last 42 days and CTL constant 42 and I was aiming to build CTL to ~85 but to my surprise it is only a bit over 60.
I had a 7 weeks break before starting to use WKO because of vacation and business so for the starting value I put only 10 but in my mind it should not affect if constant is 42 days and were looking 6 weeks back.

Where does my thinking go wrong?
 
frost said:
As a new TrainingPeaks WKO+ user I came to wonder how CTL is calculated? I had assumed it just to be a plain average TSS/day for period of CTL constant but obviously it is quite far from it.

I have total of about 3500 TSS for last 42 days and CTL constant 42 and I was aiming to build CTL to ~85 but to my surprise it is only a bit over 60.
I had a 7 weeks break before starting to use WKO because of vacation and business so for the starting value I put only 10 but in my mind it should not affect if constant is 42 days and were looking 6 weeks back.

Where does my thinking go wrong?
EWMA or ...

http://www.cyclingpeakssoftware.com/power411/performancemanagerscience.asp
 
frost said:
As a new TrainingPeaks WKO+ user I came to wonder how CTL is calculated?
EWMA is correct, but a little abstract. The easiest way to calculate it is:
newCTL=oldCTL*(1-somethingsmall)+TSS/something

The "somethings" are determined by the CTL constant.
 
patrick_ said:
EWMA is correct, but a little abstract. The easiest way to calculate it is:
newCTL=oldCTL*(1-somethingsmall)+TSS/something

The "somethings" are determined by the CTL constant.
Yeah, but one day CTL change based on current CTL and TSS for the day is a bit closer to:

(TSS-CTL)*something small

with something small ~0.024 for the default 42 day time constant

That's kinda handy for rough CTL predictions based on daily load. IOW, if your CTL is currently at 100 and you take a total rest day your CTL will drop roughly 2.4 points. If your CTL is 100 and you do a 150 TSS ride your CTL will increase by roughly 1.2 (half the delta, half the change) points given the default 42 day constant. Sure makes it easy to see why CTL drops faster than it climbs, it's hard to do regular workouts at twice your CTL but easy to skip a day and get the big drop.

-Dave
 
Thanks a lot for everyone! So in fact constant of 42 doesn't only mean that exercises for past 6 weeks affect the CTL but the starting value has a huge effect.

I made a little testing and calculating and you'll get pretty close to "somethingsmall" with 1/(no_of_days - 10). Probably this is all explained in detail somewhere but unfortunately work right now is taking way too much valuable training time so forgive the stupid questions for a beginner.
 
frost said:
Thanks a lot for everyone! So in fact constant of 42 doesn't only mean that exercises for past 6 weeks affect the CTL but the starting value has a huge effect.

I made a little testing and calculating and you'll get pretty close to "somethingsmall" with 1/(no_of_days - 10). Probably this is all explained in detail somewhere but unfortunately work right now is taking way too much valuable training time so forgive the stupid questions for a beginner.
if you wanna play in Excel, the simplest (and quite accurate) way is:

CTL_n = CTL_n-1 + (TSS_n - CTL_n-1)/(tc+0.5)

CTL_n = current day's CTL (after training)
TSS_n = current day's training load
CTL_n-1 = yesterday's CTL
tc = CTL time constant in days

I'd also encourage you to read thru that info in the link I posted. And re-read it. And re-read it :D ...
 
i had a similar quesiton a few months ago:

http://www.cyclingforums.com/t454327.html

-Mike




frost said:
As a new TrainingPeaks WKO+ user I came to wonder how CTL is calculated? I had assumed it just to be a plain average TSS/day for period of CTL constant but obviously it is quite far from it.

I have total of about 3500 TSS for last 42 days and CTL constant 42 and I was aiming to build CTL to ~85 but to my surprise it is only a bit over 60.
I had a 7 weeks break before starting to use WKO because of vacation and business so for the starting value I put only 10 but in my mind it should not affect if constant is 42 days and were looking 6 weeks back.

Where does my thinking go wrong?
 
rmur17 said:
if you wanna play in Excel, the simplest (and quite accurate) way is:

CTL_n = CTL_n-1 + (TSS_n - CTL_n-1)/(tc+0.5)

CTL_n = current day's CTL (after training)
TSS_n = current day's training load
CTL_n-1 = yesterday's CTL
tc = CTL time constant in days
FWIW, the formula in the spreadsheet I use is:
todaysTSS*(1-EXP(-1/ctl_const))+yesterdaysCTL*EXP(-1/ctl_const)
 
Animator said:
FWIW, the formula in the spreadsheet I use is:
todaysTSS*(1-EXP(-1/ctl_const))+yesterdaysCTL*EXP(-1/ctl_const)
think of all the computing power going to waste there. I was reared on 4-bit processors :D ...
 
rmur17 said:
if you wanna play in Excel, the simplest (and quite accurate) way is:

CTL_n = CTL_n-1 + (TSS_n - CTL_n-1)/(tc+0.5)

CTL_n = current day's CTL (after training)
TSS_n = current day's training load
CTL_n-1 = yesterday's CTL
tc = CTL time constant in days

I'd also encourage you to read thru that info in the link I posted. And re-read it. And re-read it :D ...
Yes, definately. I got the answer to the original question but much more even with a quick look opened my eyes to understand (well it is a strong word here but let's say I got a small grip of the idea) the meaning of mathematically modelling training.

Even I was somewhat familiar with the basic concepts from fitness-fatique/dual-factor theories used in gym training I had never before bothered to look under the hood.

Very interesting also to see the practical application, how my fitness developes simply by raising CTL from practically zero (after a 7 weeks break).
 
rmur17 said:
if you wanna play in Excel, the simplest (and quite accurate) way is:

CTL_n = CTL_n-1 + (TSS_n - CTL_n-1)/(tc+0.5)

CTL_n = current day's CTL (after training)
TSS_n = current day's training load
CTL_n-1 = yesterday's CTL
tc = CTL time constant in days

I'd also encourage you to read thru that info in the link I posted. And re-read it. And re-read it :D ...
I think this version, also quite simple, is a better match for PMC:

CTL(n) = CTL(n-1)(1-1/Tc) + TSS(n)/Tc

Differences are small anyway.
 
amartinez said:
...Differences are small anyway.
Differences are small for a single day, but get quite a bit larger if you look out say a week or two while planning a taper or do a forward looking month or more to plan future training.

The exponential form is easy to code into a spreadsheet and allows you to look out days, weeks or months if you do that sort of planning.

-Dave
 
daveryanwyoming said:
Differences are small for a single day, but get quite a bit larger if you look out say a week or two while planning a taper or do a forward looking month or more to plan future training.

The exponential form is easy to code into a spreadsheet and allows you to look out days, weeks or months if you do that sort of planning.

-Dave
Dave, I think the problem is which is the "gold standard": if you want to match CTL values as calculated in WKO+ (v2.2-B91), the formula I've posted do so exactly (well, up to 10 decimals places at least).

The exponential form is more in-line with the original Banister equations but, that wouldn't be "CTL" (¿TM?), IHMO.