Can AI Create a Better Training Stress Score Model?: Hypothetical New Indexes

Endurance training benefits an endurance athlete because it places a progressive load on the athlete’s physiological systems that allow them to improve via adaptation over time (physiological adaptation). Measuring the load of a given session is important, as is the cumulative load over time.

Fatigue scoring is computed on mostly external factors like:

  • Distance covered
  • Watts outputs
  • Calories burned
  • Pace or MPH maintained (albeit this is the most variable due to terrain and wind if outside).

These measure the external load on an athlete only. Internal factors can come into play. This is how the human “engine” (aka the meat motor) responds to the external load. This scoring can be based on:

  • Heart Rate
  • Heart Rate Value
  • Perceived Effort (RPE Scales) self-evaluation
  • and Less directly, injury, sickness, sleep quality etc.

The Challenge: External or Internal Measurements of Stress Measurement?

The challenge is that most training software like Training Peaks, Xert, WKO et al. create a fatigue or fitness score using ONLY external factor modeling. This can be detrimental to an athlete. Perhaps the most well-known external score is the Training Stress Score (TSS) which is modeled by Training Peaks when wattage is available (see how TP calculate their TSS here.)

This over-reliance on external stress measurements can be detrimental to recovery and optimal performance. Relying on external metrics and the expense of internal metrics is analogous to an F1 team seeing their car going around the track at 200mph and telling the driver, “We’re okay, keep pushing,” while the wheels are falling off and the engine is on fire.

Equally problematic is relying solely on internal metrics like cardiovascular stress, metabolic stress and neuromuscular fatigue. Heart rate is extremely fickle and can often mislead an athlete or coach seeking to measure training stress in relation to optimal performance outcomes. We’ve all been on a session that should be easy externally, but internally our heart rate might be much higher than normal or lower than normal for the session. Numerous factors can contribute to this variance (heat, sleep, accumulated fatigue, etc.).

Using AI to Create a Score that Combines Internal and External Factors Related to Session Stress


What if there was a better way of measuring stress and fatigue that used both internal and external factors in a weighted manner to create a new kind of TSS score?

Stress Scores the AI Models Created for a Cycling Session

Enter AI. We tasked new Artificial Intelligence Models to create an “improved” weighted stress score for cyclists using tailored prompts. It will be interesting to see how Artificial Intelligence will be used by coaches to measure athlete’s sessions and cumulative stress loads in the future. Here is what several AI models generated as their ideal index.

TSS Alternatives the AI Models Created

Chat GPT 4 Generated Single-Session Cycling Fatigue Index (SSCFI)

The components to focus on the acute responses to that specific session. This will help to evaluate the immediate fatigue and stress experienced by the cyclist following the workout.

  1. Physiological Parameters (P) – 20%
    • Average and peak heart rate during the session – 10%
    • Cycling efficiency, cadence, pedal smoothness, torque effectiveness during the session – 10%
  2. Training Load Monitoring (T) – 20%
    • Training Stress Score (TSS) for the session – 20%
  3. Psychological Assessments (PA) – 15%
    • Rating of Perceived Exertion (RPE) for the session – 15%
  4. Sleep (S) – 15%
    • Sleep quality, quantity, and timing prior to the session – 15%
  5. Nutrition (N) – 10%
    • Pre- and post-workout nutrition – 10%
  6. Biomarkers (B) – 10%
    • Acute changes in cortisol, creatine kinase, and other relevant biomarkers (if available) – 10%
  7. Performance Tests (PT) – 5%
    • Performance outcomes during the session, such as time to complete intervals or target power adherence – 5%
  8. External Stress Load Factors (ESLF) – 5%
    • Environmental conditions during the session (temperature, humidity, altitude) – 5%

Single-Session Cycling Fatigue Index (SSCFI) = 0.2 * P + 0.2 * T + 0.15 * PA + 0.15 * S + 0.1 * N + 0.1 * B + 0.05 * PT + 0.05 * ESLF

Normalize each individual factor (P, T, PA, S, N, B, PT, ESLF) on a scale of 0 to 100, with higher scores indicating higher fatigue levels. Then, plug these values into the Single-Session Cycling Fatigue Index (SSCFI) formula, which will also produce a score ranging from 0 to 100. A higher SSCFI score will indicate higher accumulated stress and fatigue for that specific training session, while a lower score suggests better recovery and lower fatigue levels.

As with the previous models, this single-session adaptation should be used as a starting point and may require adjustments based on individual differences and specific contexts. Regularly re-evaluate and adjust the model to ensure its accuracy and relevance for each cyclist.

