# Readiness: Factors, Baselines and Coverage

Canonical HTML: https://effortsignal.com/learn/readiness/

Last content update: 2026-09-16

Published: 2026-09-11

Author: [EffortSignal Editorial Team](https://effortsignal.com/editorial-standards/)

Readiness combines baseline-relative HRV, resting heart rate, sleep and workload. It is a model with explicit missing-data gates.

## Aggregate score

Configured weights are HRV 0.35, resting HR 0.15, sleep 0.30 and workload 0.20. Each available component has a 0–100 score s. Available weights are renormalized:

```text
Readiness = round_half_up(exp(sum(w × ln(s)) / sum(w)))
```

The displayed score needs available configured weight of at least 0.65 and an available physiological component (HRV or resting HR). Missing components are not replaced with neutral values. The geometric mean makes a low factor matter more than in an arithmetic average.

## HRV and resting heart rate

Use compatible measurements from the preceding 42 local days; the current day is excluded from that baseline. At least 14 observations are required, with 28 for a reliable baseline. Metric, provider account, device and measurement method define compatibility. HRV is transformed with natural logarithms; resting HR remains in bpm. Baseline center is the median; scale is max(1.4826 × median absolute deviation, floor), with floors 0.05 for log HRV and 1.5 bpm for resting HR.

The deviation is 70% today's z-score plus 30% the seven-day median trend z-score when both exist. A trend needs three observations. Today-only or trend-only evidence can still be used with a quality flag. HRV scores interpolate through (z, score): (−2.5,10), (−2,28), (−1.5,48), (−1,68), (−0.5,82), (0,90), (0.5,95). Resting-HR mapping reverses the direction: (−0.5,95), (0,90), (0.5,82), (1,68), (1.5,48), (2,28), (2.5,10). Values beyond endpoints are clamped.

## Sleep

Main sleep plus confirmed naps is compared with an explicit sleep target. Otherwise, with at least 28 recorded nights in the preceding 60 days, the target is the 75th percentile clamped to 7–9 hours; without enough history the default is 8 hours. The sleep state is 70% today's target ratio plus 30% a seven-day weighted ratio with a three-day half-life. Missing nights are omitted, not filled with zero sleep. Historical sleep follows daily source-priority selection; it is not restricted to the exact device family used for physiological baselines. A recent source change is flagged.

The sleep ratio/score points are 0.50/10, 0.60/20, 0.70/38, 0.80/58, 0.85/70, 0.90/80, 0.95/88, 1.00/95 and 1.05/100, with linear interpolation. A missing completed main sleep makes that component unavailable.

<!-- Readiness now shares the canonical TRIMP load series; retain its separate timing and coverage gate. -->
<h2 id="workload">Workload uses TRIMP ATL/CTL</h2>

The component requires 42 complete dated load rows and uses the same heart-rate-based TRIMP series as Dashboard's Training Load. Its ratio is ATL divided by CTL, sampled at the end of the previous athlete-local day. ATL and CTL are exponentially weighted daily loads with 7-day and 42-day time constants, not weekly sums. Workouts across sports contribute when usable heart-rate data is available. Incomplete heart-rate load is flagged; a missing row or non-positive CTL prevents the ratio. PSS and PSS/TRIMP calibration are not used.

Workload ratio/score points are 0.75/100, 0.90/95, 1.00/90, 1.10/82, 1.25/68, 1.40/50, 1.60/32, 1.80/18 and 2.00/10. These scoring points and the 20% weight are unchanged. The [fitness/fatigue reference](/learn/training-load/) explains the shared load series. Dashboard's selected-day ratio can differ because Readiness excludes that day's activity.

## Verified examples and limits

With all four component scores equal to 90, Readiness is 90. HRV alone (weight 0.35) cannot produce a displayed score. Sleep plus workload has weight 0.50 and no physiological component, so it also cannot produce one. Stable sleep at exactly the target maps to a sleep component score of 95, not 100.

A score can be provisional while baselines mature. High confidence requires all components, sufficiently mature physiological baselines and no quality flags. The live Dashboard may show the most recent persisted result within its 14-day history when today has none; the date identifies that older result. A historical selection stays on the requested date. Changing sources or settings can change later calculations. This is not a diagnosis or a promise of training performance. [Health Metrics & Readiness](/features/recovery-readiness/) shows the factor details, dates, reference bands and missing-data states, with a separate guide to workout HRV.

<!-- Distinguish the UI disclosure from the transformed or weighted trend used for scoring. -->
The expanded physiological **7-day trend** is an arithmetic average of raw values in the available stored daily results, with a day count. The score uses the median-based deviation described above. Similarly, the displayed **Previous 7-day sleep balance** is a raw sleep-duration average, while the sleep calculation uses a weighted target ratio.

## Sources and implementation scope

[Walsh and colleagues (2021), athlete sleep consensus](https://pubmed.ncbi.nlm.nih.gov/33144349/) explains the research background. The formulas, windows, quality gates and examples above describe EffortSignal 0.1.25, checked September 14, 2026. Thresholds and rounding are EffortSignal rules.
