Modelling Strava Fitness and Freshness

Since my blog about Strava Fitness and Freshness has been very popular, I thought it would be interesting to demonstrate a simple model that can help you use these metrics to improve your cycling performance.

As a quick reminder, Strava’s Fitness measure is an exponentially weighted average of your daily Training Load, over the last six weeks or so. Assuming you are using a power meter, it is important to use a correctly calibrated estimate of your Functional Threshold Power (FTP) to obtain an accurate value for the Training Load of each ride. This ensures that a maximal-effort one hour ride gives a value of 100. The exponential weighting means that the benefit of a training ride decays over time, so a hard ride last week has less impact on today’s Fitness than a hard ride yesterday. In fact, if you do nothing, Fitness decays at a rate of about 2.5% per day.

Although Fitness is a time-weighted average, a simple rule of thumb is that your Fitness Score equates to your average daily Training Load over the last month or so. For example, a Fitness level of 50 is consistent with an average daily Training Load (including rest days) of 50. It may be easier to think of this in terms of a total Training Load of 350 per week, which might include a longer ride of 150, a medium ride of 100 and a couple of shorter rides with a Training Load of 50.

How to get fitter

The way to get fitter is to increase your Training Load. This can be achieved by riding at a higher intensity, increasing the duration of rides or including extra rides. But this needs to be done in a structured way in order be effective. Periodisation is an approach that has been tried and tested over the years. A four-week cycle would typically include three weekly blocks of higher training load, followed by an easier week of recovery. Strava’s Fitness score provides a measure of your progress.

Modelling Fitness and Fatigue

An exponentially weighted moving average is very easy to model, because it evolves like a Markov Process, having the following property, relating to yesterday’s value and today’s Training Load.
F_{t} = \lambda * F_{t-1}+\left ( 1-\lambda  \right )*TrainingLoad_{t}
F_{t} is Fitness or Fatigue on day t and
\lambda = exp(-1/42) \approx 0.976 for Fitness or
\lambda = exp(-1/7) \approx 0.867 for Fatigue

This is why your Fitness falls by about 2.4% and your Fatigue eases by about 13.3% after a rest day. The formula makes it straightforward to predict the impact of a training plan stretching out into the future. It is also possible to determine what Training Load is required to achieve a target level of Fitness improvement of a specific time period.

Ramping up your Fitness

The change in Fitness over the next seven days is called a weekly “ramp”. Aiming for a weekly ramp of 5 would be very ambitious. It turns out that you would need to increase your daily Training Load by 33. That is a substantial extra Training Load of 231 over the next week, particularly because Training Load automatically takes account of a rider’s FTP.

Interestingly, this increase in Training Load is the same, regardless of your starting Fitness. However, stepping up an average Training Load from 30 to 63 per day would require a doubling of work done over the next week, whereas for someone starting at 60, moving up to 93 per day would require a 54% increase in effort for the week.

In both cases, a cyclist would typically require two additional hard training rides, resulting in an accumulation of fatigue, which is picked up by Strava’s Fatigue score. This is a much shorter term moving average of your recent Training Load, over the last week or so. If we assume that you start with a Fatigue score equal to your Fitness score, an increase of 33 in daily Training Load would cause your Fatigue to rise by 21 over the week. If you managed to sustain this over the week, your Form (Fitness minus Fatigue) would fall from zero to -16. Here’s a summary of all the numbers mentioned so far.

Impact of a weekly ramp of 5 on two riders with initial Fitness of 30 and 60

Whilst it might be possible to do this for a week, the regime would be very hard to sustain over a three-week block, particularly because you would be going into the second week with significant accumulated fatigue. Training sessions and race performance tend to be compromised when Form drops below -20. Furthermore, if you have increased your Fitness by 5 over a week, you will need to increase Training Load by another 231 for the following week to continue the same upward trajectory, then increase again for the third week. So we conclude that a weekly ramp of 5 is not sustainable over three weeks. Something of the order of 2 or 3 may be more reasonable.

A steady increase in Fitness

Consider a rider with a Fitness level of 30, who would have a weekly Training Load of around 210 (7 times 30). This might be five weekly commutes and a longer ride on the weekend. A periodised monthly plan could include a ramp of 2, steadily increasing Training Load for three weeks followed by a recovery week of -1, as follows.

Plan of a moderate rider

This gives a net increase in Fitness of 5 over the month. Fatigue has also risen by 5, but since the rider is fitter, Form ends the month at zero, ready to start the next block of training.

To simplify the calculations, I assumed the same Training Load every day in each week. This is unrealistic in practice, because all athletes need a rest day and training needs to mix up the duration and intensity of individual rides. The fine tuning of weekly rides is a subject for another blog.

A tougher training block

A rider engaging in a higher level of training, with a Fitness score of 60, may be able to manage weekly ramps of 3, before the recovery week. The following Training Plan would raise Fitness to 67, with sufficient recovery to bring Form back to positive at the end of the month.

A more ambitious training plan

A general plan

