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:
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:
- rules-based first-pass estimates for robustness
- athlete-specific coefficient fitting over time
- 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:
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
Recommended implementation phases
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
- Audit available athlete data for the last 8 to 12 weeks.
- Define the canonical athlete-day and ride-metrics schemas.
- Build a first-pass day classifier, rest, easy, endurance, hard.
- Build a baseline plus ride-cost estimator.
- Add rolling calibration from weight trend, intake trend, and recovery response.
- 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