EnduranceHub
Performance Cyclisme

TSS & IF

Training Stress Score et Intensity Factor : charge et intensité d'une séance.

01

À 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).

02

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

03

Évolution

Le TSS d'une séance ne "évolue" pas — il est figé. C'est son cumul sur 42 jours qui construit le CTL.

04

Formule

IF=NPFTPTSS=durees×NP×IFFTP×3600×100IF = \frac{NP}{FTP} \\[4pt] TSS = \frac{duree_s \times NP \times IF}{FTP \times 3600} \times 100

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).

05

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é.
06

Voir aussi

07

Tags

08

Catégorie

Envie de voir ces concepts appliqués à tes propres données ?

Gratuit pendant la beta · connecté à Intervals.icu · tes données t'appartiennent.

Accueil · Confidentialité