The interesting thing about this analysis is that the outcomes of the plans are independent of a rider’s starting Fitness. This is a consequence of the Markov property. So if we describe the ambitious plan as [3,3,3,-2], a rider will see a Fitness improvement of 7, from whatever initial value prevailed: starting at 30, Fitness would go to 37, while the rider starting at 60 would rise to 67.

Similarly, if Form begins at zero, i.e. the starting values of Fitness and Fatigue are equal, then the [3,3,3,-2] plan will always result in a in a net change of 6 in Fatigue over the four weeks.

In the same way, (assuming initial Form of zero) the moderate plan of [2,2,2,-1] would give any rider a net increase of Fitness and Fatigue of 5.

Use this spreadsheet to experiment.

Related posts

Author: science4performance

I am passionate about applying the scientific method to improve performance

11 thoughts on “Modelling Strava Fitness and Freshness”

  1. A very good blog, finally making me understand how Strava calculates this.
    It’s just math, but it could be good to mention that Fitness/Fatigue for multiple days (e.g. 7 days) is calculated by raising the lambda to the power of days, i.e in excel, power(lambda, 7).

    An alternative way to increase the Fitness with 5 is to increase the Fitness with 5 the very first day, and then keep the Fitness on that level. This is what’s usually happens to me when I take a long trip on my bike on the weekend (kind of doing a race) and then I just try to stay on the same fitness level for the rest of the week. Don’t know if this is to recommend though… 🙂
    For the Fitness increase from 30 to 35 in the example above, that would mean a Training Load of 242.5 the first day and then 35 each remaining day of the week just to maintain the Fitness level. The total Training Load for the whole week will be a bit higher (+14.5), but the Form in the end of the week will on the other hand be slightly better (-10 instead of -16).


  2. This is great! Always been interested in where the numbers come from. Thanks so much for putting this together – very informative.


  3. Thanks for this. I started using Strava about three months ago. I am just trying to improve my fitness so I can continue having fun running, hiking, and cycling adventures into my older years. I ignored all of this fitness and freshness until I really burned out a couple weeks ago. Glancing at the graph, I noticed that Strava’s fatigue and form numbers perfectly coincided with my burn out. Your explanation of how fitness and fatigue numbers “decay” on rest days is super helpful. I am not obsessed with getting stats perfect; I only use heart rate and not a power meter. But at 50, I need to be careful to take enough recovery time. This appears to be an excellent tool for reminding me to ease up on the gas every three or four weeks. Great article.


  4. This is great analysis. The fitness score seemed to be a bit of a black box but for the most part what you’ve written aligns with my experience. In looking at 2 years wroth of fitness score though it seems that individual efforts can have more of an impact than you suggest, as I have seen +9 out of a single workout (albeit a longer one of 2.5 hours). Even a very hard 20 minute effort, which resulted in effort score of around 75 I was able to see +4 in a single day. Did you look at any change from using power vs. relative effort? You can see my summary here:


    1. Thanks for the feedback. In order for the Strava fitness score to be reliable, it’s important to maintain an accurate FTP in the “My Performance” section of your account settings. An effort score of 100 should equate the maximal effort you can sustain over 60 minutes. An effort score of 75 for a 20 minute session might suggest that your FTP setting was a bit low.


  5. I don’t know how you got to the exponential decay model for fitness and fatigue and to the numbers 42 and 7 as parameters, but testing on my own strava data, they seem to be very accurate. So this is either very good reverse engineering, or is this model made public by Strava?

    The exponential model makes total sense for Strava, as you need only 2 numbers each day (previous fitness and current training load) to calculate the new fitness number, and you don’t need the complete history to do the calculations. When you need to do this calculation for millions of users, it makes a big difference in work for the strava servers. On the other hand, choosing a model because it is easy to calculate, is perhaps not the best strategy for finding the best model. But then, there is no real life measurement of ‘fitness’ or ‘fatigue’ to model in the first place, so Strava is modelling something that most people agree to exist, but can’t quantify anyway in the same way we can measure length, speed, volume etc. That means there is no way to validate the model to begin with, and no way to say that Strava’s model is better or worse than other Fitness-Fatigue models out there. Unless you are sitting on a mountain of data (like Strava) and can find correlation between people’s form and how well they perform. To put it simply: is the form calculated by Strava a good predictor of performance like scoring personal bests?

    This being said, I’m 60 years old, and it appears that the magical numbers 42 and 7 are the same for a 20-year old as for a 60-year old which is perhaps not such a good assumption for Strava to make: it feels like the older we get, the faster we loose our fitness and the more time we need to recover. I would expect a smaller number than 42 for the fitness of older people and a bigger number than 7 for calculating fatigue.

    Anyway, very well written blog post, really enjoyed reading this. Kudos like they do in Strava…


    1. Thanks for the comments, René. The parameters of 42 and 7 have been published and are widely adopted. You are likely to set your PBs when you are in the supercompensation phase After tapering from intense training your Form (=Fitness-Fatigue) would probably still be between -10 and zero.
      Your point about the parameters for older athletes is a good one, as it appears that we take longer to recover. My best advice is to read Joe Friel’s book Fast After 50.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: