Methodology
Science & Sources
Every score OutPerform shows you is derived from peer-reviewed sports-science and sleep research.
This page documents every algorithm, formula, and the published studies behind each one.
All calculations happen entirely on your device — no data ever leaves your phone.
⚕️ Not a medical device.
OutPerform is a wellness and sports-science tool. The screening indicators (sleep apnea risk, SpO₂ alerts)
are informational only and are never a clinical diagnosis. Always consult a qualified
healthcare professional for medical concerns.
01 — Sleep Performance Score
A 0–100 score that weighs four evidence-based dimensions of sleep quality: efficiency,
restorative content, need fulfillment, and timing consistency.
Sleep Staging
Sleep is categorised into Awake, Core (light NREM: N1 + N2), Deep (slow-wave, N3), and REM stages,
following the standard AASM two-stage scoring model. Apple Watch and most modern wearables use
accelerometry plus heart-rate variability to classify stages in real time against these criteria.
Sources
- Berry R.B. et al. (2018). AASM Manual for the Scoring of Sleep and Associated Events, Version 2.5. American Academy of Sleep Medicine. aasm.org
- Iber C. et al. (2007). The AASM Manual for the Scoring of Sleep and Associated Events. American Academy of Sleep Medicine.
Sleep Efficiency
efficiency = total_sleep_min / time_in_bed_min × 100
Sleep efficiency is the percentage of time in bed actually spent asleep.
Normal efficiency in healthy adults is ≥ 85%. Values below 75% are associated with
insomnia and poor daytime function.
Sources
- Morin C.M. et al. (2006). Psychological and behavioral treatment of insomnia. Sleep, 29(11), 1398–1414.
- Ohayon M. et al. (2017). National Sleep Foundation's sleep quality recommendations. Sleep Health, 3(1), 6–19. doi:10.1016/j.sleh.2016.11.006
Restorative Sleep
restorative_pct = (rem_min + deep_min) / total_sleep_min × 100
restorative_score = clamp(restorative_pct / 40, 0, 1) // 40% = perfect
REM and slow-wave (deep) sleep are the most physiologically restorative stages.
Deep sleep drives growth hormone secretion, immune function, and physical repair.
REM sleep consolidates memory and regulates emotion. Healthy adults spend roughly
15–25% of sleep in deep and 20–25% in REM; 40% combined is used as a ceiling
representing optimal restorative content.
Sources
- Walker M.P. (2017). Why We Sleep. Scribner. Chapter 3–5.
- Dijk D.J., Czeisler C.A. (1995). Contribution of the circadian pacemaker and the sleep homeostat to sleep propensity, sleep structure. Journal of Neuroscience, 15(5), 3526–3538.
- Van Cauter E. et al. (2000). Age-related changes in slow wave sleep and REM sleep. JAMA, 284(7), 861–868.
- Tononi G., Cirelli C. (2014). Sleep and the price of plasticity. Neuron, 81(1), 12–34.
Wake Events
Awake segments longer than 5 minutes that occur after sleep onset are counted as wake events.
Brief arousals (< 5 min) are normal and excluded to reduce noise. Frequent sustained
awakenings are associated with fragmented sleep and next-day cognitive impairment.
Sources
- Bonnet M.H., Arand D.L. (1992). Caffeine use as a model of acute and chronic insomnia. Sleep, 15(6), 526–536.
- Lim J., Dinges D.F. (2010). A meta-analysis of the impact of short-term sleep deprivation on cognitive variables. Psychological Bulletin, 136(3), 375–389.
Sleep Consistency (Bedtime Regularity)
consistency_score = clamp(1 − std_dev_bedtime_hours / 2, 0, 1)
// 0 h std-dev = perfect 1.0 · ≥ 2 h std-dev = 0.0
Social jetlag — variability in sleep timing across nights — independently predicts
worse metabolic health, mood, and cognitive performance even when total sleep duration
is held constant. A standard deviation of 2+ hours in bedtime is used as the lower
bound (score = 0), with a perfectly consistent schedule scoring 1.0.
Sources
- Phillips A.J.K. et al. (2017). Irregular sleep/wake patterns are associated with poorer academic performance and delayed circadian and sleep/wake timing. Scientific Reports, 7, 3216. doi:10.1038/s41598-017-03171-4
- Lunsford-Avery J.R. et al. (2018). Validation of the sleep regularity index in older adults. Scientific Reports, 8, 14158.
- Roenneberg T. et al. (2012). Social jetlag and obesity. Current Biology, 22(10), 939–943. doi:10.1016/j.cub.2012.03.038
Sleep Performance Score — Final Formula
score = (efficiency × 0.30) + (restorative × 0.30)
+ (need_fulfillment × 0.25) + (consistency × 0.15)
All components are first normalised 0–1, result is scaled × 100.
Weights are user-adjustable in Settings → Advanced.
| Component | Default weight | Rationale |
| Efficiency | 30% | Most directly reflects sleep quality per unit of time in bed. |
| Restorative content | 30% | Deep + REM are the physiologically critical stages. |
| Need fulfillment | 25% | Sleeping enough for your personal demand is essential. |
| Consistency | 15% | Circadian regularity; secondary to raw quality metrics. |
Sources
- Hirshkowitz M. et al. (2015). National Sleep Foundation's sleep time duration recommendations. Sleep Health, 1(1), 40–43. doi:10.1016/j.sleh.2014.12.010
- Ohayon M. et al. (2017). National Sleep Foundation's sleep quality recommendations. Sleep Health, 3(1), 6–19.
02 — Sleep Need & Bedtime Planner
Sleep need is a dynamic quantity: it rises with prior-day training load and accumulated debt.
OutPerform builds a personalised baseline from your own historical data.
Personal Baseline
baseline = mean sleep duration on low-strain days (strain < 8)
over the last 30 nights
// falls back to 480 min (8 h) until enough history exists
Low-strain days are used because strain augments sleep need (see below).
Using only easy days lets the baseline reflect the individual's true resting need,
free from training-load artifacts. The 8-hour fallback aligns with the median
recommendation across age groups from the National Sleep Foundation.
Sources
- Hirshkowitz M. et al. (2015). National Sleep Foundation's sleep time duration recommendations. Sleep Health, 1(1), 40–43.
- Watson N.F. et al. (2015). Recommended amount of sleep for a healthy adult. Sleep, 38(6), 843–844. doi:10.5665/sleep.4716
Strain Component (f₁)
f₁(strain) = 1.7 / (1 + e^((17 − strain) / 3.5)) hours → × 60 = minutes
A sigmoid function maps yesterday's strain (0–21) to extra sleep minutes needed.
At strain = 10 this adds ~20 min; at strain = 21 it adds ~100 min. The sigmoid
shape reflects the nonlinear dose–response seen between training load and recovery
sleep: mild exercise has little effect; very high loads demand substantially more sleep.
Sources
- Mah C.D. et al. (2011). The effects of sleep extension on the athletic performance of collegiate basketball players. Sleep, 34(7), 943–950. doi:10.5665/SLEEP.1132
- Fullagar H.H. et al. (2015). Sleep and athletic performance. Sports Medicine, 45(2), 161–186. doi:10.1007/s40279-014-0260-0
Sleep Debt Component (f₂)
f₂(debt) = min(debt × 0.5, 90) minutes
debt = clamp(prev_debt + prev_need − prev_actual, 0, 180) minutes
Accumulated sleep debt is carried forward each night. You cannot fully repay debt
in one night; the 0.5 multiplier reflects that only a portion of debt is typically
recovered per night. The 90-minute cap prevents extreme overcorrection; the 180-minute
debt cap bounds the model within realistic physiology.
Sources
- Dinges D.F. et al. (1997). Cumulative sleepiness, mood disturbance and psychomotor vigilance performance decrements during a week of sleep restricted to 4–5 hours per night. Sleep, 20(4), 267–277.
- Belenky G. et al. (2003). Patterns of performance degradation and restoration during sleep restriction and subsequent recovery. Journal of Sleep Research, 12(1), 1–12.
Bedtime Planner
sleep_need = baseline + f₁(yesterday_strain) + f₂(debt) − nap_minutes
bedtime = wake_time − sleep_need × target_multiplier − sleep_latency
Performance targets: Peak = 100% · Good = 85% · Minimum = 75%
The bedtime recommendation works backwards from your chosen wake time, accounting
for how long it typically takes you to fall asleep (sleep latency, configurable in Settings).
Target multipliers reflect the real-world tradeoff between optimal performance and
practical constraints.
Sources
- Åkerstedt T., Folkard S. (1997). The three-process model of alertness. Journal of Sleep Research, 6(S1), 1–11.
- Van Dongen H.P.A. et al. (2003). The cumulative cost of additional wakefulness. Sleep, 26(2), 117–126.
03 — Heart-Rate Variability (HRV)
HRV quantifies the fluctuation in time between consecutive heartbeats (RR intervals).
Higher variability indicates a well-regulated autonomic nervous system and better
recovery capacity.
RMSSD — Root Mean Square of Successive Differences
RMSSD = √[ (1/(N−1)) × Σᵢ (RRᵢ₊₁ − RRᵢ)² ]
RMSSD is the gold-standard time-domain HRV metric for monitoring autonomic recovery.
It primarily reflects parasympathetic (vagal) modulation of the heart, which is
suppressed by stress, overtraining, and illness. OutPerform computes RMSSD directly
from beat-to-beat RR intervals recorded by Apple Watch during the sleep window;
Google Health daily HRV values are used where beat-level data is unavailable.
Sources
- Task Force of the European Society of Cardiology and the North American Society of Pacing and Electrophysiology (1996). Heart rate variability: standards of measurement, physiological interpretation, and clinical use. European Heart Journal, 17(3), 354–381. doi:10.1093/oxfordjournals.eurheartj.a014868
- Plews D.J. et al. (2013). Heart rate variability in elite triathletes. International Journal of Sports Physiology and Performance, 8(5), 536–545.
- Buchheit M. (2014). Monitoring training status with HR measures: do all roads lead to Rome? Frontiers in Physiology, 5, 73. doi:10.3389/fphys.2014.00073
SDNN — Standard Deviation of NN Intervals
SDNN = √[ (1/(N−1)) × Σᵢ (RRᵢ − RR̄)² ]
SDNN reflects total autonomic variability (both sympathetic and parasympathetic).
It is used as a fallback metric when beat-to-beat intervals are unavailable
(it matches HealthKit's HeartRateVariabilitySDNN quantity type).
DFA-α1 — Detrended Fluctuation Analysis Short-Term Scaling Exponent
1. Integrate mean-centred RR series → profile yₖ
2. For box sizes n = 4…16 beats:
- Split into non-overlapping windows of n beats
- Linearly detrend each window
- F(n) = RMS of residuals across all windows
3. α₁ = slope of log F(n) vs log n
Interpretation: α₁ ≈ 1.0 = healthy fractal correlation
α₁ < 0.75 = exercise / sympathetic dominance
DFA-α₁ is a nonlinear HRV index that reflects fractal correlation properties of
heartbeat dynamics. A value near 1.0 characterises healthy, well-rested physiology.
It decreases as exercise intensity or metabolic stress increases, and sustained
values below 0.75 are associated with sympathetic nervous system dominance and
insufficient recovery. This metric is rarely exposed by commercial trackers — OutPerform
computes it from raw beat-to-beat series when available (Apple Watch).
Sources
- Peng C.K. et al. (1995). Quantification of scaling exponents and crossover phenomena in nonstationary heartbeat time series. Chaos, 5(1), 82–87. doi:10.1063/1.166141
- Rogers B. et al. (2021). Fractal correlation properties of HRV as a biomarker of endurance exercise intensity. Journal of Applied Physiology, 130(5), 1426–1436. doi:10.1152/japplphysiol.00124.2021
- Chalder T., Rogers B. (2022). DFA alpha1: from research to real-world application. Frontiers in Physiology, 13, 893818.
04 — Recovery Score
A 0–100 score that reflects how fully your body has recovered overnight. It combines
your HRV, resting heart rate, respiratory rate, and sleep performance, all personalised
to your own baselines.
Z-Score Normalisation (Personal Baseline)
z = (today_value − personal_mean) / personal_std
component_score = clamp(50 + 22 × z, 0, 100)
// z capped at ±2 std · 50 = your average · >50 = better than baseline
Each physiological signal is interpreted relative to your own historical
baseline — not population norms. This personalisation is critical: a resting HR of 55 bpm
is excellent for most people but poor for a trained athlete with a baseline of 42 bpm.
The z-score maps to 50 at your personal mean, with ±2 standard deviations spanning
the full 0–100 range.
Sources
- Flatt A.A., Esco M.R. (2016). Evaluating individual training adaptation with smartphone-derived heart-rate variability in a collegiate female soccer team. Journal of Strength and Conditioning Research, 30(2), 378–385.
- Plews D.J. et al. (2017). Performance keys for elite triathletes: HR and HRV-guided training. International Journal of Sports Physiology and Performance, 12(3), 329–338.
Component Baselines
| Signal | Mean window | Std window | Direction |
| HRV (RMSSD) | 3-night rolling mean | 7-night rolling std | Higher = better |
| Resting HR | 7-night rolling mean | 14-night rolling std | Lower = better |
| Respiratory rate | 14-night rolling mean | 14-night rolling std | Lower = better |
| Sleep performance | — | — | Already 0–100 |
The short 3-night mean for HRV reflects its natural high day-to-day variance;
using a longer window would mask genuine acute changes. Resting HR and respiratory
rate are more stable and warrant longer averaging windows for reliable baselines.
Sources
- Plews D.J. et al. (2013). Heart rate variability in elite triathletes. Int J Sports Physiol Perform, 8(5), 536–545.
- Bellenger C.R. et al. (2016). Monitoring athletic training status through autonomic heart rate regulation. Sports Medicine, 46(10), 1461–1486.
Recovery Score — Weighted Formula
base = (HRV × 0.40) + (RHR × 0.25) + (resp × 0.10) + (sleep_perf × 0.25)
[re-normalised over available inputs if some are missing]
recovery = clamp(base + temp_penalty + spo2_penalty, 0, 100)
| Input | Default weight | Rationale |
| HRV (RMSSD) | 40% | Most sensitive autonomic recovery marker available non-invasively. |
| Resting HR | 25% | Elevated RHR is a reliable indicator of under-recovery and illness. |
| Sleep performance | 25% | Sleep quality directly determines next-day physical and cognitive capacity. |
| Respiratory rate | 10% | Early signal for illness and overtraining; secondary to HRV and HR. |
Sources
- Kellmann M. (2010). Preventing overtraining in athletes in high-intensity sports. Scandinavian Journal of Medicine & Science in Sports, 20(S2), 1–10.
- Buchheit M. (2014). Monitoring training status with HR measures. Frontiers in Physiology, 5, 73.
- Esco M.R., Flatt A.A. (2014). Ultra-short-term heart rate variability indexes at rest and post-exercise in athletes. JSSM, 13(3), 535–541.
Skin Temperature Penalty
if deviation > +0.5 °C: penalty = −clamp((deviation − 0.5) × 10, 0, 10)
if deviation < −0.3 °C: bonus = +1 (deep recovery signal)
// deviation = tonight − 14-night personal mean
Elevated skin temperature during sleep is an early indicator of illness or systemic
inflammation. The threshold at +0.5 °C above personal baseline is aligned with
clinical studies showing this magnitude of increase precedes fever or immune response.
A slight decrease is associated with deeper restorative sleep.
Sources
- Haghayegh S. et al. (2019). Before-bedtime passive body heating by warm shower or bath to improve sleep. Sleep Medicine Reviews, 46, 124–135. doi:10.1016/j.smrv.2019.04.008
- Mok J.M.Y. et al. (2023). Wrist skin temperature as a digital biomarker for illness detection and wellness monitoring. npj Digital Medicine, 6, 43.
- Kräuchi K. et al. (1999). Warm feet promote the rapid onset of sleep. Nature, 401(6748), 36–37.
SpO₂ Penalty
SpO₂ ≥ 96% → 0 penalty
94% ≤ SpO₂ < 96% → −5 points
90% ≤ SpO₂ < 94% → −15 points
SpO₂ < 90% → −25 points
Normal nocturnal SpO₂ is ≥ 95%. Values below 94% suggest impaired oxygen delivery
during sleep (obstructive sleep apnea, altitude, or respiratory illness). The penalty
thresholds follow the clinical classification of nocturnal hypoxemia used in
sleep medicine.
Sources
- American Thoracic Society (1999). Indications and standards for use of nasal CPAP in sleep apnea syndromes. American Journal of Respiratory and Critical Care Medicine, 144(3), 559–565.
- Punjabi N.M. (2008). The epidemiology of adult obstructive sleep apnea. Proceedings of the American Thoracic Society, 5(2), 136–143. doi:10.1513/pats.200709-155MG
Calibration Requirement
Recovery requires at least 14 nights of HRV and resting HR data
before it is displayed. This matches the minimum needed for reliable personal
baselines. The app shows a "Calibrating n/14" indicator during this period.
Sources
- Plews D.J. et al. (2012). Evaluating training adaptation with heart-rate measures: a methodological comparison. International Journal of Sports Physiology and Performance, 8(6), 688–691.
05 — Strain (TRIMP-Based)
Strain (0–21) quantifies the cardiovascular and muscular load placed on your body.
It is based on TRIMP — Training Impulse — binned into heart-rate zones, then mapped
to a logarithmic 0–21 scale.
HR Zones (Percentage of HRmax)
| Zone | % HRmax | TRIMP weight |
| Zone 0 (Recovery) | < 50% | 0 |
| Zone 1 (Very Light) | 50–60% | 1 |
| Zone 2 (Light) | 60–70% | 2 |
| Zone 3 (Moderate) | 70–80% | 3 |
| Zone 4 (Hard) | 80–90% | 4 |
| Zone 5 (Maximum) | ≥ 90% | 5 |
Heart-rate samples are binned into 1-minute buckets. The average HR per minute
is assigned a zone weight, and TRIMP = sum of all minute weights.
Sources
- Banister E.W. (1991). Modeling elite athletic performance. In H.J. Green et al. (Eds.), Physiological Testing of Elite Athletes (pp. 403–425). Human Kinetics.
- Edwards S. (1993). The Heart Rate Monitor Book. Fleet Feet Press.
Workout Muscular-Load Multiplier
Strength training, HIIT, and yoga produce muscle damage that is not captured by
heart rate alone. A type-specific multiplier is applied to the TRIMP of workouts.
Steady-state cardio uses multiplier 1.0; strength work and HIIT use higher multipliers
to account for the non-cardiovascular load component.
Sources
- Fleck S.J., Kraemer W.J. (2004). Designing Resistance Training Programs. 3rd ed. Human Kinetics.
- Schoenfeld B.J. (2010). The mechanisms of muscle hypertrophy and their application to resistance training. Journal of Strength and Conditioning Research, 24(10), 2857–2872.
TRIMP → 0–21 Strain Scale
strain = coefficient × ln(1 + TRIMP / scale)
= 4.8 × ln(1 + TRIMP / 150) [defaults, user-adjustable]
clipped to [0, 21]
A logarithmic mapping reflects the physiological reality that each additional unit
of effort is harder to achieve at the upper end of the scale. Sedentary days produce
single-digit strain; hard training days approach the high teens. The 0–21 range
is a common convention in sports-science monitoring platforms.
Sources
- Morton R.H. et al. (1990). Modelling human performance in running. Journal of Applied Physiology, 69(3), 1171–1177.
06 — Acute:Chronic Workload Ratio (ACWR)
The ACWR compares recent training load (last ~7 days) to long-term load (~28 days)
to identify the "sweet spot" of fitness-building without excessive injury risk.
Exponentially Weighted Moving Average
EWMA_acute = λ_a × strain_today + (1 − λ_a) × EWMA_acute_prev
EWMA_chronic = λ_c × strain_today + (1 − λ_c) × EWMA_chronic_prev
λ_acute = 2 / (7 + 1) = 0.250 // ~7-day responsiveness
λ_chronic = 2 / (28 + 1) = 0.067 // ~28-day responsiveness
ACWR ratio = EWMA_acute / EWMA_chronic
EWMA-based ACWR is preferred over simple rolling-average ACWR because it weights
recent days more heavily, reducing lag, while still capturing the longer-term
chronic load. This addresses a known limitation of simple rolling averages identified
by Windt & Gabbett (2019).
Sources
- Gabbett T.J. (2016). The training-injury prevention paradox. British Journal of Sports Medicine, 50(5), 273–280. doi:10.1136/bjsports-2015-095788
- Hulin B.T. et al. (2016). The acute:chronic workload ratio predicts injury. British Journal of Sports Medicine, 50(4), 231–236. doi:10.1136/bjsports-2015-094817
- Windt J., Gabbett T.J. (2019). How do training and competition workloads relate to injury? British Journal of Sports Medicine, 53(5), 294–300.
- Williams S. et al. (2017). Better way to determine the acute:chronic workload ratio? British Journal of Sports Medicine, 51(3), 209–210.
ACWR Zones
| Ratio | Zone | Interpretation |
| < 0.8 | Under-training | Too little recent load relative to baseline — detraining risk. |
| 0.8 – 1.3 | Sweet spot | Balanced acute and chronic load — optimal for adaptation. |
| 1.3 – 1.5 | Caution | Elevated injury risk zone — monitor for fatigue signs. |
| > 1.5 | Danger | High acute spike — injury risk substantially elevated. |
Requires ≥ 14 prior days of strain data to be calculated.
07 — Training Monotony & Training Strain
Monotony measures how uniform your training load is over the past 7 days.
High monotony (same intensity every day) suppresses adaptation and increases
illness risk even when total load is moderate.
Foster's Monotony Formula
monotony = mean(last_7_strain) / std_dev(last_7_strain)
training_strain = sum(last_7_strain) × monotony
High monotony threshold: > 2.0
Monotony penalises low variance in training load. A well-varied week (hard–easy–hard
alternation) produces a low monotony score. Monotony > 2.0 is associated with
increased illness incidence in athletes. Training strain (volume × monotony) combines
load and variety into a single overtraining risk indicator.
Sources
- Foster C. et al. (2001). A new approach to monitoring exercise training. Journal of Strength and Conditioning Research, 15(1), 109–115.
- Foster C. (1998). Monitoring training in athletes with reference to overtraining syndrome. Medicine & Science in Sports & Exercise, 30(7), 1164–1168.
08 — Readiness Score
Readiness integrates recovery, sleep performance, and training load into a single
daily readiness-to-perform score (0–100).
ACWR Load Factor
if ACWR in [0.8, 1.3]: acwr_factor = 100
else: acwr_factor = clamp(100 − distance × 30, 0, 100)
// distance = how far outside the sweet spot
Readiness Formula
readiness = (recovery × 0.60) + (sleep_performance × 0.25) + (acwr_factor × 0.15)
| Input | Weight | Rationale |
| Recovery | 60% | Autonomic state and physiological readiness is the primary determinant. |
| Sleep performance | 25% | Sleep quality directly predicts next-day cognitive and physical capacity. |
| ACWR load factor | 15% | Training load context — accumulated fatigue or detraining risk. |
Sources
- Hecksteden A. et al. (2017). Individual response to exercise training. Journal of Applied Physiology, 118(12), 1551–1568.
- Halson S.L. (2014). Monitoring training load to understand fatigue in athletes. Sports Medicine, 44(S2), 139–147. doi:10.1007/s40279-014-0253-z
09 — VO₂ Max
Maximal oxygen uptake (mL/kg/min) is the single best predictor of cardiovascular
fitness and long-term health outcomes. OutPerform reads VO₂ max directly from
Apple Health (estimated by Apple Watch using heart-rate response to walking/running)
or from Google Health.
VO₂ Max Estimation
Apple Watch estimates VO₂ max from the relationship between heart rate and pace
during outdoor runs or brisk walks using a validated algorithm (Firstbeat Technologies).
The value is stored in HealthKit as HKQuantityTypeIdentifierVO2Max in mL/kg/min.
OutPerform reads this value directly — it does not independently compute VO₂ max.
VO₂ max categories for health-risk stratification follow ACSM guidelines, which
differentiate norms by age and sex.
Sources
- Kaminsky L.A. et al. (2022). Cardiorespiratory fitness and cardiovascular disease. Mayo Clinic Proceedings, 97(6), 1154–1164.
- Ross R. et al. (2016). Importance of assessing cardiorespiratory fitness in clinical practice. Circulation, 134(24), e653–e699. doi:10.1161/CIR.0000000000000461
- American College of Sports Medicine (2018). ACSM's Guidelines for Exercise Testing and Prescription. 10th ed. Wolters Kluwer.
10 — Maximum Heart Rate
HRmax sets the ceiling for all HR-zone calculations. OutPerform offers three methods
and selects the best available by default.
Gellish Non-Linear Formula
HRmax_Gellish = 192 − 0.007 × age²
The Gellish formula is more accurate than the classic Fox & Haskell "220 − age"
across the full age range, particularly in older adults, because the age-related
decline in HRmax is not linear. It was validated in a prospective study of 132
participants across ages 21–81.
Sources
- Gellish R.L. et al. (2007). Longitudinal modeling of the relationship between age and maximal heart rate. Medicine & Science in Sports & Exercise, 39(5), 822–829. doi:10.1097/mss.0b013e31803349c6
- Robergs R.A., Landwehr R. (2002). The surprising history of the "HRmax = 220 − age" equation. JEPonline, 5(2), 1–10.
Personalised HRmax (Learned)
HRmax_learned = 95th percentile of all recorded HR samples
HRmax_used = max(HRmax_Gellish, HRmax_learned) [default: "max" method]
When sufficient HR history exists (> 50 samples), the 95th percentile of observed
heart rates provides a personalised ceiling. The "max" method uses whichever is
higher — protecting against the formula underestimating a fit individual's true
HRmax while avoiding dependence on a single outlier sample. The user can override
to Gellish-only or learned-only in Advanced Settings.
11 — Blood Oxygen (SpO₂)
Peripheral oxygen saturation measured during sleep. OutPerform reads SpO₂ from
Apple Health (Apple Watch) or Google Health (Fitbit devices).
Clinical Thresholds
| SpO₂ range | Interpretation |
| ≥ 95% | Normal. No clinical concern. |
| 92–94% | Mild hypoxemia. Possible sleep-disordered breathing or altitude effect. |
| 88–91% | Moderate hypoxemia. Evaluation recommended. |
| < 88% | Severe hypoxemia. Clinical assessment warranted. |
Values below 70% are filtered as physiologically implausible (sensor artifact).
OutPerform flags nightly averages below 94% in the Body health monitor.
Sources
- Punjabi N.M. (2008). The epidemiology of adult obstructive sleep apnea. Proc Am Thorac Soc, 5(2), 136–143.
- American Academy of Sleep Medicine (2014). International Classification of Sleep Disorders. 3rd ed.
- Lévy P. et al. (2015). Obstructive sleep apnoea syndrome. Nature Reviews Disease Primers, 1, 15015.
12 — Skin Temperature
Nightly wrist skin temperature deviation from personal baseline.
Available on Apple Watch Series 8+ and Fitbit Sense/Versa devices.
Deviation from Personal Baseline
deviation = tonight_temperature − 14-night_personal_mean
Alert threshold: deviation > +0.5 °C above personal baseline
Because absolute skin temperature varies widely between individuals, all
alerts are relative to the user's personal 14-night baseline. A deviation
of +0.5 °C or more is associated with illness onset or systemic inflammation.
This metric is used to adjust the recovery score (see Section 4) and to
flag potential illness in the Body health monitor.
Sources
- Mok J.M.Y. et al. (2023). Wrist skin temperature as a digital biomarker for illness detection and wellness monitoring. npj Digital Medicine, 6, 43. doi:10.1038/s41746-023-00778-y
- Gustafsson M. et al. (2016). Changes in wrist skin temperature during fever measured with a wrist worn device. PLOS ONE, 11(1), e0146581.
- Kräuchi K. (2007). The thermophysiological cascade leading to sleep initiation in relation to phase of entrainment. Sleep Medicine Reviews, 11(6), 439–451.
Disclaimer.
OutPerform is a wellness application, not a medical device. The algorithms documented
here are derived from published sports-science and sleep research for informational and
motivational purposes only. They are not intended to diagnose, treat, cure, or prevent
any disease or medical condition. All scores are computed on your device and are not
reviewed by a healthcare professional. Consult a qualified clinician for any health concern.
Page last updated: June 2026. All cited studies were accessed from their respective publisher
or institutional repository. DOI links lead to publisher pages. Some articles may be behind
a paywall; accepted manuscripts are often available through PubMed.
← Back to OutPerform ·
Privacy policy