TSS and IF

Can someone point me to the knowledge base where I can better understand the ins and outs of TSS and IF measurements? Thanks.

1 Like

Hi @Critmark try this to get a good view of both Important Cycling Metrics | RPE, TSS, NP, etc. | Wahoo Fitness Blog

1 Like

Awesome thank you. I will give it a read today.

The part about Average Power and Normalised Power is also a good read as I’d never taken any notice about it before but it is actually just as important

I had read about Normalized Power earlier and it raised a question for me. The document you pointed me to used this example:

Take for example the following session: Rider A holds 220 watts steady for 1 hour straight, therefore their average power is 220 for the session. Rider B also averages 220 for a 1-hour session, but during the session completed intervals above 400 watts for 1-minute durations and then recovered below 220 between efforts. Though both riders ended their 60-minute rides with the same average power, the feel of the ride was quite different for both. For Rider B, they experienced a higher metabolic cost, and therefore due to fluctuations in their power, they would have a higher Normalized Power reflected in the post-workout metrics.”

So as a numbers geek, I was thinking, could you calculate a Normalized Power Score for each ride. Using the example they used, and assuming ERG mode would keep you on target with power, could you ‘score’ Rider B’s ride as a factor of the Rider A ride?

I’m not at all sure how to do that, or what to compare the ride to, that would have meaning or value. Just the idea that if I ride any given video as prescribed, is there an Average Power (based on your 4DP profile) and a Normalized Power that will result based on the ride profile.

Maybe this would be a way to approach it. I am going to do Defender, and based on my profile, I should see my Average Power be 200. However, given the ride profile and my same 4DP profile, I should expect to see my Normalized Power to be 220, which yields a Normalized Power Score of 1.10 (200 x 1.10 = 220).

OK, how much am I overthinking this?? :thinking:

Yes–but you’d need detailed, second-by-second data. You can get that out of the .fit file if you want to. I’ve never actually done the calculation (odd for me, I usually do), but here it is:

Step 1: Calculate the rolling average with a window of 30 seconds: Start at 30 seconds, calculate the average power of the previous 30 seconds and to the for every second after that.

Step 2: Calculate the 4th power of the values from the previous step.

Step 3: Calculate the average of the values from the previous step.

Step 4: Take the fourth root of the average from the previous step. This is your normalized power.

By taking the rolling averages up to the fourth power before averaging them, you substantially increase the weight of high power sections and reduce the weight of low power sections. Then taking the fourth root at the end rescales it. Obviously, if you ride at constant power throughtout, NP and Avg Power are the same.

Once you have NP, you can calculated IF (NP / FTP) and TSS (IF^2 * hours). [I’ve never understood why the formula for TSS in the article, and other articles, is written in such a weirdly complicated way.]

Edit: I pulled a .fit file and did the calculation. When I did 30 second moving averages, my NP/IF came out a trivial amount higher than SYSTM’s calculation. It was spot on when I did 60 second moving averages. I wonder whether the difference is rounding during the calculation or if they do a 60 second moving average.


AkaPete thanks for the reply. But the more I am thinking about it, why can’t Systm calculate this live for you, assuming you are in ERG mode? The software manages the changes for in power for you, so they know what the power output is going to be, irrespective of cadence. If I speed up or slow down in ERG mode, the power remains the same within one watt.

So they know my 4DP profile and the power output required of the video. Shouldn’t they be able to calculate in advance both what your average power and normalized power numbers will be for any given workout?

It would certainly require some mathematics gymnastics and then serious programming, but this just doesn’t seem insurmountable. Even if you have to apply some base assumptions like ignoring the 1 watt fluctuation and only use the target.

Well first, not everyone is doing all the workouts in ERG Mode, and there are benefits from riding in Level Mode, and also benefits to shifting gears while in ERG Mode. See the article ‘Indoor Cycling Tips For Training in ERG Mode

Second, during the ride you have the option of changing the intensity of any and all of your 4DP metrics, as described above using the Gear Icon, which while also change what your average power and Normalized Power will be.

Lastly, you may or may not complete all the intervals. I have ‘cracked’ from time to time during a workout and I simply cannot complete the interval, and thus my average and Normalized Power will reflect my sudden discontinued power output.

Average Power and Normalize Power are analytics of completed data.


Understood all of your points. However, that doesn’t change my underlying premise. All I am saying is, using the base assumptions that the video will be gone in ERG mode , at 100% intensity and an individual’s 4DP profile, this should be calculable on the fly. It would be an interesting metric to know in advance with those conditions understood. Just like changing anything you suggest in your points alters the TSS and IF.

If you choose to change any of those conditions (mode, intensity etc), then the number is no longer relevant. If the rider opts to not complete any rider, irrespective of reason, then none of the metrics, TSS, IF or anything else really doesn’t matter much.

To illustrate the point: The first line in description of what IF is says: “Intensity Factor allows us to determine how intense a session was relative to our own threshold.” So what is the difference if they make any changes you point out? They will likewise change the IF score.

If knowing the TSS & IF of a ride in advance have value, why wouldn’t this be of equal value? When looking at two rides, I think people would find it helpful to know that one has a higher or lower Average Power and Normalized Power. Especially if the two rides are of differing duration.

