TSS & IF
Training Stress Score et Intensity Factor : charge et intensité d'une séance.
À quoi ça sert
Le TSS (*Training Stress Score*) quantifie la charge d'une séance de cyclisme : une heure à FTP = 100 TSS par définition. L'IF (*Intensity Factor*) est le ratio NP/FTP, sans dimension : 1.00 = au seuil, 0.75 = tempo, < 0.55 = récupération. Le TSS est la base du PMC (CTL/ATL/TSB).
Interprétation
Les buckets d'IF ci-dessous donnent une interprétation immédiate de l'intensité de la séance.
IF < 0.55
Récupération active
IF 0.55 – 0.75
Endurance
IF 0.75 – 0.90
Tempo / Sweet spot bas
IF 0.90 – 1.05
Seuil / FTP
IF 1.05 – 1.20
VO₂max
IF > 1.20
Anaérobie / très court
Évolution
Le TSS d'une séance ne "évolue" pas — il est figé. C'est son cumul sur 42 jours qui construit le CTL.
Formule
NP en watts, durée en secondes. Une heure exactement à FTP (NP = FTP, donc IF = 1.0) donne TSS = 100 par construction. Deux heures à IF 0.71 (≈ endurance) donnent aussi ~100 TSS — c'est le produit durée × intensité² qui compte.
Source : Coggan (2003) — Formule : backend/app/services/fitlab_metrics/load.py:395-420 (compute_tss) et :427-442 (compute_intensity_factor). Valeur live last_if : backend/app/routers/guide.py:283-301 (normalisation %→ratio si > 1.5, plancher à 0, PAS de clamp à 1.0 — Sprint 4 GP-FU-1).
Limites
- Dépend de la FTP calibrée correctement — une FTP fausse de 10% fausse tous les TSS.
- Moins pertinent sur des séances très courtes ou ultra-variables (sprints isolés).
- Ne distingue pas le stress musculaire (force) du stress cardiovasculaire.
- Inapplicable sans capteur de puissance — utiliser le repli FC (hrTSS), moins précis.
- Spécifique au vélo : la course utilise le rTSS (allure vs allure seuil + GAP) et la nage le sTSS (allure vs CSS), mêmes mathématiques (IF² × durée_h × 100) avec un ratio de vitesse au lieu de puissance.
last_if(IF de la dernière séance, valeur live) n'est PAS plafonné à 1.0 : un IF > 1.0 est physiologiquement légitime sur les efforts courts intenses (intervalles VO₂max, sprints, test FTP) — cf. le bucket « IF > 1.20 » ci-dessus. Le seul nettoyage appliqué côté backend (Sprint 4 GP-FU-1) : si la valeur stockée dépasse 1.5, elle est interprétée comme un pourcentage (0-100) issu d'un parser FIT et divisée par 100 ; un plancher à 0 garantit la positivité.
Voir aussi
eFTP — FTP estimée
Puissance seuil fonctionnelle (FTP) estimée depuis les meilleures 20 minutes.
NP — Normalized Power
Puissance "physiologiquement équivalente" d'une sortie à allure variable.
CTL — Fitness
Charge chronique d'entraînement (42 jours) : ton niveau de forme de fond.
EF — Efficiency Factor
Puissance (ou vitesse) par battement cardiaque : rendement aérobie.