← Back to NoBand

Methodology

The Science behind NoBand

NoBand turns the signals your Apple Watch already records into five daily numbers: Recovery, Readiness, Sleep, Strain and Fitness Age. This page is the honest, detailed account of exactly how each one is built — the physiology it rests on, the formulas we run on your phone, and the research they come from. No black box.

Guiding principles

Three rules shape every number in NoBand.

1. Your body is the reference, not a population. A resting heart rate of 58 bpm is great for one person and a red flag for another. NoBand compares each signal to your own recent history, so a score reflects how far today sits from your normal — not from a textbook average.

2. Show the signal, don't launder it. Many wellness apps quietly apply a "transfer curve" that pushes scores toward flattering middles or crushes bad nights. We removed all of those. The number you see is the weighted evidence, clamped only to 0–100. If your data says today is a 41, we show you 41.

3. Everything runs on your phone. All scoring math below executes on-device from your Apple Health data. Nothing about how these scores are computed requires the raw data to leave your iPhone.

A note on honesty. These are statistical estimates from consumer sensors, not clinical measurements. They are built to be useful and to move correctly with your physiology — not to be medically exact. NoBand is not a medical device. See Terms of Use.

Your personal baseline

Almost every score starts by asking: how unusual is today's reading for me? To answer that we build a rolling baseline from your last 30 days and express today as a robust z-score — the number of "typical spreads" today sits above or below your normal.

We deliberately do not use the ordinary mean and standard deviation, because a single bad night or a sensor glitch would drag them around. Instead we use the median and the median absolute deviation (MAD), which shrug off outliers. The MAD is scaled by 1.4826 so that, for normally distributed data, it matches a standard deviation.

# robust z-score of today's value z = (value − median) / max(MAD × 1.4826, floor)

Recent days matter more than old ones, so each day is weighted by an exponential recency half-life of 10 days — a reading from 10 days ago counts half as much as last night's, one from 20 days ago a quarter as much. The median and MAD are both computed on those weights.

Two guards keep the baseline trustworthy. A spread floor per signal (for example 3 bpm for resting HR, 0.15 for ln-HRV) prevents a freakishly steady week from making the z-score explode. And a contamination guard down-weights any past day that itself scored extreme (below 20 or above 90) to 30% influence, so a run of bad days can't quietly redefine "normal" as bad.

While the window is still filling, scores are marked calibrating (under 4 valid days) or preliminary (under 30), and their strength is damped — at day one a score pulls only 15% toward its evidence, ramping to full over 14 days. This is why your first week reads cautiously and then sharpens.

Method: robust statistics per Leys et al. (2013); MAD→σ scaling factor 1.4826 is standard for normal data.

Recovery — is my body repaired?

Recovery answers a physiological question: overnight, did your autonomic nervous system settle into the parasympathetic ("rest and digest") state that signals a repaired, ready body? The two most validated windows into that are heart-rate variability (HRV) and resting heart rate (RHR) measured during sleep.

The core score is a blend of just those two, each turned into a 0–100 sub-score through a logistic curve and then combined:

Recovery = 50 + 0.65 · (HRV score − 50) + 0.35 · (RHR score − 50) + modifiers where HRV score = 100 · logistic( 1.2 · deadzone(z_HRV) ) # higher HRV = better RHR score = 100 · logistic( −1.2 · deadzone(z_RHR) ) # lower RHR = better

HRV gets the larger weight (0.65) because nocturnal HRV — we use Apple's overnight SDNN (the only HRV metric Apple Watch records), log-transformed because HRV is roughly log-normal — rises with the parasympathetic activity that signals a recovered body. RHR (0.35) is a slower, steadier confirmer: an elevated morning RHR is a classic sign of incomplete recovery, illness or accumulated fatigue.

