EnduranceHub
Performance Course

VDOT — VO₂max Daniels

Estimation de VO₂max en course à pied à partir d'une performance.

01

À quoi ça sert

Le VDOT est l'estimation du VO₂max fonctionnel de Jack Daniels, calculée à partir d'une performance de course réelle (distance + temps). Elle permet d'estimer ton niveau aérobie sans test laboratoire et surtout d'en déduire tes allures d'entraînement optimales (cf. allures-daniels). Une source pure par sport (Bloc 84) : EnduranceHub impose une méthodologie unique par discipline — plus de mélange Firstbeat / Daniels / Coggan dans une même courbe. - Running — priorité Firstbeat Garmin (source device, champ WellnessDay.vo2max). Fallback automatique sur Daniels VDOT calculé depuis les activités course (Activity.vo2max_daniels, filtre ≥ 3 km / ≥ 15 min / capteur FC) si aucun point Firstbeat n'est disponible sur la période. - Cycling — formule Coggan & Allen 2010 (Activity.vo2max_coggan), une valeur par activité cycliste éligible (NP > 0, ≥ 20 min, poids athlète connu, et effort proche du seuil — IF = NP/FTP ≥ 0,85 : une sortie facile/endurance ne produit pas de point, sinon le VO₂max serait sous-estimé). - Saisie manuelle — si SportSettings.vo2max_source == 'manual', aucune tendance n'est calculée, la valeur saisie est affichée telle quelle et n'est jamais écrasée par l'auto-calibration post-sync. - Garde-fous : le running (Daniels) rejette toute valeur hors de [20, 90] mL/kg/min (plancher à 20 = vitesse de marche), le cycling (Coggan) rejette hors de [15, 90] mL/kg/min (filtrage des artefacts sur efforts maximaux isolés ou FTP aberrante).

02

Interprétation

Un VDOT à 45 correspond grossièrement à un 10 km en 44 min ou un marathon en 3h30 pour un homme entraîné. Un VDOT > 60 est un niveau élite régional.

Débutant

≈ 30 mL/kg/min — reprise ou sédentaire actif

Intermédiaire

≈ 40 mL/kg/min — 3-4 séances/sem régulières

Entraîné

≈ 50 mL/kg/min — compétiteur amateur régulier

Confirmé

≈ 60 mL/kg/min — régional fort / marathonien 3h

Élite

70+ mL/kg/min — national / international

03

Évolution

Le VDOT évolue lentement, sur des cycles de 8 à 12 semaines. Les gains typiques sont de 1 à 3 points par an chez un athlète intermédiaire. Un gain rapide signale souvent une meilleure exécution du test plus qu'un gain physiologique réel. Pipeline Bloc 84 : à chaque synchronisation, metric_computation.compute_all_metrics recalcule les colonnes dédiées Activity.vo2max_daniels (course) et Activity.vo2max_coggan (vélo) pour toute activité éligible. L'agrégation sur 90 j est ensuite assurée par services/analytics/vo2max_trend.py. Un backfill admin (POST /api/admin/backfill/vo2max-per-activity) permet de recalculer l'historique complet en cas de changement de formule ou de données. Delta « sur N j » robuste : le chiffre de tendance affiché compare la médiane des premiers points à la médiane des derniers (pas un simple dernier − premier), ce qui rejette une mesure isolée aberrante (ex. une estimation Garmin erratique). Il n'apparaît que si la fenêtre contient assez de points sur au moins 14 jours — sinon « Pas assez de points pour un delta ». Un −20 ml/min/kg en 3 mois n'est pas physiologique : c'est presque toujours un point aberrant, désormais filtré.

04

Formule

v=distancemdureemin%VO2max=0.8+0.1894393e0.012778t+0.2989558e0.1932605tVO2=4.60+0.182258v+0.000104v2VDOTrunning=VO2%VO2maxVO2maxcycling=FTPWpoidskg×10.8+7v = \frac{distance_m}{duree_{min}} \\[4pt] \%VO_{2}max = 0.8 + 0.1894393 \cdot e^{-0.012778 t} + 0.2989558 \cdot e^{-0.1932605 t} \\[4pt] VO_{2} = -4.60 + 0.182258 v + 0.000104 v^2 \\[4pt] VDOT_{running} = \frac{VO_2}{\%VO_{2}max} \\[8pt] VO_{2}max_{cycling} = \frac{FTP_W}{poids_{kg}} \times 10.8 + 7

