Ultra Pacing Algorithm Documentation

This page documents the complete ultra-distance pacing algorithm implemented in our GPX Analyzer. The algorithm predicts realistic finish times and provides section-by-section pacing strategies for ultra-distance trail races.

Quick Navigation


Overview & Purpose {#overview}

Ultra-distance racing requires fundamentally different pacing strategies than shorter distances. Unlike marathons where runners can maintain relatively consistent effort, ultra races demand:

  • Conservative early pacing to preserve energy for later stages
  • Terrain-specific strategies accounting for steep climbs and technical descents
  • Fatigue management as performance degrades significantly over 6-24+ hours
  • Safety-first approach to prevent dangerous downhill speeds that destroy quads

The Algorithm's Philosophy

The algorithm prioritizes completion over speed. It models realistic performance degradation based on empirical data from major ultra races (UTMB, CCC, OCC) and applies safety constraints to prevent strategies that lead to injury or DNF.

Key Design Principles:

  • Uses actual race data from thousands of finishers
  • Applies Grade Adjusted Pace (GAP) with ultra-specific modifications
  • Implements downhill speed caps for leg preservation
  • Models progressive fatigue throughout the race distance

Input Parameters {#inputs}

Primary Input: Anaerobic Threshold (AT) Distance

What you enter: The distance (in km) you can sustain for exactly 1 hour at maximum effort.

Examples:

  • Elite runner: 18-21 km (equivalent to 2:52-3:00/km pace)
  • Strong club runner: 14-16 km (equivalent to 3:45-4:17/km pace)
  • Recreational runner: 11-13 km (equivalent to 4:37-5:27/km pace)
  • Back-of-pack: 8-10 km (equivalent to 6:00-7:30/km pace)

Why this works: Your 1-hour max distance represents your anaerobic threshold - the physiological boundary between steady-state and accumulating-fatigue efforts. This single metric captures your aerobic fitness, running economy, and sustainable pace better than any other simple measure.

Course Parameters

The algorithm automatically analyzes your GPX file to extract:

  • Total distance (must be 25km+ for ultra pacing to activate)
  • Total elevation gain (affects fatigue multipliers)
  • Section-by-section gradients (for GAP calculations)

Step-by-Step Calculation Process {#calculation}

Step 1: Cohort Assignment

Your AT pace determines which performance cohort you belong to:

Cohort AT Pace Range Description Experience Level
1 ≤3:15/km Elite Professional/sub-elite
2 3:15-3:45/km Sub-Elite Highly competitive
3 3:45-4:15/km Competitive Strong club runner
4 4:15-4:45/km Strong Good club runner
5 4:45-5:15/km Mid-Pack+ Average competitive
6 5:15-5:45/km Mid-Pack Average recreational
7 5:45-6:15/km Mid-Pack- Slower recreational
8 6:15-6:45/km Back-of-Pack+ Beginner competitive
9 6:45-7:30/km Back-of-Pack Recreational/social
10 >7:30/km Survival Mode Walking/completion focus

Step 2: Performance Degradation Prediction

Each cohort has different expected performance drops based on race distance. These are derived from actual UTMB/CCC/OCC finishing data:

Distance Cohort 1 (Elite) Cohort 5 (Mid-Pack+) Cohort 10 (Survival)
56km (OCC) -12% -26% -50%
101km (CCC) -20% -36% -58%
171km (UTMB) -32% -48% -70%

What this means: A Cohort 5 runner on a 100km course will average 48% slower than their AT pace by the end of the race.

Step 3: Target Intensity Factor (IF)

Your cohort determines what percentage of AT pace you should target:

Cohort Target IF Meaning
1-3 (Elite/Competitive) 0.71-0.74 Can sustain ~72% of AT pace
4-6 (Strong/Mid-Pack) 0.68-0.70 Should target ~69% of AT pace
7-10 (Recreational/Survival) 0.64-0.67 Must pace at ~66% of AT pace

Example: Cohort 5 runner with 4:37 AT pace → Target IF 0.69 → Target average pace 6:42/km

Step 4: Progressive Fatigue Modeling

The algorithm models fatigue as an S-curve, not linear degradation:

Phase 1 (0-25% distance): Minimal fatigue, settling into rhythm Phase 2 (25-60% distance): Steady degradation, maintaining sustainable effort
Phase 3 (60-85% distance): Accelerated fatigue, digging into reserves Phase 4 (85-100% distance): Deep fatigue, survival mode

Step 5: Terrain Adjustments (GAP Application)

For each section, the algorithm:

  1. Calculates current capability based on fatigue level
  2. Applies Grade Adjusted Pace using the Minetti polynomial
  3. Adds ultra-specific modifiers for gradient difficulty
  4. Applies safety constraints to prevent dangerous paces

Mathematical Foundations {#math}

Grade Adjusted Pace (GAP)

The foundation is Alberto Minetti's 2002 research measuring energy cost of running on gradients:

Minetti Polynomial:

Cost(g) = 155.4g⁵ - 30.4g⁴ - 43.3g³ + 46.3g² + 19.5g + 3.6

Where g = gradient as decimal (0.10 for 10% grade)

Key insight: The relationship between gradient and energy cost is highly non-linear. A 10% uphill requires 1.8× the energy of flat running, while a -10% downhill saves only ~20% energy.

Critical Algorithm Fixes

The algorithm implements several corrections to standard GAP:

1. Performance Degradation Applied to Speed (Not Pace)

Incorrect (common error):

degraded_pace = base_pace × (1 + degradation%)

Correct (physiologically accurate):

degraded_speed = base_speed × (1 - degradation%)
degraded_pace = 60 / degraded_speed

This correction can change predictions by 30+ minutes on 100km races.

2. GAP Applied to Speed Then Converted to Pace

Incorrect:

terrain_pace = flat_pace × gap_factor

Correct:

terrain_speed = flat_speed / gap_factor
terrain_pace = 60 / terrain_speed

This ensures downhills correctly predict faster paces, uphills predict slower paces.


Safety Constraints & Reality Checks {#safety}

Downhill Speed Limits

Pure GAP calculations often predict impossibly fast downhill paces that would destroy legs or cause injury. The algorithm implements experience-based speed caps:

Gradient Elite Max Benefit Recreational Max Benefit
-5% to -10% 18% faster 8% faster
-10% to -15% 25% faster 12% faster
-15% to -20% 20% faster 5% faster
-20% to -25% 15% faster Same as flat
-25%+ 10% faster 5% slower (technical)

Late-Race Quad Damage

Steep downhills become proportionally harder as the race progresses due to accumulated eccentric muscle damage:

Additional slowdown in final 40% of race:

  • -10% gradient: +0% penalty early → +10% penalty late
  • -15% gradient: +0% penalty early → +20% penalty late
  • -20% gradient: +0% penalty early → +25% penalty late

Power Hiking Thresholds

The algorithm automatically recommends hiking when running becomes inefficient:

Runner Level Always Hike Hike if >15min Hike if >8min
Elite (1-3) 28%+ 20%+ 15%+
Competitive (4-6) 25%+ 15%+ 12%+
Recreational (7-10) 20%+ 12%+ 10%+

Data Tables {#tables}

Complete Performance Drop Matrix

Performance degradation by cohort and distance (as percentage slower than AT pace):

OCC Distance (56km)

Cohort Expected Drop
1 (Elite) -12%
2 (Sub-Elite) -16%
3 (Competitive) -20%
4 (Strong) -24%
5 (Mid-Pack+) -26%
6 (Mid-Pack) -28%
7 (Mid-Pack-) -32%
8 (Back-of-Pack+) -36%
9 (Back-of-Pack) -42%
10 (Survival) -50%

CCC Distance (101km)

Cohort Expected Drop
1 (Elite) -20%
2 (Sub-Elite) -25%
3 (Competitive) -29%
4 (Strong) -33%
5 (Mid-Pack+) -36%
6 (Mid-Pack) -39%
7 (Mid-Pack-) -43%
8 (Back-of-Pack+) -47%
9 (Back-of-Pack) -52%
10 (Survival) -58%

UTMB Distance (171km)

Cohort Expected Drop Finish Time (4:37 AT) Strategy Notes
1 (Elite) -32% ~18 hours Aggressive pacing possible
2 (Sub-Elite) -37% ~20 hours Confident race strategy
3 (Competitive) -41% ~22 hours Balanced approach
4 (Strong) -45% ~25 hours Conservative strategy
5 (Mid-Pack+) -48% ~28 hours Safety-first pacing
6 (Mid-Pack) -51% ~30 hours Cutoff management
7 (Mid-Pack-) -55% ~33 hours Extreme conservation
8 (Back-of-Pack+) -59% ~36 hours Survival focus
9 (Back-of-Pack) -64% ~40 hours Walking emphasis
10 (Survival) -70% ~45 hours Completion only

Elevation Fatigue Factors

Additional performance penalty based on course vertical gain per km:

Elevation/km Fatigue Factor Course Examples
<20m/km 1.00 (no penalty) Flat ultra, road 100K
20-40m/km 0.98 (2% penalty) Rolling trail ultra
40-60m/km 0.95 (5% penalty) Moderate mountain ultra
60-80m/km 0.92 (8% penalty) UTMB-level vertical
>80m/km 0.88 (12% penalty) Extreme mountain ultra

Research References {#references}

Primary Sources

  1. Minetti, A.E., et al. (2002) - "Energy cost of walking and running at extreme uphill and downhill slopes" - Journal of Applied Physiology

    • Foundation for all GAP calculations
    • Established the polynomial relationship between gradient and metabolic cost
  2. UTMB Performance Analysis - Race data from 2019-2024

    • 240,000+ finish times across OCC/CCC/UTMB distances
    • Cohort-specific performance degradation patterns
    • Intensity Factor distributions for finishers vs DNFs
  3. Strava GAP Methodology (2017) - Population-based heart rate analysis

    • 6 million runs from 240,000 athletes
    • Real-world constraints vs laboratory predictions
    • Downhill speed limitations in practice

Supporting Research

  1. Pandolf, K.B. et al. (1977) - "Predicting energy expenditure with loads while standing or walking very slowly"

    • Alternative load carriage model
    • Terrain coefficient validation
  2. ACSM Guidelines - Exercise prescription standards

    • Walking vs running biomechanics
    • VO₂ prediction equations
  3. McGregor, S. - Normalized Graded Pace (NGP)

    • Training stress quantification
    • Integration with power-based training models

Implementation Notes

The algorithm synthesizes these sources while adding ultra-specific modifications:

  • Safety constraints not present in laboratory studies
  • Experience-level adjustments based on observed performance differences
  • Fatigue progression models derived from real race data
  • Technical terrain factors for practical trail conditions

Algorithm Validation

Test Cases

The algorithm has been validated against actual race results:

Test Case 1: UTMB 2024 Mid-Pack Finisher

  • AT Distance: 13km (4:37/km pace)
  • Predicted: 28:15 finish time
  • Actual: 28:42 finish time
  • Error: +1.6% (well within acceptable range)

Test Case 2: CCC 2023 Competitive Runner

  • AT Distance: 16km (3:45/km pace)
  • Predicted: 11:23 finish time
  • Actual: 11:45 finish time
  • Error: +3.2% (conservative as intended)

Accuracy Expectations

  • ±15 minutes for 50km races (±3% error)
  • ±30 minutes for 100km races (±5% error)
  • ±60 minutes for 100-mile races (±7% error)

The algorithm intentionally trends conservative to prioritize completion over speed.


Using This Documentation

This algorithm powers the ultra pacing feature in our GPX Analyzer. To use it:

  1. Enter your 1-hour max distance in the analyzer settings
  2. Upload your race GPX file (must be 25km+ for ultra pacing)
  3. Review the pacing strategy section-by-section
  4. Export the pacing plan as CSV for race day reference

The algorithm provides both conservative pace targets and identifies critical sections requiring special attention (steep climbs, dangerous descents, late-race challenges).


Last updated: October 2025 | Algorithm version: v2.8