How the numbers are calculated

Mosaic — Last updated 18 May 2026

Mosaic produces estimates of fitness, recovery, and race performance from your training history. This page explains the models and constants behind those estimates, so you can judge how much weight to give them. None of the numbers Mosaic surfaces are medical measurements.

Mosaic is not a medical device. Predictions, readiness scores, and load metrics are informational and based on published exercise-physiology models applied to your training data. Always consult a physician before starting or modifying a training programme, and follow professional medical advice for any health condition.

Training load

TSS (Training Stress Score)

Per-session load uses Andrew Coggan's TSS model: TSS = (duration_seconds × NP × IF) / (FTP × 3600) × 100 for cycling. For running we derive an equivalent load via iTRIMP (heart-rate-weighted exercise intensity, per Manzi 2009) and normalise to a TSS-equivalent scale calibrated against the athlete's own training history. Cross-training (swim, strength, hike) is converted to a run-equivalent stimulus via a per-sport discount factor.

CTL, ATL, TSB (Banister impulse-response model)

Fitness, fatigue, and form are modelled as exponentially-weighted moving averages of daily TSS:

This is the Banister impulse-response framework (Banister 1991), as operationalised by TrainingPeaks. The 42/7 day decay constants follow that convention.

ACWR (Acute:Chronic Workload Ratio)

Ratio of 7-day to 28-day rolling load. Mosaic flags values outside roughly 0.8–1.5 as carrying elevated injury risk (Gabbett 2016, Hulin 2014). This is one signal among several in the readiness model; it is not deterministic.

Race time prediction

VDOT (running)

Jack Daniels' VDOT model converts race performances into a VO2max-proxy fitness number, then back into predicted times at other distances. Mosaic derives VDOT from your fastest recent race-effort runs across distances, weights by recency, and projects to your target race using fatigue-resistance and course-specific factors.

FTP / Critical Power (cycling)

FTP (Functional Threshold Power) is estimated from your strongest 20-minute power efforts (using Coggan's 0.95 factor) or from the critical-power asymptote of multiple maximal-effort durations (Monod & Scherrer 1965). Bike race time prediction uses the Coggan model with a duration-dependent power decay.

CSS (swimming)

CSS (Critical Swim Speed) is computed from 200m + 400m time-trial pairs (Wakayoshi 1992). Open-water swims apply a deficit relative to pool times where the data warrants it.

Course factors and durability

Course-specific factors (elevation, surface, expected temperature) adjust the baseline race-day prediction. Durability — your ability to hold pace late in a race — is modelled from how much your pace decays in the final third of long efforts in your training history.

Readiness

Daily readiness blends signals from heart rate variability (HRV), resting heart rate, last night's sleep duration, training stress balance, and recent acute load. Each component is z-scored against the athlete's own rolling baseline (typically 28 days) so the score reflects your personal trend, not a population norm. HRV and resting heart rate are read from Apple Health or Garmin where available; if neither is connected, the score uses TSB and ACWR alone.

Limitations

References

Full per-formula derivations, justifications and limitations are maintained in the project's internal SCIENCE_LOG.md, available on request.

← Back to Mosaic