Friday, December 3, 2021

Modelling Fitness, Fatigue, & Form

Using Banister’s model^ to predict how Fitness, Fatigue and Form will change over time. To generate the above graph, a training schedule was defined consisting of a ride generating a Load of 1 (in arbitrary units) to be ridden for 200 days and then training is stopped. At first, Fatigue dominates Fitness and Form (the ability to perform on a ride) falls. Then, Fitness dominates Fatigue and Form increases. When training stops, because Fatigue decreases faster than Fitness, Form increases. This is the reason that the taper period right before an event is so common in training plans.


In my last post I wondered if I had been training too hard. One way to avoid that would be for me to monitor my training load (hereafter Load) to see if it is increasing, decreasing, or staying the same. If treated with full rigor, measuring that Load would be an impossibly complex task, so we all find simplifications for estimating Load that are better than nothing, or over time, better than we were doing before. I have, in fact, gone the other way, partially out of necessity (the hills where I live make it harder to ride at a fixed intensity or to estimate the overall intensity of a ride) and partly out of an attempt to simplify my life (when my heart meter broke, I didn’t bother to replace it.) Now and again, however, I regret that and wonder if it would be worth the effort to better track my rides. At present, the only way I am estimating my Load is to record the minutes of duration of each ride. Even that is better than nothing, but when I wonder if the increasing hilliness of my new neighborhood is throwing off my estimates it makes me want to do more. The first step in doing more would be to acquire a power meter or a heart rate monitor. That device, along with some basic software would allow me to characterize a ride in terms of minutes in Zone 1, minutes in Zone 2, etc which is better than just total minutes. If I had been doing that over the last couple of years and had noticed that my total minutes of riding stayed the same after I moved but that the zone distribution moved to more time in higher zones, that would already tell me I had increased my Load. To make that quantitative rather than qualitative, I would need to estimate the relative Load produced by different zones, something I have blogged about a fair bit and thus feel like I know how to do. The purpose of this post is to discuss the next step after that, to model the competing impacts of my training load on Fitness and Fatigue and how they play out over Time.

The inspiration for this post came while I was preparing my post on Sweet Spot Training. I was listening to a podcast by Frank Overton, the person who coined the term Sweet Spot, and he talked about how motivating it was to use modelling software to track the accumulation of fitness resulting from his training. I am very motivated by tracking my training and I found the prospect of incorporating this new kind of tracking very tempting. In order to figure out how I might do that I began exploring the training models that are used to do so, and thus today’s post.

The reason training increases performance (Form) is because the Fatigue generated by training goes away faster than the Fitness generated by that same training. That is the basis of the training models I will be talking about. It is more complicated than that; there are different kinds of Fatigue and different stages in the recovery from Fatigue and the Fitness generated by training doesn’t appear immediately but only over time, thus the truism that you don’t get stronger during training but during the rest after training. The models I will be talking about simplify things by ignoring some of that complexity.

I am aware of two models for estimating Fatigue, Fitness, and Form, the model developed by Dr. Andy Coggan (available as part of the widely used Training Peaks commercial software package) and that developed by Dr. Eric Banister^. Both of these models do two things. First, they estimate the Load generated by a ride based on how much Time during that ride the athlete spends at different power output levels or heart rates (respectively) and then assigns to each of those an Intensity score. Higher power or heart rate corresponds to higher Intensity but not necessarily in a linear  way; a doubling of power or heart rate can result in a much greater than doubling of Intensity. Because I have blogged about the calculation of Intensity a lot, I won’t discuss it in this post. Rather, I will assume that given a power output level or heart rate an Intensity can be calculated. As just one example of how to do that, I offer the following equation* for calculating the Intensity of some of my rides from the Heart Rate (HR) measured on those rides:

Intensity = .000428 x e(.0656 x HR).

Load corresponds pretty directly to how tired the athlete is after a ride. If an athlete knows the  Intensity of a ride, converting that to Load is straightforward:

Load = Intensity x Time