Not trying to be argumentative here, just trying to understand why this would not be of value.

Target normalised power (i.e. what it would be if you hit the target wattage exactly throughout) IS calculated, as that’s what goes into the IF figure, which is reported in the app.

As I understand it, in the old app this was done using a generic 4dp profile whereas in Systm it uses your own personal profile. As I understand it.

And before Sir @JamesT chimes in ( :slight_smile:), remember that IF and TSS don’t make a whole lot of sense for hiit type workouts anyway. Watch this space for ‘new science’ and a more suitable metric, however…

1 Like

leebo I read that, so let me apologize if I am not being clear or if I am not understanding the IF correctly.

Assuming I am looking at 2 different rides, is it your understanding that if I did both as prescribed, with identical IF scores, they would yield the identical Average Power and Normalized Power? Not sure that is the case as I read the description, but I may very well be wrong.

As I look at the score in question for two rides, help me understand: The Omnium and A Very Dark Place. Both are roughly the same duration, 47 minutes and 48 minutes respectively. Both have the same IF score of 0.91. Yet they have different TSS scores of 65 and 68. Is the one minute duration difference responsible for a 3 point difference in TSS?

Finally, even if that is correct, wouldn’t be of value to know what the Average Power and Normalized Power, and not just the relation to each other? Yes I understand that was my original question, but as this discussion has extended, having the actual two projected scores has emerged as a better idea, at least as I understand it.

Actually, I think IF is the truly important metric: it tells you how taxing a workout will be (roughly) scaled for your own FTP. Of course, both are children of FTP oriented training and don’t particularly deal with what is hard or taxing from a 4DP perspective.

While I understand how the calculations work, I don’t know anything about the science or reasons (good or bad) that the metrics were developed the way they were. I assume they were trying to predict something else that they were measuring (but maybe not). If someone knows what that is and how good a prediction it is, I’d love to learn more.

It is unlikely that they would yield the same average power, but if they have the same IF, they would yield the same normalized power. Remember: IF = NP * FTP so NP = IF / FTP. Same IF for same person means same NP.

Because my profile is different from yours, Omnium and AVDP have slighly different numbers for me. They tie out (adjusting for the weird fact that actual time is not quite the same as what is shown in the summary). Here’s a table showing the calculations and showing the range if IF is rounded. It all ties. Small differences in time are driving the changes in TSS–plus there could be some rounding going on.


Edit: multiply my TSS formula by 100.

1 Like

Bang on.

Moi? Never. I have no opinion on these metrics whatsoever :grinning:

My AVDP and Omnium IF numbers are (were, last time I ran the numbers) 0.98 and 1.04 respectively. AVDP has the lower IF and NP but higher average power, and I’d say is more aerobically challenging, so can maybe see some value in seeing the planned AP and NP numbers as well as IF. Having said that I never really consider AP, NP or IF in isolation when looking for a workout as they all ignore other important factors.

Oh and, Inappropriate Factor leads to Totally Silly Score. Have to get that in, of course :grin:


@AkaPete How do I get access to the .fit file? Where is it? Can I open it in Excel?
Could this be used to edit out power spikes (2500W!) and recalculate 1s Power?

@jkorngold It’s a bit of a process, but here’s what I figured out to do. Perhaps there’s an easier way. Or perhaps someday SYSTM will let us download a CSV file directly and save all the trouble. My instructions assume you are at a computer. I’m doing this from a PC. I think it is similar for a Mac.

  1. You get the .fit file by sharing a workout with yourself via email. To do that:

    • Go to Settings>Authorized Apps and turn on “Send completed activities to your email”
    • Then go to your calendar and open up the activity you want. Click the three dots next to the the Edit button and click on Share. Click share. Don’t worry if it is already shared with other apps. In my experience, it doesn’t duplicate.
    • Go to your email and open the shared activity. The download the .fit file. If you want, give it a memorable name.
  2. Now you have a binary file with all the data you want in an unreadable format. After much experimentation and searching, I found a free app called GoldenCheetah. Not the best in the world, but it successfully converted my fit file to a csv file that excel could read.

    • If you’re comfortable, download it and install it.
    • Open GoldenCheetah. Ignore error messages (I always get one about the R library), set up an athlete (I just put in my name), then click the athlete name on the list or otherwise cause the main window to open.
    • Click Activity>Import from File and select your .fit file. The import will appear to freeze halfway through. Just click Save and it seems to work fine.
    • Select the file from the left side and click Activity>Export. Pick a location and type a name.

Now you have a .csv version of your .fit file. At least the ones from SYSTM come with data in one second increments. Enjoy!

And let me know if you come up with an easier way.

I didn’t answer the second part of your question. Yes and no. Yes–you can recalculate anything you want. No–I’m not aware of any way to upload it back into SYSTM. If you track workouts on Strava or somewhere else, there might be a way to edit the csv file and convert it back to a .fit file that can be uploaded to Strava (say), but I’ve not tried that and don’t know.

Thank you very much for this!
I am data geek and none of this process phases me, but ultimately, I realize that the effort will not pay off for me. I like to suffer on my trainer with videos, but I prefer to do my numerical suffering in other domains.

I do a video. I suffer. I feel great! The numbers don’t change that.

1 Like

I get that. Suffer well in all domains of your choosing!