Athlete energy model proposal

Objective

Design an athlete-specific energy model that estimates daily energy expenditure and ride-specific energy cost from the athlete's own data, then uses that model to generate better calorie estimates for rest days, easy days, endurance days, and hard days.

The model should move beyond generic formulas and answer questions such as:

  • what a 3-hour endurance ride actually costs for this specific athlete
  • what this athlete's likely total daily energy burn is on a rest day
  • what this athlete's likely total daily energy burn is on an easy ride day
  • what this athlete's likely total daily energy burn is on an endurance day
  • what this athlete's likely total daily energy burn is on a hard day
  • how those estimates should change across time as training load, body mass, fitness, fatigue, and hormonal or biological context shift

Why this matters

Generic calorie formulas are too blunt for high-performance coaching.

Two athletes can complete the same nominal 3-hour endurance ride and pay a meaningfully different energy cost because of differences in:

  • body mass
  • sex and endocrine context
  • economy and durability
  • terrain and coasting profile
  • carbohydrate oxidation pattern
  • fatigue state
  • fueling during the ride
  • training history
  • environmental conditions

A useful coaching model should therefore estimate energy cost from the athlete's real observed history, not only from session labels or one-size-fits-all tables.

Proposed output

The feature should produce three practical outputs.

1. Athlete energy profile

A living athlete-specific profile with current assumptions and coefficients, including:

  • resting or baseline daily energy burn estimate
  • body-mass-adjusted movement cost assumptions
  • ride energy cost coefficients
  • training-load adjustment factors
  • fatigue adjustment factors
  • confidence level and last calibration date
  • biological modifiers, including sex-specific settings and other athlete-specific physiological factors

2. Day-level energy estimates

For each day, estimate:

  • basal or baseline burn
  • non-exercise daily movement burn
  • exercise burn
  • total daily energy expenditure, TDEE
  • uncertainty range
  • whether the estimate came from direct model fit, fallback heuristics, or partial data

3. Planning jobs

An athlete-specific calorie estimation job that classifies and estimates recommended intake targets for:

  • rest days
  • easy days
  • endurance days
  • hard days

This job should support both:

  • descriptive mode, what the day likely cost
  • prescriptive mode, what intake range is probably appropriate

What would be required

Data requirements

To build a usable individualized model, we would need several weeks of reasonably complete linked data, not isolated single-day entries.

Minimum viable dataset

At minimum, the model needs 4 to 8 weeks of data with enough completeness to link intake, training, and body response.

Required inputs:

Data stream Why it matters Minimum viable quality
Body weight trend Helps identify energy balance direction over time At least 3 to 5 weigh-ins per week, ideally morning body weight
Nutrition intake trend Gives energy-in and macronutrient context Daily calorie and macro estimates, even if imperfect
Training load Captures external and internal stress Daily duration, TSS or equivalent, session type, intensity distribution
Ride files Gives real mechanical work and session structure Power, duration, distance, elevation, HR when available
Fatigue and recovery response Helps explain changing cost and adaptation Subjective readiness, soreness, HRV, resting HR, sleep, comments
Calendar context Distinguishes rest, easy, endurance, hard, travel, illness Reliable day labels and major context events

High-value additional inputs

These are not strictly required for a first version, but materially improve quality.

  • resting heart rate trend
  • HRV trend
  • sleep duration and sleep quality
  • menstrual-cycle or hormonal-cycle context, where appropriate and athlete-approved
  • thyroid or endocrine context, where relevant and athlete-approved
  • illness, injury, and travel markers
  • ambient temperature and altitude
  • indoor versus outdoor session flag
  • cadence and terrain characteristics
  • fueling during rides, especially carbohydrate per hour
  • post-ride hunger, soreness, and next-day freshness markers
  • off-bike activity or step count
  • body composition snapshots, if available and clinically appropriate

Athlete characteristics needed for tuning

The model should not assume a generic athlete. It should support athlete-specific configuration fields such as:

  • sex
  • age
  • height
  • body mass
  • training age
  • discipline, for example cyclocross, road, MTB, gravel
  • known endocrine or health context that affects energy availability or recovery
  • known body-mass sensitivity or volatility
  • known underfueling history, if relevant
  • phase of season

For tuneability across female versus male and other biological contexts, the model should allow explicit modifiers rather than hiding them in one generic constant.