Two design choices keep the score from twitching at noise. A dead-zone ignores the first ±0.3 of z (small daily wobble isn't real signal), and a gain of 1.2 inside the logistic sharpens genuinely meaningful deviations so a truly bad or truly great morning reads clearly instead of hugging 50.

Secondary modifiers — the corroborating witnesses

HRV and RHR set the score; four other signals can nudge it, each capped at ±7 points on its own: elevated respiratory rate, raised wrist temperature (penalty only — a cooler wrist is never rewarded), prior-night sleep performance, and heart-rate recovery after exertion (a bigger one-minute drop = fitter, and nudges up). Elevated breathing disturbances add to the "something's off" tally.

Those caps are not fixed — they scale with consensus. If three or more signals agree in the same direction the cap doubles; five or more and it grows 2.5×. The logic is Bayesian in spirit: one odd reading is noise, but HRV, RHR, temperature and breathing all pointing the same way is a body genuinely under load, and the score is allowed to move decisively. This is why a clear "you're fighting something" morning can drop hard while a single quirky sensor reading barely registers.

When there's no HRV

If your watch didn't capture HRV (some nights it doesn't), Recovery doesn't fail — it re-weights onto what it has: 0.55 RHR + 0.45 prior-night sleep, same curve shape. The screen simply lists fewer contributing factors so you know the score leaned on less.

Basis: Task Force / Malik (1996) on HRV time-domain methodology; Plews et al. (2013) and Buchheit (2014) on HRV-guided training with log-transformed nocturnal HRV trends; Karvonen (1957) for heart-rate reserve.

Readiness — should I push today?

Recovery asks whether your body is repaired. Readiness asks the broader, practical question: taking everything into account, how much should you take on today? It is a weighted average of seven contributors, each a 0–100 sub-score:

contributor weight Sleep last night 0.35 HRV balance (14-day vs 60-day) 0.20 Resting HR vs 60-day baseline 0.15 Sleep balance (14d vs 60d) 0.10 Body temperature vs baseline 0.10 Yesterday's activity load 0.10 Activity balance (ACWR) 0.05