Running — la 2ème équation donne le pourcentage de VO₂max soutenable pour la durée t (min), la 3ème le coût énergétique en mL/kg/min pour une vitesse v (m/min). Le résultat est stocké par activité dans Activity.vo2max_daniels et agrégé sur 90 j pour la tendance. Cycling — formule Coggan & Allen (2010, *Training and Racing with a Power Meter*, 2e éd.) : VO₂max = (FTP_W / poids_kg × 10.8) + 7. La FTP est l'entrée directe (estimée ailleurs depuis le NP 20 min ≈ 0.95 × NP). Stockée dans Activity.vo2max_coggan. Nécessite un capteur de puissance et un poids athlète à jour. Garde-fous : running rejeté hors de [20, 90] mL/kg/min, cycling rejeté hors de [15, 90].

Source : Daniels (2005) — backend/app/utils/vdot.py:13-42 (compute_vdot) · Coggan & Allen (2010) — backend/app/services/fitlab_metrics/sport_specific.py:204-231 (compute_vo2max_cycling) · Pipeline per-activity : backend/app/services/import_helpers/metric_computation.py:compute_all_metrics (colonnes Activity.vo2max_daniels + Activity.vo2max_coggan) · Agrégation tendance : backend/app/services/analytics/vo2max_trend.py · Orchestration sport settings : backend/app/services/zone_calibration.py:compute_vo2max_all_sports

Le calculateur VDOT interactif est réservé aux comptes (gratuit pendant la beta). Créer un compte →
05

Limites

  • Firstbeat Garmin (course) : ne couvre que le running et nécessite un device compatible (Fenix, Forerunner 245+, Venu 2…). Absent des wearables non-Garmin et des montres entrée de gamme.
  • Running (Daniels fallback) : valable sur plat. Sous-estime les spécialistes des courses longues (> marathon) et surestime les spécialistes de demi-fond.
  • Running : très sensible à la qualité des activités prises en compte (dénivelé, vent, température). Le filtre ≥ 3 km / ≥ 15 min limite les faux positifs mais ne les élimine pas.
  • IMC > 30 (obésité) : VDOT non validé sur cette population. La courbe Daniels a été calibrée sur coureurs entraînés (IMC 19–24). Le VDOT sous-estime la VO₂max réelle en cas de surcharge pondérale.
  • Coureurs débutants (< 6 mois d'entraînement structuré) : corrélation VDOT ↔ VO₂max dégradée — économie de course instable, mauvaise gestion d'allure en test. L'écart attendu est plus large qu'un coureur confirmé.
  • Écart vs laboratoire : jusqu'à ±5 mL/kg/min selon Daniels lui-même. Le VDOT reste une estimation de performance, pas une mesure médicale.
  • Cycling (Coggan) : nécessite un capteur de puissance + poids athlète à jour + NP ≥ 20 min. Dans le cas contraire, aucune valeur n'est calculée. Une FTP obsolète fausse également la comparaison entre périodes.
  • Saisie manuelle : désactive le calcul automatique. Tant qu'une valeur manuelle est active pour un sport, la tendance n'est pas affichée — repasser la source en auto pour réactiver l'agrégation.
  • Pas de mélange cross-sport : la courbe Run et la courbe Ride sont toujours distinctes (couleurs séparées quand sport=Tous). Comparer les niveaux Run vs Ride bruts n'a pas de sens (la musculature sollicitée diffère).
  • Garde-fous : le running (Daniels) plafonne le plancher à 20 mL/kg/min (record 5000 m ≈ VDOT 85) et le cycling (Coggan) à 15 ; les deux rejettent au-dessus de 90. Une valeur extrême réelle (ex. athlète élite > 90) sera rejetée — saisir alors la valeur manuellement (source = manual), elle ne sera pas écrasée.
  • Ne remplace pas un test VO₂max en laboratoire pour des décisions médicales.
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é