Examples:

  • different body-composition priors
  • different expected resting expenditure ranges
  • different sensitivity to low energy availability indicators
  • cycle-aware interpretation where available
  • endocrine-specific caution flags

This should be implemented as configurable model parameters, not hard-coded assumptions.

Modeling approach

A good first version should be layered.

Layer 1, baseline daily burn

Estimate non-exercise baseline energy needs from:

  • sex
  • age
  • height
  • body mass
  • body weight trend
  • steps or daily movement, if available
  • season phase and recovery state

This is the floor of the model, not the full answer.

Layer 2, session energy cost

Estimate exercise energy cost from actual session data.

For rides, use available signals such as:

  • duration
  • average power and normalized power
  • total work in kJ
  • intensity factor
  • elevation gain
  • heart-rate response
  • cadence profile
  • terrain profile
  • indoor versus outdoor
  • coasting fraction
  • temperature and environmental stress when available

The simplest strong starting point for cycling is:

  • use ride-file work in kJ as the primary anchor when power is available
  • then apply athlete-specific correction factors for metabolic cost, inefficiency, body mass, and terrain/context

That gives a much better estimate than using only duration or ride label.

Layer 3, load and fatigue adjustment

The same ride may cost more or less depending on state.

Adjust estimates based on:

  • recent ATL or short-term load
  • recent CTL or chronic load
  • recent readiness markers
  • sleep and recovery quality
  • accumulated fatigue
  • travel or illness

This layer matters because a fatigued athlete may show higher physiological cost, worse economy, or different recovery burden for the same nominal external work.

Layer 4, body-response calibration

This is what makes the model individualized instead of theoretical.

Use rolling back-calculation from:

  • observed body-weight trend
  • logged intake trend
  • estimated training cost
  • recovery markers and training response

The purpose is to tune athlete-specific coefficients over time.

Examples:

  • if the model repeatedly predicts maintenance but body weight trends down during stable training, estimated burn is likely too low or intake logging is incomplete
  • if the model predicts a large deficit but body mass is stable and recovery is strong, cost assumptions may be too high
  • if hard days repeatedly precede unusual soreness, low readiness, or hunger despite nominally adequate intake, the hard-day multiplier may need to rise

Suggested architecture

Inputs layer

Build or normalize daily records for:

  • body weight
  • nutrition intake
  • completed training
  • ride-file metrics
  • subjective and objective recovery markers
  • athlete metadata

Feature layer

Create a daily feature table with fields such as:

  • date
  • body weight, rolling 7-day weight, rolling 21-day weight
  • calories in, carbs, protein, fat
  • ride duration
  • ride kJ
  • TSS
  • IF
  • climbing meters
  • time in zone
  • easy or endurance or hard day classification
  • sleep and HRV signals
  • readiness score
  • travel or illness flags
  • prior 3-day and 7-day load
  • next-day recovery response

Modeling layer

Use a hybrid system:

  1. rules-based first-pass estimates for robustness
  2. athlete-specific coefficient fitting over time
  3. confidence scoring based on data completeness

This avoids overfitting while still personalizing.

A practical first implementation could use:

  • baseline formula plus correction factors
  • cycling energy anchored to ride kJ when available
  • fallback estimates for non-power sessions
  • rolling Bayesian or regression-style coefficient updates
  • explicit uncertainty bands

Outputs layer

Persist:

  • daily estimated burn
  • ride-specific estimated cost
  • recommended intake range by day type
  • model confidence
  • change log when coefficients are recalibrated

Classification logic needed for calorie jobs

The calorie estimation job needs clean day-type classification.

Recommended first-pass classes:

Day type Typical definition
Rest day No meaningful training load
Easy day Low-intensity ride or short support session, low stress
Endurance day Longer aerobic session with meaningful duration but controlled intensity
Hard day Threshold, VO2, race, heavy mixed load, or high total cost day

The job should not rely only on workout title. It should classify from actual session characteristics, for example:

  • duration
  • ride kJ
  • TSS
  • IF
  • time above threshold
  • combined bike plus strength load
  • recovery cost of prior days

What I would need to build this

1. Clean and linked athlete data

I would need a stable, joinable daily dataset that connects:

  • intake entries
  • body weight entries
  • completed training data
  • ride file metrics
  • fatigue and recovery markers
  • athlete metadata