Where Recovery is a snapshot of last night's autonomics, Readiness deliberately mixes acute signals (last night's sleep, resting heart rate and temperature) with chronic context (your 14-day HRV balance, whether you're carrying sleep debt over two weeks, whether your training load is ramping too fast). That's why it can sensibly disagree with Recovery — you can wake with pristine HRV yet still not be ready to smash a session because you've under-slept all week or spiked your training.

HRV balance and sleep balance compare your recent 14-day trend against a stable 60-day baseline, catching slow drifts a single night hides. Activity balance uses the acute:chronic workload ratio (see Strain) to penalise both overreaching and detraining.

If a contributor has no data (say your watch missed temperature), its weight is renormalised away — the remaining contributors are re-weighted to sum to one, rather than filling the gap with a fake neutral guess. The one exception: a completely untracked night sets the sleep contributor to a neutral 85 rather than dropping it, so an unknown night can't accidentally print a near-perfect Readiness.

No transfer curve. As of July 2026 the displayed Readiness is the raw weighted average — we removed an earlier low-end power curve and a "crash-night" cap after reviewing real data. The discrimination lives in the honest signals, not in a cosmetic curve laid over the top.

Contributor design draws on the training-readiness literature: Gabbett (2016) on acute:chronic workload; Plews et al. (2013) on HRV trend vs single-day; Borbély (1982) two-process model for sleep debt.

Why two scores instead of one

Most apps give you a single "recovery" number and hope it means everything. NoBand splits the question deliberately:

When they agree, the message is simple. When they diverge — high Recovery, low Readiness, or vice versa — that gap is itself information: strong hardware but accumulating load, or a rough night your body has already partly shrugged off. Two numbers carry more truth than one average of them.

HRV and resting heart rate

Heart-rate variability is the variation in the timing between your heartbeats. A healthy, recovered, parasympathetically-dominant heart varies more; a stressed, fatigued or fighting-something heart beats more metronomically. NoBand uses SDNN (the standard deviation of beat-to-beat intervals) averaged over your sleep — this is the single HRV metric Apple Watch records, so we work with what your watch actually provides rather than claiming a measure it doesn't. We take the natural log before comparing, because HRV is roughly log-normally distributed — so a drop from 80→60 ms and 40→30 ms are treated as similar relative moves.

Resting heart rate is the slower companion. Measured in sleep, it drifts up with fatigue, dehydration, alcohol, heat, illness and overtraining, and down as fitness improves. Its steadiness is exactly why it earns the "confirmer" role in Recovery: when both your HRV falls and your RHR rises, the two independent signals agree and the score is allowed to move hard.

For the daily vitals view, we show two bands: a narrow typical range (±1 robust spread, ≈ your everyday night-to-night) and a wider alert range (±2) that only flags genuinely unusual readings, so notifications stay rare and meaningful.

Breathing rate, blood oxygen, wrist temperature

Respiratory rate during sleep is remarkably stable person-to-person; a rise of even a breath or two per minute above your baseline is an early, sensitive sign of physiological stress, oncoming illness, alcohol or a hot room. It contributes to Recovery as a capped modifier and shows its own range in vitals.

Wrist skin temperature is read as a deviation from your own baseline, not an absolute. A sustained elevation is a well-known correlate of immune activation and (for those tracking it) the luteal phase. We only ever let it penalise Recovery, never reward — a cool wrist tells you little, a warm one can tell you plenty. A deviation beyond ±0.6 °C is flagged.

Blood oxygen (SpO₂) is shown as a one-sided floor ("above X%") against your baseline, because for most healthy people the interesting direction is down. Note that on some Apple Watch models sold in the US the SpO₂ sensor is disabled for legal reasons; NoBand handles that gracefully and simply marks it unavailable rather than inventing a value.

Sleep — an Apple-style score, plus a debt model underneath

NoBand actually runs two sleep models. The one you see on the Sleep card is built to track Apple's own iOS 26 Sleep Score, so the number moves with what your Watch shows. Under the hood, a second sleep-debt model feeds Recovery and Readiness.

The displayed score (0–100)

Sleep = Duration (max 50) + Bedtime consistency (max 30) + Interruptions (max 20)

An untracked night returns no score at all (missing data), not a zero — a night you didn't wear the watch isn't a "bad" night.

The debt model (Borbély two-process)

Internally, your nightly need rises with yesterday's strain and falls with naps, and unmet need accumulates as rolling sleep debt that decays about 20% a night. This is a direct application of Borbély's two-process model of sleep regulation (Process S, homeostatic pressure). That debt is what nudges your Recovery, feeds Readiness's sleep-balance term, and drives the Sleep Coach's recommended bedtime — which is computed forward from today's expected strain, not backward from last night.

Basis: Borbély (1982), two-process model of sleep regulation; deep/REM target fractions from adult sleep-architecture norms; consistency slope calibrated against Apple's iOS 26 Sleep Score.

Strain — a cardiovascular load meter

Strain measures how much cardiovascular work you did, not steps or calories. The engine is a continuous TRIMP (training impulse) model: every minute is weighted by how hard your heart was working, with an exponential curve so time spent at high intensity counts far more than easy minutes.

dTRIMP = minutes · HRr · c · e^(k · HRr) # per intensity band HRr = heart-rate reserve fraction (Karvonen) k, c differ by sex (Morton 1990): M k=1.92 c=0.64 · F k=1.67 c=0.86

Intensity is expressed as heart-rate reserve (Karvonen: where your heart sits between resting and max), so the same effort means the same thing whether you're very fit or just starting. Total daily load is then log-compressed onto a familiar 0–21 scale — deliberately non-linear, so climbing from 15 to 18 costs far more work than 5 to 8, matching how exponentially harder peak efforts feel.

Your daily target range is set by your Recovery: on a fully recovered day the engine suggests roughly 9–15, on a depleted day 3–8, interpolated continuously in between. A guardrail then adjusts it using your acute:chronic workload ratio (Gabbett): if your 7-day load is running hot versus your 28-day average (ratio > 1.5) it caps the ceiling so you don't dig a hole; if you've gone quiet (ratio < 0.8) it lifts the floor to nudge you off the couch. This ratio is one of the best-supported predictors of training injury risk in the sports-science literature.

Basis: Banister (1975/1991) TRIMP; Morton (1990) sex-specific constants; Karvonen (1957) heart-rate reserve; Gabbett (2016) acute:chronic workload ratio.

Fitness Age — your biological, not calendar, age

Your birthday is a fixed number. Your Fitness Age asks a more useful one: at what age is the average person as fit as you are right now? If a 45-year-old has the cardiorespiratory fitness of a typical 38-year-old, their Fitness Age is 38. It's a single, motivating summary of biological rather than chronological aging — and unlike your birthday, you can move it.

The backbone: VO₂max

The strongest single predictor of healthy longevity we can estimate from a watch is VO₂max — the maximum oxygen your body can use, the gold-standard measure of cardiorespiratory fitness. Large cohort studies (notably the HUNT Fitness Study, Nes et al. 2011) show VO₂max tracks mortality risk more tightly than most conventional risk factors, and it declines predictably with age. That predictable decline is exactly what lets us invert it into an age.

If your Apple Watch has measured your VO₂max (cardio fitness), we use that directly. If not, we estimate it from a validated non-exercise equation (Jackson et al. 1990, BMI variant):

VO₂max = 56.363 + 1.921·PA-R − 0.381·age − 0.754·BMI + 10.987·(male) PA-R = physical-activity rating (0–7), derived from your 30-day average strain

We then map VO₂max to an age using sex-specific population norms — an average 25-year-old man sits near 48 ml/kg/min and declines ~0.40 per year; a woman near 40, declining ~0.35 per year:

fitness age from VO₂max = 25 + (anchor VO₂max − your VO₂max) / yearly decline

This cardiorespiratory factor is the dominant one, and on its own can shift your estimate up to ±8 years.

Body composition

Where it's known, we prefer waist-to-height ratio over BMI. WHtR captures central (visceral) fat — the metabolically dangerous kind — and predicts cardiometabolic risk better than BMI across body types (Ashwell's work; the "keep your waist under half your height" rule). The optimal is 0.50, and deviation shifts Fitness Age up to ±6 years. Most people don't enter a waist measurement, so if only height and weight are available we fall back to BMI (optimal ~22), and we never double-count it if BMI already fed the VO₂max estimate.

