SLAM — Stochastic Long-horizon Adaptive Model for VO₂ Max forecasting
SLAM is a state-space forecasting stack that treats VO₂ Max as a slowly-varying latent state, observed daily through wrist-wearable signals. The observation model is a SleepFM-derived foundation-model encoder; the transition model is a physiologically-constrained stochastic differential equation with training-load drift. This page documents the assumptions, inputs, outputs, and interpretation rules that make the estimator on AeroGlyphics and the enterprise API reproducible and reviewable.
What we assume, and where those assumptions break
Model inputs, ranked by information gain
| Input | Status | Definition |
|---|---|---|
| Resting HR (bpm) | Required | Median HR during the deepest 30-min sleep window in the last 7 nights. Wrist PPG at ≥1 Hz. |
| HR max proxy | Required | Either measured HR max from a labelled bout, or age-based estimate: 208 − 0.7 × age (Tanaka, JACC 2001). |
| Age, biological sex | Required | Used for FRIEND norming and Tanaka HR max. Sex is used as a covariate, not to gate access. |
| HRV (RMSSD, ms) | Recommended | Nightly RMSSD from scored sleep. Improves the latent-state Kalman update by ~18% RMSE in our internal cohort. |
| Daily step count + active minutes | Recommended | Proxy for training load; drives the transition model (fitness gain / detraining). |
| Smartwatch VO₂ estimate | Optional | Apple Watch / Fitbit / Garmin native VO₂ Max, when present, is treated as a noisy observation with a device-specific bias term learned during onboarding. |
| CPET VO₂ Max (ml/kg/min) | Optional | A single lab CPET collapses the posterior variance to near-zero at t=0 and anchors the forecast. |
| Weight, height | Optional | Only needed if the user wants absolute VO₂ (L/min) alongside the relative (ml/kg/min) output. |
The forecasting stack
Observation model — SleepFM-derived encoder
A 4-layer transformer encoder, initialized from Stanford-licensed SleepFM weights (585K+ hours of PSG, ~65K participants, Nature Medicine Jan 2026), and fine-tuned on paired wrist-wearable ↔ CPET VO₂ Max data. Output: a per-night embedding zt ∈ ℝ128 and a calibrated point estimate ŷt with a heteroscedastic variance head σt2.
Transition model — training-load SDE
Latent VO₂ Max xt evolves as dx = (α · loadt − β · (x − x*)) dt + σx dWt. α, β, and detraining floor x* are age- and sex-conditional, fit on longitudinal CPET cohorts. Wiener noise σx captures unmodelled biology.
Filter — unscented Kalman + particle rejuvenation
Daily updates use a UKF for tractability; a monthly particle-filter pass corrects for non-Gaussian tails (e.g., illness, injury, altitude exposure). Forecasts are Monte-Carlo rollouts of the transition SDE from the current posterior.
Calibration
Post-hoc isotonic regression on a held-out CPET cohort ensures the 90% credible interval covers 90% ± 2% of held-out truths. Device-specific bias terms (Apple Watch, Fitbit, Garmin, WHOOP, Oura) are learned during a 14-day onboarding window and refreshed quarterly.
What SLAM returns
How to read a SLAM output
Where SLAM should not be used, unmodified
- Persistent AFib or frequent PVCs — HR-based inputs are unreliable; require ECG-grade signal.
- Pregnancy — resting HR and HRV baselines shift; SLAM norms do not apply.
- Beta-blocker or non-DHP CCB use — HR max proxy is invalid; require a measured max or CPET anchor.
- Pediatric (<18) and geriatric (>85) — outside FRIEND norming range; report is descriptive only.
- Under-72h wear — insufficient sleep windows for the observation model; interval is wide by construction.
- Altitude changes >1500 m within the trailing 14 days — transient VO₂ shift, not a fitness change.
Baseline references: Uth N. et al., Eur J Appl Physiol 2004 (HR-ratio VO₂ estimation) · Tanaka H. et al., JACC 2001 (HR max) · Kaminsky L. et al., Mayo Clin Proc 2015 (FRIEND) · Kodama S. et al., JAMA 2009 (MET-mortality) · Mandsager K. et al., JAMA Netw Open 2018 (fitness quartiles) · Thapa R. et al., Nature Medicine Jan 2026 (SleepFM).