How Does Running Strain Affect Heart Rate Variability?

Track and field is a sport of many numbers – distances, splits, personal bests, Olympic standards and world records. However, just as important are the health metrics that can help guide a runner to become their (actual) personal best. Heart rate variability (HRV), the measure of the variation in time between heartbeats as measured in milliseconds, is one of those metrics that can be a useful indicator of stress and recovery. As a result, I was interested in exploring how different quantities of four metrics of running strain (daily mileage, daily elevation gain, consecutive days and weekly mileage) affected HRV so I built data models in dbt using my own Strava and HRV data and visualized the results in a Sigma dashboard.

Methodology

I exported my Apple Health data directly from the Apple Health app and then cleaned the resulting .xml file using a Python script (based on this template) to isolate the HRV data into a .csv file. Similarly, I followed this guide to access my Strava data using their API through the Postman app and then used a Python script to store all of my activity data in a .csv file. I previously used my iPhone for GPS tracking my runs before I bought an Apple Watch in December 2020 so this project only analyzes days that contain both Strava data as well as HRV data from the Apple Watch from December 2020 to June 2024.

I created a new project in BigQuery and dbt Cloud, loaded the .csv files into two tables in BigQuery that will serve as the sources in my dbt DAG, and initialized my dbt project. Next, I built my data models (e.g. staging, intermediate and fact models) and .yml files in dbt Cloud to analyze the impact on HRV of each metric of running strain. My full code is available to view on my GitHub.

Conclusions

Changes in HRV can be caused by any stressor so it’s difficult to definitively link any changes directly to these four metrics of running strain. Similarly, a single data point is not representative of potential impacts from running strain so I wanted to explore whether there were any notable trends across many data points (i.e. hundreds of runs in some categories) that could point to potential insights.

Overall, my expectation was that an increased quantity of each strain metric would result in a lower HRV potentially indicating insufficient recovery. However, this was generally not the case which was definitely surprising! While there wasn’t significant variation in the median HRV (generally 4-5 ms), the interquartile range of HRV measurements actually generally increased slightly across the most common quantities of each metric as strain increased with only the consecutive days metric generally decreasing.

However, the most notable decreases in HRV seemed to occur with the greatest, least frequent quantities of each metric, specifically 4 consecutive days, 500-600 feet of elevation gain and greater than 10 miles of daily mileage. These greater quantities have noticeably fewer data points than the other quantities so I’m not as confident in ascribing potential significance compared to the quantities with hundreds of data points. However, it seems that these greater quantities might result in a lower HRV because I’m not as acclimated to the strain compared to the more common quantities of each strain metric. For example, my weekly running schedule is almost always 3 days, off day, 2 days, off day so I usually don’t run 4 consecutive days which might explain why those specific intervals result in a notable decline in HRV.

These results might be explained by research that shows that there is a “pronounced effect of intensity on HRV… [so] any potential influence of duration is minimized.” As a result, most studies of HRV rely on intensity as measured by heart rate as found in the WHOOP Strain Score. For example, in a study of sedentary participants, an “8-week constant load aerobic training did not change vagal related HRV indices but 4-week high-intensity endurance training after 4-week constant load aerobic endurance training was sufficient enough to induce changes in nocturnal HR and HRV.” Most of these runs were within consistent ranges of both duration and intensity (usually 6 or 8 miles x 5 times a week, intervals of 2 and 3 consecutive runs per week and 200-400 ft of elevation gain per run) so it makes sense that there wouldn’t be significant variation in HRV.

Overall, the data seems to show that different quantities of these four metrics of running strain do not dramatically affect HRV when acclimated to these overall ranges but a less frequent and more “intense” quantity, such as 4 consecutive days of running, might be “intense” enough to notably lower HRV. Instead, it seems to show a positive, steady response to strain when intensity is relatively stable or, as stated by Runner’s World, “[HRV] trending higher or staying stable typically means that there is a positive response to the stressors you're facing.”

There are several improvements I would make for any further HRV analysis. Specifically, more data points would definitely yield more accurate results, particularly including HRV measurements taken during sleep. In fact, WHOOP calculates HRV “using a dynamic average during sleep… weighted towards your last slow wave sleep stage each night, the time when you’re in the deepest period of sleep.” Instead, my analysis uses only daytime measurements taken during days with a run (i.e. most likely my lowest HRV readings) which likely results in a baseline HRV that is significantly lower than is actually the case. Additionally, adding heart rate zone data would probably show greater variation in HRV between different running intensities due to the pronounced effect of intensity on HRV as previously mentioned.