“All models are wrong, but some are useful”
The way Intervals works is quite simple, it creates a regression model from all your rides with power and HR and uses that to assign a TSS from HR-only trace.
In the HR tab for the activity you can see how it’s been calculated:
The graph on the left shows the spread of the error in the HR-only model from events which also have power. You can see in this case, the agreement is very good, because this was a pretty standard ride for me (TR indoor workout) the kind of which I have done loads of times before, so it’s not a surprise they match - however the spread is quite wide (lots of points a long way above and below the line).
I have had surprisingly high HR TSS estimates from Intervals on very easy rides - I did 28k round towpaths with my wife last Monday and it gave me 76 TSS… I think because my minimum HR while cycling tends to sit around 100-110 even when I am essentially coasting, so it thinks I am working a lot harder than I actually am. See below two calendar entries, the ride on the right with power and giving a lower TSS than the one on the left despite being practically quite a lot harder:
TrainingPeaks I believe uses a HR time in zone model based on your lactate threshold heart rate - so it’s a fundamentally different model (pretty much the same method as the Strava relative effort score, but ranked on a different scale since relative effort in Strava makes no attempt to be similar/equivalent to TSS).
So you would not expect them to be the same. The HR TiZ model isn’t great for shorter intervals or very variable efforts due to HR lag (as noted by TP), plus all the normal issues with HR variability. The regression model isn’t very good for rides which look a lot different to the rides which the regression model has been trained on. It might be slightly better with HR variability in some cases since it’s already “baked in” to the regression model (i.e., the rides feeding the model will have HR variability in them - the model knows what my HR decoupling usually looks like over 3 or 4 hours), but given how variable my decoupling is depending on weather conditions, hydration, time of day etc. I don’t have a lot of faith (I have seen decoupling as high as 22% and negative decoupling up to -5% before…).
What I do like about the Intervals one is it tells you what the HR TSS would have been for rides with power so you can make a bit more of an informed decision about when it is likely to be too high or too low.
The TR HR TSS usually looks pretty close to the Intervals value for me, especially for shorter/more standard rides, but we can’t look under the hood to make that more informed decision. I expect it will also struggle with rides that look a lot different to those the model is trained on. They do seem to deviate more for longer rides - I did a 3+hr MTB ride in the heat on Sunday and got 189 off TR and 167 off Intervals.
But then, I find Garmin, Strava, TrainerRoad and Intervals all give slightly different TSS figures even for rides WITH power (I think based on how they treat coasting?), so who knows…
My ride from Saturday (yes, FTP is set the same on all 4):
Garmin 121
Intervals 116
Strava 111
TR 120
(I don’t really think this is a problem mind)