Creating a Cumulative Score

To create a cumulative score for the Single-Session Cycling Fatigue Index (SSCFI) over a longer period, such as a week, month, or year, you can calculate a rolling average or a weighted average of the individual session scores. This approach will provide insights into the cyclist’s overall fatigue and stress levels during the selected time frame.

Here’s how to calculate the cumulative scores:

  1. Rolling Average: Calculate the average of the SSCFI scores for a specific time period (e.g., 7 days for a week, 30 days for a month, or 365 days for a year). The rolling average helps to smooth out fluctuations in daily scores and provides a more stable representation of accumulated fatigue.

Rolling Average (RA) = (Sum of SSCFI scores for the time period) / (Number of training sessions in the time period)

  1. Weighted Average: Assign weights to the individual SSCFI scores based on recency, with more recent sessions receiving higher weights. This approach gives greater importance to recent fatigue and stress levels, acknowledging that the impact of older sessions may have diminished over time.

Weighted Average (WA) = (Σ (SSCFI score_i * Weight_i)) / (Σ Weight_i)

To determine the weights, you can use a simple linear weighting or an exponential weighting system. For example, in a 7-day period, you can assign weights in descending order (7 for the most recent session, 6 for the previous session, and so on, down to 1 for the oldest session).

These cumulative scores can be visualized over time using graphs or charts to identify trends, monitor fatigue levels, and evaluate the effectiveness of the training plan. It’s important to regularly review and adjust the cyclist’s training program based on these cumulative scores to ensure optimal recovery, performance, and overall well-being.

CLAUDE + Generated Single-Session Cycling Fatigue Index (SSCFI)

Note: I made Claude+ regenerate the Index based only on the best scientific evidence.


Session Stress Score =
(Duration in minutes x 1) + (Distance in miles x 1) +
(Average intensity/wattage x 3) + (Elevation gain in feet x 1) +
(RPE score x 5) + (Average HR x 3) + (Max HR x 5) +
(Time in Zones 3-5 x 4) + (Performance index/VI x 4) +
(Blood lactate increase from baseline x 3) + (HRV decrease from baseline x 4) +
(Peak power/maximal torque output x 4) + (Perceived fatigue/mood score x 5) +
(Isometric endurance time x 2) + (Deep sleep time post-session x -3)

Here is Claude’s rationale for reweighting based on available evidence:

• Duration and distance – No clear evidence that time or mileage alone reflect physiological stress. Kept at 1x due to limited contribution.

• Intensity (wattage) – Greater power outputs have been correlated with higher cardiovascular, metabolic and neuromuscular stress. Weighted at 3x relative to duration/distance.

• Elevation gain – Linked to greater effort but limited evidence for quantifying additional stress. Kept at 1x as combined with intensity.

• RPE – Seen as reliable indicator of total internal load but subjective and scale depends on instructions provided. Reduced from 10x to 5x based on potential variability.

• HR measures – Average and max HR indicate cardiovascular exertion but limited evidence for precise weighting. Reduced from 5-8x to 3-5x due to high inter-individual variability in HR responses.

• Time in zones – Duration of time in higher intensity HR zones correlates with increased physiological stress. Weighted at 4x based on evidence, reduced from initial 3x estimate.

• Performance metrics – Power-based measures shown to reflect neuromuscular fatigue and intensity. Limited evidence for precise weighting relative to other metrics. Kept at 4x.

• Physiological measures – Blood lactate and HRV changes demonstrate metabolic and cardiorespiratory load but inter-individual variability and measurement limitations. Reduced weights from 4x to 3-4x based on available evidence.

• Perceived/psychological metrics – Significant contributor to total stress but difficult to weigh relative to physiological factors based on evidence. Reduced from 8x to 5x due to high subjectivity.

• Isometric endurance – Measure of whole-body endurance but limited evidence regarding stress relative to other metrics. Reduced from 3x to 2x based on available research.

Dragon FLY AI ‘s Model of TSS

Based on the best scientific evidence available, the following formula index can be used to measure accumulated fatigue in a cyclist:

  • Heart rate (20%)
  • Oxygen consumption (20%)
  • Muscle fatigue (15%)
  • Respiratory rate (15%)
  • Core body temperature (10%)
  • Sleep quality (10%)
  • Perceived exertion (5%)
  • Hydration levels (5%)
  • Nutrition intake (5%)
  • Stress levels (5%)
  • Hormone levels (5%)
  • Metabolic rate (5%)
  • Environmental conditions (humidity, temperature, etc.) (5%)

