In my last HRV post, I outlined a few of the practical issues (esp. for coaches) in keeping track of good HRV data. Namely, a) the proprietary nature of most of the available apps & b) most apps aren't well suited to the coach's need of easily keeping track of the HRV status of multiple athletes. At the end of the post, I hinted at the ability to pull HRV data programatically directly from Training Peaks... This is something that I've been doing now for a few weeks for me and my athletes & I've found it super useful, so I figured I'd share it with you guys (in the hope that we get even more of you in on the HRV conversation).
You'll find the tool below...
You don't need any special hardware or apps to gather the data. Everything is pulled from regular HR files on your TP account.
To begin gathering data, simply put your HR strap on when you wake up in the morning, wait for it to settle then start your watch for at least a minute and upload the file just as you would any workout file (but as sport type 'other').
As long as the file is over 60s, and uploaded as 'other', it will pull HRV data from the file but my recommendation (& what I use for my crew) is a 2 minute test - 60s lying down followed by 60s standing
An example of what you'll see after you've gathered a few files is shown below...

You'll see a 'day to day' list view with low HRV days highighted in red and high HRV days in green. You'll also see a chart view with your day by day HRV score plotted along with gridlines at low and high levels so you can easily see when you're outside of your own 'normal' range.
How does it work?
The code pulls all 'other' files from TP within that date range, it then cycles through each of these files to calculate RMSSD and SDNN using the math I outlined here. A HRV Score (in this case, lnRMSSD*2) is also calculated for each. The code then calculates a rolling average and standard deviation from each file and will highlight 'high' values in green and 'low' values in red to give you quick visibility on days that you might want to be a little more attentive to the training state of particular athletes & consider programming an easy/recovery day.
Yes, this tool also works for coaches! If you have a coach account with training peaks, all you need to do is log in with your coach credentials and you will have access to all of the athletes that you do on your acct. Simply enter the unique athlete number for the athlete data that you want to pull & you can easily keep a (real time) eye on the recovery status of your athletes.
What is the 'tolerance' setting?
The tolerance setting refers to the multiple of the Coefficient of Variation (CV) that if will take to turn the 'high' numbers green and the 'low' numbers red. The default is 1.0, i.e. a difference of 1 CV from the mean. This level will make large changes easy to spot. However, in practice, we may want more sensitivity than that if we want to use this tool to help to better guide us on where we might want to schedule our recovery days for a given week. I typically plan 7-10 recovery days per block & it would seem like a common sense approach to try and schedule these days on the 7-10 days of the block that the athlete is actually the most tired! You may need to dial up the sensitivity of the 'low' days in order to get 7 'reds' per block. I typically find 0.8*CV does the job. The research standard for the 'smallest worthwhile change' (i.e. a score that differs enough from the mean that it can't be written off as 'noise') is set at 0.5*CV so I've also included an option at this level.
A few caveats...
Files must be saved as 'other'. If you have been saving non-HRV files as other, change the sport type for these to something else, e.g. 'custom'.
Beat to beat recording must be enabled on your device to get accurate data. Also, this tool simply pulls the raw data. It doesn't apply any 'smoothing' or correction.
********
In addition to the advantage of being able to keep a 'real time' eye on multiple athletes, linking to Training Peaks offers the other distinct advantage that the athletes' training data is also stored there so we can pull both sets of data and keep track of both sides of the equation - Training stress in, physiological stress out! I'm currently doing this with my own athletes and, providing I'm not pushing my limits with Training Peaks API, (Ben, if you're reading this & I am, let me know ;-) I'll show you how you can do this in future posts. Until then..
Train smart,
AC
TweetDon't miss a post! Sign up for my mailing list to get notified of all new content....