Lifestyle modifiers

Three further signals fine-tune the estimate, each tightly bounded so no single one dominates:

Everything is summed and the total adjustment is clamped to ±12 years of your real age (and never below 18), so the number stays grounded even with sparse data. The app then surfaces your top levers — the two or three factors currently adding the most years — because those are exactly what you can train down.

Why this is genuinely trainable. VO₂max responds to zone-2 and interval training within weeks; waist-to-height to nutrition and consistent activity; HRV, RHR and sleep to stress management and recovery. Fitness Age isn't a verdict — it's a scoreboard, and the app tells you which lever moves it most.

Basis: Jackson et al. (1990) non-exercise VO₂max; Nes et al. (2011, HUNT) VO₂max age norms and mortality; Ashwell & Hsieh (2005) waist-to-height ratio; ACSM VO₂max percentile norms; HRV/RHR aging associations per the autonomic-aging literature.

What NoBand deliberately doesn't do

Honest limitations

We'd rather you trust the numbers because you know their edges:

Selected references

  1. Task Force of the ESC/NASPE (Malik M, chair). Heart rate variability: standards of measurement, physiological interpretation, and clinical use. Circulation, 1996.
  2. Plews DJ, Laursen PB, Stanley J, Kilding AE, Buchheit M. Training adaptation and heart rate variability in elite endurance athletes. Sports Medicine, 2013.
  3. Buchheit M. Monitoring training status with HR measures: do all roads lead to Rome? Frontiers in Physiology, 2014.
  4. Karvonen MJ, Kentala E, Mustala O. The effects of training on heart rate. Annales Medicinae Experimentalis et Biologiae Fenniae, 1957.
  5. Banister EW. Modeling elite athletic performance. In: Physiological Testing of Elite Athletes, 1991 (TRIMP, orig. 1975).
  6. Morton RH, Fitz-Clarke JR, Banister EW. Modeling human performance in running. Journal of Applied Physiology, 1990.
  7. Gabbett TJ. The training-injury prevention paradox: should athletes be training smarter and harder? British Journal of Sports Medicine, 2016.
  8. Borbély AA. A two process model of sleep regulation. Human Neurobiology, 1982.
  9. Jackson AS, Blair SN, Mahar MT, et al. Prediction of functional aerobic capacity without exercise testing. Medicine & Science in Sports & Exercise, 1990.
  10. Nes BM, Janszky I, Wisløff U, et al. Age-predicted maximal heart rate in healthy subjects: the HUNT Fitness Study. Scandinavian Journal of Medicine & Science in Sports, 2011.
  11. Ashwell M, Hsieh SD. Six reasons why the waist-to-height ratio is a rapid and effective global indicator. International Journal of Food Sciences and Nutrition, 2005.
  12. Leys C, Ley C, Klein O, et al. Detecting outliers: do not use standard deviation around the mean, use absolute deviation around the median. Journal of Experimental Social Psychology, 2013.

NoBand implements methods inspired by this literature; it is not affiliated with or endorsed by these authors, and any errors in adaptation are ours. Apple Watch and Apple Health are trademarks of Apple Inc.

Get NoBand