Dragonfly was not as good as describing how to arrive at the 1-100 score for each factor. The resulting formula for a Session Stress Score would be

Index = (Heart rate x 0.2) + (Oxygen consumption x 0.2) + (Muscle fatigue x 0.15) + (Respiratory rate x 0.15) + (Core body temperature x 0.1) + (Sleep quality x 0.1) + (Perceived exertion x 0.05) + (Hydration levels x 0.05) + (Nutrition intake x 0.05) + (Stress levels x 0.05) + (Hormone levels x 0.05) + (Metabolic rate x 0.05) + (Environmental conditions x 0.05)

I then forced Dragonfly to define measurements of some of the more abstract factors above.

Oxygen Consumption – calculate the percentage of maximum oxygen consumption. This is done by subtracting the cyclist’s resting oxygen consumption [milliliters of oxygen per minute (ml/min)]. from their maximum oxygen consumption, and then dividing that number by the maximum oxygen consumption. The result is then multiplied by 100 to get the percentage of maximum oxygen consumption.

Muscle fatigue – measured by assessing the percentage of maximum voluntary contraction (MVC). This is done by having the cyclist perform a series of exercises and measuring the amount of force they are able to generate with each repetition. The MVC is then calculated by dividing the maximum force generated by the average force generated over the course of the exercises. The unit of measurement for muscle fatigue is a percentage.

Hydration levels – measured by assessing the percentage of water in the body. This is done by dividing the body’s total water content by the body’s total weight. The unit of measurement for hydration levels is a percentage. Convert the unit of measurement for hydration levels into a score of 0-100 is to use the following formula: Converted hydration level = (Hydration level – Minimum hydration level) / (Maximum hydration level – Minimum hydration level) x 100

Hormone levels – The hormones that would be measured in order to assess fatigue in a cyclist would include cortisol, testosterone, growth hormone, and adrenaline. The unit of measurement for each hormone would be a concentration of hormones in the body, and the weight of each hormone in the equation would be 5%.

We ran the same prompts in a few other AI models. Some of the results were less than ideal, so we didn’t list them here. Then I fed the better AI-generated Stress and Fatigue Indexes back into Chat GPT 4 and asked it to modify its own model. Here is the modified model.

Chat GPT 4 Single Session Stress Accumulation Index Revised

Just for Grins: We Fed All the Indexes Back into Chat GPT 4 and had it revise its index. Here is what it spit out.

To incorporate these additional factors, we can revise the M-SSCFI as follows:

  1. Physiological Parameters (P) – 20%
    • Heart rate response during the session (percentage of maximum heart rate) – 20%
  2. Training Load Monitoring (T) – 20%
    • Training Stress Score (TSS) for the session – 20%
  3. Psychological Assessments (PA) – 20%
    • Rating of Perceived Exertion (RPE) for the session – 20%
  4. Environmental Conditions (EC) – 5%
    • Temperature, humidity, and altitude during the session – 5%
  5. Performance Outcomes (PO) – 5%
    • Performance outcomes during the session, such as time to complete intervals or target power adherence – 5%
  6. Nutrition and Hydration (NH) – 5%
    • Nutrition Score and Hydration Status Score – 5%
  7. Heart Rate Variability (HRV) – 5%
    • HRV Score – 5%
  8. Hormonal and Biochemical Markers (HBM) – 10%
    • Cortisol Score, Inflammation Score, and Muscle Damage Score – 10%
  9. Metabolic Efficiency (ME) – 5%
    • Oxygen Utilization Score and Glycogen Depletion Score – 5%

Extended Single-Session Cycling Fatigue Index (E-SSCFI) = 0.2 * P + 0.2 * T + 0.2 * PA + 0.05 * EC + 0.05 * PO + 0.05 * NH + 0.05 * HRV + 0.1 * HBM + 0.05 * ME

Conclusions and Caveats

These are simply AI models, but they can induce sports scientists and physiologists to think about factors to include in a broader spectrum of a training stress score of session fatigue that is based upon external and internal factors. We prompted the AI models not to be limited, so some suggested a muscle biopsy post each session. Obviously, that isn’t feasible for a real human athlete unless they are borderline sadistic. This exercise was more out of curiosity than constructing an actively working model. Chat GPT 4 performed better than the other models, in our opinion.

This AI modeling is definitely a launching pad and not conclusive in any way, yet we found it had interesting insights on how to blend external and internal stress factors into a single formula. We are handing the baton off to those sports scientists and physiologists who are better equipped to work on creating an improved model.

Tracking cycling performance and performance outcomes tied to an AI TSS will be an interesting future development to watch in endurance sports.

Leave a Comment