For a ride at constant Intensity, it really is that simple. For a realistic ride during which Intensity varies, it is still pretty simple but there are a couple of different ways of making this calculation. The good news is that they all give pretty similar results, it is mostly about which is the most convenient. For example, back when I was tracking my rides with a Garmin heart rate monitor, a Garmin bike computer, and Garmin software, I could have taken the amount of time spent in each heart rate training zone provided by that software, use an average Intensity for each zone, and sum up the five Intensity x Time values to get a total Load for the ride. But how does Load relate to Form, Fitness, and Fatigue? Both Fitness and Fatigue result from the accumulation of Load over many days of training on the one hand and the reduction of both Fitness and Fatigue that occurs during the time after that training. In other words, Load pushes both Fitness and Fatigue up, Time pulls both Fitness and Fatigue down. Expressed as equations, the effects of Load and Time are:

Fitness = ( Fx(Load on Day 1, Time since Day 1) + Fx(Load  on Day 2, Time since Day 2) + … +
      Fx(Load on Day N, Time since Day N) )

Fatigue = ( Fy(Load on Day 1, Time since Day 1) + Fy(Load  on Day 2, Time since Day 2) + … +
      Fy(Load on Day N, Time since Day N) )

...where Fx() and Fy() are functions that reduce the impacts of Load on Fitness and Fatigue for older rides; that epic ride I did ten years ago isn’t doing me much good anymore. Fx() is slower than Fy() such that an athlete loses Fatigue faster than they lose Fitness. As a result, training eventually produces a net increase in performance.

Finally, the following equation is used to model expected performance (Form):

Form = Fitness - Fatigue

Note that Intensity, Load, Fatigue, Fitness, and Form have no natural units. However, due to the above equation, the units for Form, Fitness, and Fatigue all need to be the same. What is commonly done is to first assign some constant to relate Load to Fitness and Fatigue. In the Coggan model, one unit of Load is defined as producing one unit of both Fatigue and Fitness. In the Banister model, one unit of Load produces one unit of Fitness, but two units of Fatigue. In both models, one unit of Form, Fitness and Fatigue are defined to be equal.

The interesting part of both models is how Fitness and Fatigue decrease over time, the functions Fx(Load, Time) and Fy(Load, Time) in the above equations. I confess that I do not understand the Coggan model. Using equations available on the Web, I get nonsensical outputs. Thus, from here on out, I will focus on the Banister model. In this model, both Fitness and Fatigue decrease exponentially with Time as per this equation:

Fitness = M1 x Load x Time x e(-Time / T1)

Fatigue = M2 x Load x Time x e(-Time / T2)

...where:

M1 is the relative iMpact of a given Load on Fitness. By default, this is set to 1.

M2 is the relative iMpact of a given Load on Fatigue. By default, this is set to 2; the initial impact of a ride on Fatigue is assumed to be twice that on Fitness.

T1 is the Time in days it takes for the impact of a ride on Fitness to decrease to 37% of its initial impact. By default, this is set to 45 days.

T2 is the Time in days it takes for the impact of a ride on Fatigue to decrease to 37% of its initial impact. By default, this is set to 15 days.

Time is the time in days since the ride.

Let’s see what this model predicts for some hypothetical scenarios. The figure at the top of this post describes a very unrealistic scenario the point of which is to illustrate the main features of the model. In this scenario, a ride with a Load set to an (arbitrary) value of 1 is done every day for 200 days and then training  is stopped. The Banister Model correctly reproduces the premise behind periodized training: training increases both Fitness and Fatigue, and at first, performance (Form) decreases due to Fatigue, but over time, the Fitness dominates and Form increases. If training stops, at first Form increases because Fatigue is lost faster than Fitness. This is the rationalization for tapering (reducing training) before an event. So far, the model seems good, but let’s apply it to some more realistic scenarios. I have selected the training plans offered by Coach John Hughes to prepare for a first 200 kilometer long ride and then to allow repeating that ride every month. I have modified these plans to scale them down for a 100 kilometer (Metric Century) ride.

