← All metrics

Performance thresholds

CP/W’, FTP, critical speed/D’, and VDOT — the modeled anchors fit from your own recorded best efforts.

Illustrative power-duration curve shape Illustrative example — not a real athlete
Illustrative power-duration curve shape
1min5min20min60min

W

Functional Threshold Power (FTP)

A practical, single-number estimate of the highest power you can sustain for about an hour, taken from one 20-minute best effort — the anchor most of your other numbers (Intensity Factor, TSS) are scaled against.

Worked example Verified real-world example
  1. FTP = 0.95 × 20-minute best-effort power.
  2. Froome’s team-published lab FTP sits at ≈ 420 W.
  3. Solving backward: 20-minute power ≈ 420 / 0.95 ≈ 442 W at the same fitness.

A published elite lab FTP, run through the exact same field-test formula MyThreshold applies to your own 20-minute effort.

Source: Chris Froome’s team-released lab FTP, reported across multiple cycling outlets

Formula, provenance & citation
Formula
FTP = ftp_pct × mmp(20 min), default ftp_pct = 0.95
Inputs
The 20-minute point of your mean-maximal power curve; ftp_pct=0.95, mmp_duration_s=1200 (config).
Provenance
estimated
Unit
W
Method
95%-of-20-min field-test heuristic
Citation
Allen H., Coggan A. — Training and Racing with a Power Meter, 2nd ed.
Licensing note
"FTP" is a term popularized by TrainingPeaks/Peaksware (Coggan/Allen) for a concept with a public formula and protocol.
Implementation pointer
api/backend/backend/pipeline/metrics/thresholds.py:213 (compute_ftp). Tests: api/backend/tests/pipeline/test_metrics_thresholds.py.

Critical Power / W’

CP is the power you could theoretically hold indefinitely; W’ is a finite reserve above CP that drains during harder efforts and has to be recovered before you can dip into it again.

Worked example Illustrative example — not a real athlete
  1. Two points from a power-duration curve: 320 W at 300 s, 280 W at 1,200 s.
  2. CP = (P1·t1 − P2·t2) / (t1 − t2) = (320·300 − 280·1200) / (300 − 1200) ≈ 267 W
  3. W’ = (P1 − P2) / (1/t1 − 1/t2) = (320 − 280) / (1/300 − 1/1200) ≈ 16,000 J (16 kJ)

CP ≈ 267 W, W’ ≈ 16 kJ — fit by ordinary least squares over your own mean-maximal power curve, not a single field test.

Formula, provenance & citation
Formula
P = W’/t + CP (2-parameter Monod-Scherrer model), fit by OLS of P on 1/t over curve points in [120s, 1200s]
Inputs
Mean-maximal power curve points; fit_min_s=120, fit_max_s=1200 (config).
Provenance
computed
Unit
CP: W; W’: J
Method
Monod-Scherrer 2-parameter critical power model
Citation
Monod H., Scherrer J. (1965); Hill D.W. (1993), Sports Medicine — The critical power concept.
Licensing note
No trademarked vendor term.
Implementation pointer
api/backend/backend/pipeline/metrics/thresholds.py:131 (critical_power). Tests: api/backend/tests/pipeline/test_metrics_thresholds.py.

VDOT (Daniels-Gilbert Oxygen Power)

A single fitness number derived from one race performance, usable to compare your fitness across completely different race distances.

Worked example Verified real-world example
  1. distance = 42,195 m, time = 7,235 s → speed v = 42195 / (7235/60) ≈ 349.9 m/min
  2. VO2 = −4.60 + 0.182258×v + 0.000104×v² ≈ 71.9 mL/kg/min
  3. %VO2max = 0.8 + 0.1894393×e^(−0.012778×120.58) + 0.2989558×e^(−0.1932605×120.58) ≈ 0.8405
  4. VDOT = 71.9 / 0.8405 ≈ 85.5

A VDOT of ≈85.5 off the current ratified world record, against a published median-runner VDOT of ≈33.5 — roughly 2.6× higher. That 2.6× comparison ratio is MyThreshold’s own computation applying the published formula to a published median-finish-time dataset, not itself an independently published figure.

Source: Kelvin Kiptum’s ratified marathon world record (2:00:35)

Formula, provenance & citation
Formula
v = distance_m/(time_s/60); VO2 = c0+c1·v+c2·v²; %VO2max = base+a1·e^(b1·t)+a2·e^(b2·t); VDOT = VO2/%VO2max
Inputs
One best-effort distance_m and time_s; vo2_coeffs, pct_vo2max coefficients (config).
Provenance
computed
Unit
VDOT
Method
Daniels-Gilbert Oxygen Power model
Citation
Daniels J., Gilbert J. (1979) — Oxygen Power.
Licensing note
"VDOT" is Jack Daniels’ coined term, closely associated with Daniels’ Running Formula and commercial tools that implement it; the underlying formula is not licensed software. Attributed to Daniels & Gilbert (1979).
Implementation pointer
api/backend/backend/pipeline/metrics/thresholds.py:342 (vdot), thresholds.py:368 (compute_vdot). Tests: api/backend/tests/pipeline/test_metrics_thresholds.py.
← Back to mythreshold.ai