Average power higher than NP - why?

I did an XC MTB race yesterday, and noticed afterward that my average power was greater than my normalized power (264 vs. 257). I’ve never seen this happen before, even in similar types of races. I’m wondering why it would happen, and what it means in practical terms. It was a relatively short race (49 minutes), so I was going hard nearly the whole time (less than 3 minutes of coasting). Not sure that it matters, but my FTP is set to 258. I often get wonky power readings due to bumps on an MTB course, but my data for this ride looks clean. I was using a Stages left-side power meter, and a Bryton head unit. I’m using the data from Training Peaks.

That does sound odd. I sometimes get that with short intervals, but never with a ride that long.

Do you have the file imported into your TR calendar? Can you share the data?

Thanks for the reply. I’m actually not a TR user (I found this forum through their podcast, which I listen to regularly). Here’s a link to my downloaded file from Training Peaks. Or you can just view the workout on Training Peaks.

OK, I don’t know WHY it’s happened, but for some reason it’s over-calculating your average power.

Weirdly, when I select just the period of the race where you were “working”, the average power comes down from 264 to 237, which makes much more sense:

And if you just select a little bit of the dead time from the start of the workout, click “cut”, and allow it to recalculate, you should see values that makes a lot more sense.

(God only knows why this is happening - a similar thing was going on with me recently which we never really got to the bottom of, except in my case the average power was under-reading. In your case, it’s worth noting that the maximum power on your workouts is listed as 1525, but I can’t for the life of me find any power spikes that high anywhere in there. So that might provide some clue.)

1 Like

Ooh, spotted another fun anomaly. Before you snip the beginning off the file and fix it, the total workout duration is too short. You can hover over the workout and it shows it going over 50 minutes, but it shows the total duration as under 49…

It has to be a bug. If average power and NP are computed correctly, it’s mathematically impossible for NP to be lower.

It can happen for short intervals because of the way 30-second smoothing is applied as part of the NP calculation. That’s arguably a malfeature, but you’re not supposed to use NP for short intervals anyway. :wink:

I think it’s a quirk/bug related to Training Peaks. @martinheadon Your suggestion to ignore the beginning got me looking at the Data Grid in TP. What it showed was power of 184 at the first second I started recording, then no power or cadence for over two minutes (recorded as “–”) until the race actually started, when it jumped back to 182 again. However, I was rolling through the starting chute, so there are readings for speed and distance, so it looks like I’m riding. I’ve seen on other rides that TP will ignore “–” and interpolate from the data points around it (they said it’s in case there’s no data because of a dropout). For this race, I just manually changed my power for the first second to 0, and the average dropped to 230, while NP stayed at 257. My guess is that TP was counting the two minutes of interpolated power, but not using that time when doing the calculation of average power.

Also, I just noticed that Strava has the ride at 229 average power (original upload, no tweaks to the data), so I think it’s definitely a Training Peaks bug. Thanks for the help @martinheadon and @jpowers.

That’s really interesting - looking at my own files, there are times where the power meter stops responding when I stop at a cafe, and having “-” instead of zero does seem to be throwing it off…

Your problem actually spurred me to action and I sent a help ticket to TrainingPeaks about my particular issue (which in my case was the average power being too low). Their response:

The reason for this is that TrainingPeaks calculates Kj from the actual file data itself but the average power is calculated from the summary data of the device.

When a small portion (can be super small so it doesn’t mess up ride data) of the ride is deleted it forces TrainingPeaks to calculate the average power and Kj for the ride.

i.e. “it’s your bike computer’s fault”. Although it’s possible your issue has a different cause.

As I said before, I uploaded the same file to Strava and it didn’t have this bug, so I don’t think it’s a head unit issue. Also, I emailed Training Peaks about this general problem a few months ago and they acknowledged that it’s because of how they interpret the data. I was seeing big power peaks that shouldn’t have been there. For example, 600 watts for one second followed by 58 seconds of “–”, followed by 600 watts for one more second would register as 600 watts for one minute. Here’s what they told me:

Sorry for the discrepancy on this. The reason that this is happening is because there is no stop event recorded between the end of your TT effort and the power spike at the beginning of the next effort. Admittedly, this is a mistake from the way TrainingPeaks reads the power- it will draw a line between where the power dropped out and then began again.


The power recorded during the stop event is null, not zero. This is a key difference. If the power was zero, it would not be a peak performance, I assure you. Since the power is null, TrainingPeaks will draw an imaginary line between the first reading and the next reading. TrainingPeaks cannot tell how much time is in between the interval and whether or not it makes sense.

The only way to fix this is to edit the data as I recommended in my previous email.

This will not occur if your device is paused or the power is reading zero for the stopping time- only when the power directly drops out for null values to occur.

– is null, 0 is 0.

Now when I see “wishful thinking” peaks, I find them in the data grid, and just change the first or last “–” to 0 and it fixes it.

Oh that might be useful for me - I thought you’d have to change every single one of them to 0…

I too always assumed, based on the definition of NP that it should always come out >= (higher or equal) to your AVG watts in any ride/workout and indeed I don’t recall a single time that this was not the case.
However - looking at the way NP is calculated, mathematically it doesn’t have to be this way.
Just take a simple vector of 31 points 1,1,1,1,…1,31 and you would get a NP<AVG
Why is that? or more specifically in what ride scenario can you get an NP which is less then the AVG? I;m not really sure and I was hoping someone can answer as the whole concept of NP is to neutralize non effort exertions which are being calculated in the AVG.

NP is calculated by the following four steps (from Training and Racing with a Power Meter by Allen and Coggan):
Calculate a 30-second rolling average of the power data
Raise these values to the fourth power
Average the resulting values
Take the fourth root of the result