I have added a fourth curve to the above graph, one showing the Load generated by the training plan. The three biggest peaks on the graph are the three long training rides, each increasingly longer, used to get ready for the Metric Century. The graph stops the day before that event. We can see that each of the long rides produces a peak of both Fitness and Fatigue but because the increase in Fatigue is greater, Form decreases in the days after that hard ride. However, it increases thereafter because Fatigue goes away faster than Fitness. Training tapers (decreases) just before the Metric Century and we see that Fitness levels off but that Fatigue falls and as a result the all-important Form continues to increase, reaching a maximum just before the event. This is exactly what is expected for a well designed training plan, and again, the model seems to capture it fairly accurately.

The final curve is for the scenario I so laboriously derived on this blog some time ago, a training plan to maintain the Form to be able to ride a Metric Century every month:


In this graph I added trendlines in order to emphasize that this is a maintenance schedule designed to keep Form relatively constant between the monthly Metric Centuries, those Metric Centuries being not only the goal of but also a critical part of the training plan. I plotted three monthly cycles, starting the day after a Metric Century and ending two days after the third Metric Century. Once again, the model seems to reconstruct the intent of the training program fairly accurately.

In summary, the Banister model (at least) seems pretty good. Of course, it does not do everything. For one thing, it allows you to input training schedules that no sane person would design and that nobody but Superman could follow. There is no limit on the amount of Load that can be completed, the amount Fatigue that can be tolerated, nor the amount of Fitness that will theoretically result from such a suicide schedule. Similarly, it does not model the notion of working up to a goal, like the 20% biweekly increases in mileage I use to work up to a Metric Century. According to this model, an athlete can just jump right into the longest training ride, repeating that until enough fitness has been built up. I see these as reasonable and expected limits as to what the model was designed to do. I think what Banister had in mind when he created the model is that it is up to the coach to plan a good training schedule and that the model is just one more tool to be used judiciously by the coach in service to that effort. Finally, I assume that part of a coach using this model would be adjusting the parameters to fit the individual athlete.

I would like to mention one additional limitation of this model, a limitation that impacts this whole way of thinking about training. This limitation is that the model defines Fitness as a single thing when it is obvious that it is not. The world of road racing provides a clear example of this. Road racers can be classified as climbers, sprinters, time trialists, etc., each needing to build a different collection of different kinds of Fitness. Coach Joe Friel in his classic book “The Cyclist’s Training Bible” describes three basic and three advanced kinds of fitness, each one needing its own training plan to be developed. These are Endurance, Force, and Speed and then Muscular Endurance, Anaerobic Endurance, and Power, respectively. And all of this is just within the narrow specialty of Road Racing. Does this negate everything above? I hope not! What I hope and believe is that the approach I am outlining here applies similarly to all these different kinds of Fitness, and that in fact they may be interchangeable. That is, a coach builds a training plan to address all the different kinds of Fitness a particular cyclist needs to meet their goals but common to them all is the tradeoff between Fitness (of any kind) and Fatigue described by me in this post and modelled by Banister.

I would like to end by explaining how I imagine this tool could be useful. Although it is far from clear I will ever do this myself, I will nonetheless use myself as an example to explain how I think this might work. Right now, I am only tracking ride time. This completely ignores the possibility that one 60 minute ride might be much harder (generating both more Fitness and more Fatigue) than another. If I were to purchase a heart rate monitor and/or a power meter, I could calculate the Intensity of those rides allowing me to account for such differences; I might find that one 60 minute ride generated twice the Load as another, for example. What would still be missing is the effect of Time. Have I rested long enough to recover from a hard ride? Have I rested too long so that I have lost the fitness that ride gave me? The value of Banister’s model would be to help me answer such questions. Will I ever do this? I have no idea, stay tuned.


^ “Modeling Elite Athletic Performance” by Banister, Eric W. in “Physiological Testing of the High-Performance Athlete, Second Edition” 1982, Published by Human Kinetics Publishers (UK) Ltd. Rawdon, England. ISBN 0-87322-300-4

* I derived this equation by using Google Sheets to plot the Intensity values for Hughes TRIMP, described in my most recent post on intensity and then to fit them to an exponential function. This is the equation Google Sheets fit to the plot.