Without this linkage, the model will remain descriptive but not individualized.

2. A canonical daily data store

We would need one canonical athlete-day table or derived store, probably generated from existing logs plus TrainingPeaks data, with one row per day and normalized fields.

3. A canonical ride metrics store

For completed rides, we would need a normalized file-level dataset with fields such as:

  • workout ID
  • date
  • duration
  • distance
  • work kJ
  • NP
  • average power
  • IF
  • TSS
  • elevation gain
  • HR metrics
  • cadence metrics
  • environment metadata when available

4. Body weight logging consistency

The model becomes much stronger if body weight is measured consistently enough to detect trend rather than noise.

5. Better recovery-response capture

A short daily readiness layer would help substantially, for example:

  • sleep

  • soreness n- mood or motivation

  • perceived fatigue

  • HRV or resting HR if available

6. Decision on privacy and sensitivity boundaries

If the model will use sex-specific, cycle-specific, endocrine, or health-context variables, we need explicit decisions about:

  • what can be stored
  • what can be modeled
  • what should only be used as a caution flag
  • what should never be surfaced in athlete-facing output

7. Calibration policy

We need to decide how the model self-tunes.

Examples:

  • recalibrate weekly
  • recalibrate only when 14 or more recent days meet minimum completeness
  • freeze coefficients during illness or travel disruption
  • allow operator review before updating athlete-specific coefficients

Phase 1, data audit and schema

Goal: determine whether the current athlete data is sufficient.

Deliverables:

  • inventory of available data streams
  • completeness audit for the last 8 to 12 weeks
  • proposed canonical athlete-day schema
  • proposed canonical ride-metrics schema
  • data quality flags and missing-field map

Phase 2, first-pass descriptive model

Goal: produce usable day-level burn estimates without overclaiming precision.

Deliverables:

  • baseline burn estimate
  • session energy estimate from completed ride files
  • day classification logic, rest, easy, endurance, hard
  • uncertainty bands
  • simple daily calorie estimation job

Phase 3, individualized calibration

Goal: adapt the model to the athlete's real observed response.

Deliverables:

  • rolling coefficient tuning from weight trend, intake trend, and training cost
  • fatigue and recovery adjustment factors
  • improved athlete-specific day-cost estimates
  • athlete energy profile object

Phase 4, planning automation

Goal: make the model useful in daily operations.

Deliverables:

  • athlete-specific calorie estimation job for rest, easy, endurance, and hard days
  • planned-day forward estimates and completed-day retrospective estimates
  • operator-facing confidence and explanation output
  • alerts when observed response diverges from model assumptions

Risks and limitations

  • intake logging is always noisy, especially restaurant meals, unlogged snacks, and intra-day omissions
  • body weight is noisy and can be distorted by glycogen, hydration, menstrual phase, sodium, travel, and inflammation
  • ride energy cost is easier to estimate than total daily burn
  • non-exercise movement can vary significantly and may be invisible without steps or similar data
  • hard biological differences should be modeled carefully and ethically, not turned into crude stereotypes
  • confidence scoring is mandatory, because some days will be well supported and others will be weakly observed

Recommendation

The right first step is not to jump straight to a fully automated calorie target engine.

The right first step is to build the data foundation and a first-pass descriptive model, then tune it against observed athlete response over several weeks.

If the data foundation is strong enough, this feature is very feasible.

If the data foundation is weak, the system can still produce useful estimates, but it should present them as broad guidance ranges rather than precise athlete truth.

Proposed immediate next steps

  1. Audit available athlete data for the last 8 to 12 weeks.
  2. Define the canonical athlete-day and ride-metrics schemas.
  3. Build a first-pass day classifier, rest, easy, endurance, hard.
  4. Build a baseline plus ride-cost estimator.
  5. Add rolling calibration from weight trend, intake trend, and recovery response.
  6. Stand up the athlete-specific calorie estimation job with confidence bands.

Success criteria

This feature would be successful if, after several weeks of calibration, it can:

  • estimate ride cost better than a generic duration-based formula
  • estimate total daily burn within a practically useful coaching range
  • explain why a day is classified as rest, easy, endurance, or hard
  • adjust estimates when body mass, load, recovery, or biological context changes
  • support better intake guidance for athlete-specific easy, endurance, and hard days