Incorrect Normalized Power calculation in workout analysis?

Today I did Reinstein as part of the SSB MV1 training plan.
After the ride I went into the workout analysis tool to check the stats for the individual intervals and noticed something weird about the power and normalized power stats. See below screenprint:

The stats show an average power of 235W, with a max of 307W. However, the NP for this interval is only 234W. As far as I know NP can never be lower than your avg power for an interval and makes no sense to me considering it’s an O/U interval with a max way above the avg power.

Is this a calculation bug, or am I missing some info?
Hope someone can explain this to me.

*Note: NP calculation seems to be correct when not zoomed in on a certain interval. Avg power for complete workout = 174W with a NP of 196W.

NP uses 30-second smoothed power. Smoothing function necessarily includes some time outside the selected interval. So average and NP are looking at slightly different data for a selected interval.


Thanks for the explanation. Makes sense to use a smoothed power.

I just don’t understand why it would have to use time outside of the selected interval. In my eyes this makes the NP metric pretty useless for analysing intervals.

I tried selecting the interval skipping the first and last 30 seconds. NP now came out equal to avg power. Still feels a bit weird considering it was an O/U block with a pretty big deviation of max pwr to see those two metrics return the same value.

It’s defined that way (using 30-second smoothed power). Realistically, you could not reasonably apply the NP formula to the unsmoothed output of a power meter; it’s too noisy.

Note that the whole approach is modeled after Bannister’s TRIMP, which uses heart rate. Heart rate is naturally smoothed.

NP is not intended to be well-behaved for what you’re trying to use it for. (Or, more simply, “yeah, it’s kind of useless for analyzing intervals.”) Showing NP for a selected interval is a feature TrainerRoad chooses to provide. There are other ways they could implement it, and then it would have a weird behavior in different situations. (Incidentally, this is also true for TSS, which is only really valid over the whole workout and not over a selected interval.)

There are two issues here, but TLDR is that what you saw is correct.

You might think that since it varies, an over/under workout would have a different NP than AP. It must, and it does! But how much? The formula is pretty simple, so you can model it. A “perfect” Reinstein, which is 2 parts 95% and 1 part 105%, will have an average power of 98.3% FTP and a normalized power of 98.7% FTP. That’s a difference of 0.35%. That’s below the accuracy of your power meter and it’s below the accuracy of your FTP measurement.

The max power shown is actually the largest number recorded from your power meter. In this case, 307 W on an interval averaging around 235 W. That max power comes from a whole two seconds (one reading at 307 and one reading at 300). Since it was preceded by a little drop in cadence, maybe you lost your cadence a bit and stomped on a pedal to bring things back up. Maybe your power meter was just noisy (look at how noisy the graph is). Such a tiny excursion will get absolutely crushed by the 30-second averaging that is used to compute NP, and that’s okay, because such a tiny excursion is not interesting for what NP is trying to model anyway.


Are you only seeing this in the summary that pops up immediately after completing a workout? But if you check online the NP is correct?

The reason I ask is that for shorter VO2 max type intervals, I’m seeing a bug where the immediate NP / Ave. Power calculation show in the workout summary is incorrect. But the numbers on the website are correct, and if I close the workout summary and reopen it, the numbers are correct. So if you are seeing this same thing, will you please file a bug report with TrainerRoad support? Having this same issue from multiple people will help them track this down.

No sure why you are looking at NP. It’s only reflective for effort that is 20 minutes or longer (longer the better).

That’s because there very little variation in the power. The smoothing applied is exponential. See site for actual derivation,

Nothing in computing NP is exponential.

If you have a power measurement P(t), the smoothed power is P_s(t) = sum( t’ = t - 30 sec … t, P(t’) / 30 sec ). That’s a 30-second trailing average. (I suppose you could use any reasonable 30-second average, but TrainerRoad uses a trailing average.) The Normalized Power is NP = [ sum( t = 0 … T, P_s(t)^4 ) / T ]^(1/4), which I guess should be called a quartic mean. (The average power is just the arithmetic mean.)

1 Like

Oh wow, thanks for taking the time to write all that info.
Helped me a lot and think I get it now.

@AlphaDogCycling: Turns out it’s not a bug, but a ‘feature’ of how NP is calculated as explained very well by @jpowers. My NP values are all showing correct, so I’m not familiar with the issue you’re referring to.

I thought that Coggan based TSS on TRIMP? What’s the HR equivalent for NP?

Technically, yes. TSS / NP / IF is a set of metrics in a single model for using a measurable quantity (power) to estimate a “training load”. TRIMP is a different model for using a different measurable quantity (heart rate) to do the same.

NP is kind of a “difficulty-adjusted” power. The equivalent in HR is the inner term in the TRIMP sum, H exp(k H), where H is heart rate reserve and k is a constant (1.92 for men and 1.67 for women).

That’s IF^2 and no direct equivalence, right? Best fit of the blood lactate concentration curve using different matrix and different quantification of the stress?

I’m not sure what you’re asking here.

TRIMP = D* H exp(k H)
TSS = (t* IF^2) / 36
where IF = NP/FTP, D in min, t in secs, H = (HR exercise - HR rest) / (HR max - HR rest)

I having a hard time rationalizing how the two would match up other than two points, NP=FTP and no work.

I think you’re right. Both TRIMP and TSS increase with time and with intensity, but that’s about all they seem to have in common.

You need to expand out IF. Write TSS in terms of only power (the measured quantity) and TRIMP in terms of only heart rate (the measured quantity).

The key characteristic is that the intensity is a nonlinear function of a continuously-measured quantity (heart rate or power). In both cases, IIRC, the nonlinearity of the intensity is based on the lactate response to a workload. The nonlinearity is what makes NP and TSS have useful properties that average power (and kJ, the TSS equivalent for average power) doesn’t have – giving more credit to hard work and losing less credit for rest. TRIMP has, broadly, the same properties, for the same reasons.

Yes. I wrote a short post about Coggan’s derivation here:

You should be able to search and download that paper. Interesting read.