Got interested in the performance level assigned by Join which allows ‘comparing yourself to other cyclists’. This level ranges between 0 and 50, 50 only seen with ‘world class Tour de France GC contenders’. It has recommended levels for different challenges, for example for La Marmotte it recommends a range of 28 – 38. Okay, that it still out of reach for me but they have my attention with the levels. The description of how levels are calculated is vague, but in the app it does say that the ‘level is calculated on the basis of your FTP and weight’ and later ‘How fit you are is not only based on how fast you can go for one hour, but also how long you can ride your bike. That is why your performance level is based partly on your fitness’. Always fun to reverse-engineer what is under the hood and see what can be learned from it.
Join does not allow setting CTL directly, but manually one can add rides and set normalized power for that ride. It turns out that the correlation between level and fitness (CTL) is linear, but the dependency on FTP/kg is non-linear. Still not sure what original logic was used to create the levels, and when playing with the numbers there seemed to be some hysteresis, meaning that the projected level was not always exactly the same when repeatedly changing FTP/kg and CTL and returning to the original combination. With the data points from the app an analytical solution can be found, describing the surface with a normal- and cumulative normal distribution. The error between the analytical function and app value is small, but later realized I am using slightly different FTPs for indoor and outdoor to calculate CTL, which might cause a small offset compared to Join’s (iterative?) algorithm.
Below the 3D surface showing the dependency on FTP/kg and CTL. Plotted on the top view the development of one particular athlete – not me – that ramped up CTL quite rapidly (one year) and recorded FTP. Interesting to see how this cyclist was progressing on a path close to the orthogonal of the iso-level lines (steepest path up). That is of course not a law of nature and timing of the ramp-up, structure of the training and different DNA could lead to very different results. One can argue though that for this individual this is the near perfect ramp in CTL to improve performance over time as defined by the Join level. One can also derive that the orthogonal path (after the 1st data point) represents an improvement of ~0.027W/kg per point of CTL increase, or a ~2W FTP gain per point of CTL for a 75kg cyclist training efficiently. That is a lot steeper than the 0.007W/kg/CTL published by Alan Couzens (which is a different approach and does not have to be contradictory).
Key take-away for myself: have been trying to optimize training at roughly the same CTL for multiple seasons, time to accept reality that increasing volume is the only impactful way forward.