optiHealthoptiHealth
    Open optiHealth
    Learn the signals

    Circadian glossary

    Sleep timing and wearable physiology become several different estimates: clock position, clock movement, sleep pressure, alertness and schedule regularity.

    Read a value quickly
    Meaning
    what the signal describes
    Direction
    what high, low, positive or negative means
    Inputs
    which sleep or physiology data feed it
    Math
    the derivation, sources and parameters
    The short version

    Which question does each signal answer?

    Sleep timing and heart-rate rhythm are inputs to the models.

    sleep timing
    heart-rate rhythm
    →
    BioTime phase
    where the clock sits
    sleep / wake history
    →
    BioLoad
    accumulated sleep pressure
    sleep / wake history
    + BioTime phase
    →
    PRIME → predicted KSS
    a modelled waking-day curve
    minute-level sleep / wake pattern
    →
    SRI
    schedule regularity
    Primary concepts
    Clock & phase
    • BioTime
    • BioTime shift
    • Desynchronisation
    Timing & rhythm
    • CRHR
    • SRI
    Sleep pressure
    • BioLoad
    Alertness
    • PRIME
    • KSS
    Clock & phase

    BioTime

    An estimate of where your body clock sits on the 24-hour circle, expressed against civil time.

    24-hour circlecivil → body time
    population reference phase
    sleep midpoint phase
    civil hand shifted to BioTime

    The hand shows the final clock position; the vector inset shows how sleep and heart-rate phase estimates combine.

    Inside the fusion step
    sleepHRfused

    How to read it

    A later BioTime means the estimated phase is later than the reference phase; an earlier BioTime means it is earlier. It is a clock position, not a score where higher is better.

    How it is computed

    BioTime combines a sleep-based phase estimate with an optional heart-rate phase estimate. Sleep timing contributes the midpoint of each main sleep episode; heart rate contributes the minimum of its fitted daily rhythm.

    The estimates are combined as circular directions, so midnight is adjacent to 23:59 rather than opposite it. The result is still an estimate: fusion does not create ground truth.

    Sleep duration is not a separate BioTime delta. It matters only when it moves the sleep midpoint, changes which main sleep episode is selected, or changes the confidence of the estimate.

    When to trust it

    Trust it less when sleep timing is sparse or heart-rate rhythm is weak or disturbed. The displayed phase has uncertainty from the input estimates and from disagreement between them; missing data is not silently treated as certainty.

    Math
    ∀n∈N:mn=tnsleep+tnwake−tnsleep2,θn=2πmn24\forall n\in\mathcal{N}:\quad m_n=t^{\mathrm{sleep}}_n+\frac{t^{\mathrm{wake}}_n-t^{\mathrm{sleep}}_n}{2},\qquad \theta_n=\frac{2\pi m_n}{24}∀n∈N:mn​=tnsleep​+2tnwake​−tnsleep​​,θn​=242πmn​​
    For every main sleep episode n, mₙ is its midpoint and θₙ converts that clock time from hours to an angle on the 24-hour circle.
    ∀d, n∈Wd:wn,d=γd−n,γ=2−1/h1/2,∣Wd∣≤14,θˉbeh,d=atan2⁡(∑n∈Wdwn,dsin⁡θn,∑n∈Wdwn,dcos⁡θn)\forall d,\ n\in W_d:\quad w_{n,d}=\gamma^{d-n},\quad \gamma=2^{-1/h_{1/2}},\quad |W_d|\le14,\quad \bar{\theta}_{\mathrm{beh},d}=\operatorname{atan2}\left(\sum_{n\in W_d}w_{n,d}\sin\theta_n,\sum_{n\in W_d}w_{n,d}\cos\theta_n\right)∀d, n∈Wd​:wn,d​=γd−n,γ=2−1/h1/2​,∣Wd​∣≤14,θˉbeh,d​=atan2(n∈Wd​∑​wn,d​sinθn​,n∈Wd​∑​wn,d​cosθn​)
    The behavioural phase is a recency-weighted circular mean over at most 14 main-sleep midpoints; h₁/₂ is the night half-life and γ is its per-night decay.
    ∀d:Rbeh,d=∣∑n∈Wdwn,deiθn∣∑n∈Wdwn,d,mˉbeh,d=24θˉbeh,d2π(mod24),Δbeh,d=circDiff⁡(mˉbeh,d,4.0 h)\forall d:\quad R_{\mathrm{beh},d}=\frac{\left|\sum_{n\in W_d}w_{n,d}e^{i\theta_n}\right|}{\sum_{n\in W_d}w_{n,d}},\qquad \bar m_{\mathrm{beh},d}=\frac{24\bar\theta_{\mathrm{beh},d}}{2\pi}\pmod{24},\qquad \Delta_{\mathrm{beh},d}=\operatorname{circDiff}(\bar m_{\mathrm{beh},d},4.0\,\mathrm{h})∀d:Rbeh,d​=∑n∈Wd​​wn,d​​∑n∈Wd​​wn,d​eiθn​​​,mˉbeh,d​=2π24θˉbeh,d​​(mod24),Δbeh,d​=circDiff(mˉbeh,d​,4.0h)
    R is the coherence of the sleep phase. The behavioural offset is measured from the documented 04:00 population midpoint convention; it is not a melatonin measurement.
    ∀d, i∈{beh,CRHR}:wi=σi,d−2,θi,d=2πΔi,d24,Δ^d=242πatan2⁡(∑iwisin⁡θi,d,∑iwicos⁡θi,d)\forall d,\ i\in\{\mathrm{beh},\mathrm{CRHR}\}:\quad w_i=\sigma_{i,d}^{-2},\quad \theta_{i,d}=\frac{2\pi\Delta_{i,d}}{24},\quad \hat{\Delta}_d=\frac{24}{2\pi}\operatorname{atan2}\left(\sum_iw_i\sin\theta_{i,d},\sum_iw_i\cos\theta_{i,d}\right)∀d, i∈{beh,CRHR}:wi​=σi,d−2​,θi,d​=242πΔi,d​​,Δ^d​=2π24​atan2(i∑​wi​sinθi,d​,i∑​wi​cosθi,d​)
    Available behavioural and cardiac offsets are fused as inverse-variance-weighted vectors. The more precise estimate pulls harder; a missing or rejected estimate contributes no vector.
    ∀d:σBioTime,d=(∑iσi,d−2)−1+σψ2,tbio≡tcivil−Δ^d(mod24)\forall d:\quad \sigma_{\mathrm{BioTime},d}=\sqrt{\left(\sum_i\sigma_{i,d}^{-2}\right)^{-1}+\sigma_{\psi}^2},\qquad t_{\mathrm{bio}}\equiv t_{\mathrm{civil}}-\hat{\Delta}_d\pmod{24}∀d:σBioTime,d​=(i∑​σi,d−2​)−1+σψ2​​,tbio​≡tcivil​−Δ^d​(mod24)
    The fused uncertainty combines inverse-variance precision with the irreducible population phase-angle convention, then shifts civil time around the 24-hour circle.

    Original sources

    Roenneberg T, Wirz-Justice A, Merrow M. Life between clocks: daily temporal patterns of human chronotypes. Journal of Biological Rhythms 18(1):80–90 (2003). Mardia KV, Jupp PE. Directional Statistics (2000).

    Life between clocksDirectional Statistics
    Timing & rhythm

    BioTime shift

    How much a night moved relative to your own recent clock position, not where that position is.

    00:00 / midnightshortest signed arc = +1.5 h later
    Personal baseline
    23:30
    Current midpoint
    01:00

    Crossing midnight is why this must be a circle: a straight average would turn 23:30 and 01:00 into midday.

    How to read it

    Positive means the sleep midpoint was later than your personal baseline. Negative means it was earlier. Near zero means little movement relative to that baseline; it does not mean your phase is early.

    How it is computed

    BioTime shift compares a night's sleep midpoint with a trailing personal baseline. Both times live on the circle, so the signed difference takes the shortest route across midnight.

    This separates position from movement: a stable late schedule can have a late BioTime and a shift near zero.

    Sleep duration is not subtracted as a separate debt term. A longer or shorter night changes the shift only when it moves the midpoint or changes which main sleep episode is selected.

    When to trust it

    One night is a noisy observation. Sparse or incoherent baseline nights are withheld rather than converted to zero, and the baseline itself changes as more nights arrive.

    Math
    ∀d∈D:Δd=circDiff⁡(md,mˉd)\forall d\in\mathcal{D}:\quad \Delta_d=\operatorname{circDiff}(m_d,\bar{m}_d)∀d∈D:Δd​=circDiff(md​,mˉd​)
    For night d, the shift is the circular difference between its midpoint mᵈ and the personal baseline midpoint m̄ᵈ.
    ∀d∈D:mˉd=cmean⁡circ({mj:d−63≤j<d−7}),Δd=circDiff⁡(md,mˉd)\forall d\in\mathcal{D}:\quad \bar{m}_d=\operatorname{cmean}_{\mathrm{circ}}\left(\{m_j:d-63\le j<d-7\}\right),\qquad \Delta_d=\operatorname{circDiff}(m_d,\bar{m}_d)∀d∈D:mˉd​=cmeancirc​({mj​:d−63≤j<d−7}),Δd​=circDiff(md​,mˉd​)
    The current web and engine ports use a 56-day baseline ending 7 days before the measured night. That guard prevents the night being measured from defining its own reference.
    ∀d:Δd extisshown  ⟺  ∣Wd∣≥14 wedge Rd≥0.30\forall d:\quad \Delta_d\ ext{is shown}\iff |W_d|\ge14\ wedge\ R_d\ge0.30∀d:Δd​ extisshown⟺∣Wd​∣≥14 wedge Rd​≥0.30
    The chart withholds the shift when the baseline has fewer than 14 nights or its circular resultant length is below 0.30, because there is no stable direction to compare against.
    ∀a,b∈[0,24):circDiff⁡(a,b)=((a−b+12) mod 24)−12\forall a,b\in[0,24):\quad \operatorname{circDiff}(a,b)=((a-b+12)\bmod24)-12∀a,b∈[0,24):circDiff(a,b)=((a−b+12)mod24)−12
    The wrapped signed difference makes 00:30 versus 23:30 read as one hour later, not twenty-three hours earlier.

    Original sources

    Roenneberg T, Wirz-Justice A, Merrow M. Life between clocks (2003). Mardia KV, Jupp PE. Directional Statistics (2000).

    Life between clocksDirectional Statistics
    Timing & rhythm

    CRHR — Circadian Rhythm of Heart Rate

    A fitted daily pattern in heart rate; its fitted minimum is one input to the BioTime estimate.

    fitted minimumillustrative only · hourly summaries
    synthetic observations
    fitted rhythm

    How to read it

    CRHR is a curve, not a wellness score. A later fitted minimum means the heart-rate rhythm reaches its lowest point later. A flat or noisy fit should be treated as inconclusive, not as a precise phase.

    How it is computed

    OptiHealth fits a single 24-hour cosinor harmonic to hourly heart-rate summaries. The fitted minimum is the cardiac phase estimate; the fit also has a mean level, amplitude and uncertainty. HAC covariance and the delta method carry uncertainty from the fit into that phase estimate.

    The chart below is synthetic and illustrative. It teaches the difference between noisy observations and a fitted rhythm; it is not your raw heart rate.

    When to trust it

    The phase is less trustworthy with sparse hours, heavy activity or a small fitted amplitude. OptiHealth carries uncertainty from the fitted coefficients and declines to present a sharp minimum when the rhythm is not pinned down.

    Math
    ∀t∈T:HR(t)=M+βcos⁡(2πt24)+γsin⁡(2πt24)+ε(t)\forall t\in\mathcal{T}:\quad HR(t)=M+\beta\cos\left(\frac{2\pi t}{24}\right)+\gamma\sin\left(\frac{2\pi t}{24}\right)+\varepsilon(t)∀t∈T:HR(t)=M+βcos(242πt​)+γsin(242πt​)+ε(t)
    The conceptual OptiHealth model over observed hourly summaries 𝒯: M is the mean, β and γ encode the 24-hour wave, and ε is the residual. The cited wearable papers additionally model activity and correlated noise; this product uses a narrower harmonic fit.
    ∀(β,γ)∈R2:A=β2+γ2,φ=atan2⁡(γ,β),tmin⁡=(24φ2π+12)(mod24)\forall(\beta,\gamma)\in\mathbb{R}^2:\quad A=\sqrt{\beta^2+\gamma^2},\qquad \varphi=\operatorname{atan2}(\gamma,\beta),\qquad t_{\min}=\left(\frac{24\varphi}{2\pi}+12\right)\pmod{24}∀(β,γ)∈R2:A=β2+γ2​,φ=atan2(γ,β),tmin​=(2π24φ​+12)(mod24)
    Amplitude A and phase φ are reconstructed from the sine/cosine coefficients; the minimum is half a cycle after the fitted peak.
    ∀(β,γ)≠(0,0):∇φ=(−γβ2+γ2,ββ2+γ2),Var⁡^(φ^)=∇φ⊤Σ^HAC∇φ\forall(\beta,\gamma)\ne(0,0):\quad \nabla\varphi=\left(-\frac{\gamma}{\beta^2+\gamma^2},\frac{\beta}{\beta^2+\gamma^2}\right),\qquad \widehat{\operatorname{Var}}(\hat\varphi)=\nabla\varphi^{\top}\hat{\Sigma}_{\mathrm{HAC}}\nabla\varphi∀(β,γ)=(0,0):∇φ=(−β2+γ2γ​,β2+γ2β​),Var(φ^​)=∇φ⊤Σ^HAC​∇φ
    The delta method maps coefficient uncertainty into phase uncertainty; Σ̂HAC is the heteroskedasticity-and-autocorrelation-consistent covariance of the fitted sine/cosine coefficients.
    ∀d:nd≥⌈0.40⋅14⋅24⌉,σmin⁡,d≤1 h,otherwise CRHRd is withheld\forall d:\quad n_{d}\ge\left\lceil0.40\cdot14\cdot24\right\rceil,\qquad \sigma_{\min,d}\le1\,\mathrm{h},\qquad \text{otherwise CRHR}_d\text{ is withheld}∀d:nd​≥⌈0.40⋅14⋅24⌉,σmin,d​≤1h,otherwise CRHRd​ is withheld
    A rolling 14-day fit needs at least 40% of its possible hourly buckets and a phase SD no greater than one hour; a sparse or unidentifiable rhythm is not converted into a precise clock time.

    Original sources

    Nelson W, Tong YL, Lee JK, Halberg F. Methods for cosinor-rhythmometry (1979). Bowman C et al. A method for characterizing daily physiology from widely used wearables. Cell Reports Methods 1(4):100058 (2021). Miyoshi et al. Efficient assessment of real-world dynamics of circadian rhythms in heart rate and body temperature from wearable data. Journal of the Royal Society Interface 20:20230030 (2023).

    Cosinor-rhythmometryBowman et al.Miyoshi et al.
    Sleep pressure

    BioLoad

    A model state for accumulated homeostatic sleep pressure.

    more pressureless pressureSHORT NIGHTSLONGER NIGHTtime →

    How to read it

    Higher BioLoad means the model is carrying more sleep pressure; lower means it has relaxed more.

    How it is computed

    BioLoad models accumulated homeostatic sleep pressure: the state rises toward an awake target while awake and relaxes toward a sleep target while asleep. The exact piecewise-exponential integration remembers recent sleep and gradually forgets older nights.

    Sleep need sets the sleep target. It is estimated from qualifying free nights, not assumed to be eight hours; the trajectory uses actual sleep duration when the record provides it, while sleep stages are not treated as separate currencies.

    When to trust it

    The level depends strongly on the estimated sleep need and on what was or was not tracked. Unobserved sleep is missing input, not proof of wakefulness; the time constant is borrowed from published models rather than fitted as a personal biological constant.

    Math
    ∀t:dDdt=ℓ(t)−D(t)τ,ℓ(t)={+1,awake−24−NN,asleep\forall t:\quad \frac{dD}{dt}=\frac{\ell(t)-D(t)}{\tau},\qquad \ell(t)=\begin{cases}+1,&\text{awake}\\-\dfrac{24-N}{N},&\text{asleep}\end{cases}∀t:dtdD​=τℓ(t)−D(t)​,ℓ(t)=⎩⎨⎧​+1,−N24−N​,​awakeasleep​
    D relaxes toward one target while awake and another while asleep, with time constant τ and estimated daily sleep need N.
    ∀[t0,t1] with constant ℓ:D(t1)=ℓ+(D(t0)−ℓ)e−(t1−t0)/τ\forall [t_0,t_1]\text{ with constant }\ell:\quad D(t_1)=\ell+\bigl(D(t_0)-\ell\bigr)e^{-(t_1-t_0)/\tau}∀[t0​,t1​] with constant ℓ:D(t1​)=ℓ+(D(t0​)−ℓ)e−(t1​−t0​)/τ
    The engine integrates each observed awake or asleep segment exactly as a piecewise exponential, rather than stepping the curve with Euler updates.
    ∀F={Sf:free-night actual sleep durations}, ∣F∣≥20:N=clip⁡[5,12] ⁣(Q0.8(F)),∣F∣<20⇒N=8 h (fallback)\forall F=\{S_f:\text{free-night actual sleep durations}\},\ |F|\ge20:\quad N=\operatorname{clip}_{[5,12]}\!\left(Q_{0.8}(F)\right),\qquad |F|<20\Rightarrow N=8\,\mathrm{h}\text{ (fallback)}∀F={Sf​:free-night actual sleep durations}, ∣F∣≥20:N=clip[5,12]​(Q0.8​(F)),∣F∣<20⇒N=8h (fallback)
    Personal sleep need N is the 80th percentile of at least 20 qualifying weekend-wake durations, clipped to 5–12 hours; with fewer free nights the explicit 8-hour fallback is flagged.
    ∀t:τ=7 d=168 h,D(t+Δt)=ℓ+(D(t)−ℓ)e−Δt/τ\forall t:\quad \tau=7\,\mathrm{d}=168\,\mathrm{h},\qquad D(t+\Delta t)=\ell+\bigl(D(t)-\ell\bigr)e^{-\Delta t/\tau}∀t:τ=7d=168h,D(t+Δt)=ℓ+(D(t)−ℓ)e−Δt/τ
    The shipped time constant is seven days. It controls how quickly the state forgets old sleep, not the equilibrium level itself.
    ∀d<7 after the first usable night:Dd is withheld\forall d<7\text{ after the first usable night}:\quad D_d\text{ is withheld}∀d<7 after the first usable night:Dd​ is withheld
    The first seven days are burn-in: the initial state is a model initial condition, not an observed measurement, so the web and engine hide its influence.
    ∀S,N>0:D∗=1−SN\forall S,N>0:\quad D^*=1-\frac{S}{N}∀S,N>0:D∗=1−NS​
    Under a stable pattern of S sleep-hours per day, the equilibrium is 1 − S/N: sleeping less than N leaves the state higher than zero.

    Original sources

    Borbély AA. A two process model of sleep regulation. Human Neurobiology 1(3):195–204 (1982). Rajdev P et al. A unified mathematical model to quantify performance impairment for chronic sleep restriction and total sleep deprivation. Journal of Theoretical Biology 331:66–77 (2013). Ramakrishnan S et al. A unified model of performance for predicting the effects of sleep and caffeine. Sleep 39(10):1827–1841 (2016).

    Rajdev et al.Ramakrishnan et al.
    Alertness

    PRIME

    A modelled waking-day curve combining homeostatic sleep pressure and circadian phase, converted to predicted KSS.

    nowhomeostaticcircadiandrive → KSS
    homeostatic
    circadian
    sum

    How to read it

    The curve is a forecast-like model output, not a direct energy reading. In the model, a larger raw alertness drive maps to a lower predicted KSS; a higher predicted KSS means sleepier.

    How it is computed

    PRIME adds a homeostatic component that changes with time awake to a 24-hour circadian cosine positioned by BioTime. The sum is converted to the Karolinska Sleepiness Scale.

    The visual separates the components so the daily curve can be read as a model composition rather than as a mysterious score.

    When to trust it

    PRIME inherits uncertainty from sleep timing, BioTime phase and the published model parameters. A smooth curve can look precise while still being wrong for an individual; logging KSS is the relevant way to compare prediction with experience.

    Math
    ∀u≥0:Swake(u)=LA+(Sw−LA)edu\forall u\ge0:\quad S_{\mathrm{wake}}(u)=L_A+(S_w-L_A)e^{du}∀u≥0:Swake​(u)=LA​+(Sw​−LA​)edu
    The wake component changes exponentially with time awake u, from its waking level Sᵂ toward an asymptote Lᴬ.
    ∀v≥0:Ssleep(v)={Ss+v g(BL−HA),0≤v≤b(Ss)HA−(HA−BL)eg(v−b(Ss)),v>b(Ss),b(Ss)=BL−Ssg(BL−HA)\forall v\ge0:\quad S_{\mathrm{sleep}}(v)=\begin{cases}S_s+v\,g(B_L-H_A),&0\le v\le b(S_s)\\H_A-(H_A-B_L)e^{g(v-b(S_s))},&v>b(S_s)\end{cases},\qquad b(S_s)=\frac{B_L-S_s}{g(B_L-H_A)}∀v≥0:Ssleep​(v)={Ss​+vg(BL​−HA​),HA​−(HA​−BL​)eg(v−b(Ss​)),​0≤v≤b(Ss​)v>b(Ss​)​,b(Ss​)=g(BL​−HA​)BL​−Ss​​
    During sleep the homeostatic component first follows the validated brake, then approaches the high asymptote: after the brake, the exponential uses v−b(Sˢ), not v. Hᴬ, Bᴸ and g are the model parameters from Ingre et al.
    ∀t∈[0,24):p=P0+Δ^BioTime\forall t\in[0,24):\quad p=P_0+\widehat{\Delta}_{\mathrm{BioTime}}∀t∈[0,24):p=P0​+ΔBioTime​
    The circadian peak p starts at the published phase convention P₀ and is shifted by the available BioTime offset; the daily bridge uses the median available offset for the trajectory.
    ∀ public PRIME parameters:(HA,LA,g,BL,Ca,P0,a,b)=(14.3,2.4,−0.3813,12.2,2.5,16.8,9.68,−0.46),Dwake=−0.0353\forall\,\text{public PRIME parameters}:\quad (H_A,L_A,g,B_L,C_a,P_0,a,b)=(14.3,2.4,-0.3813,12.2,2.5,16.8,9.68,-0.46),\qquad D_{\mathrm{wake}}=-0.0353∀public PRIME parameters:(HA​,LA​,g,BL​,Ca​,P0​,a,b)=(14.3,2.4,−0.3813,12.2,2.5,16.8,9.68,−0.46),Dwake​=−0.0353
    These are the implemented constants: g is the sleep recovery rate and Dwake is the wake decay rate. The product does not fit a new set of constants per user.
    ∀t∈[0,24):C(t)=Cm+Cacos⁡(2π24(t−p)),A(t)=S(t)+C(t)\forall t\in[0,24):\quad C(t)=C_m+C_a\cos\left(\frac{2\pi}{24}(t-p)\right),\qquad A(t)=S(t)+C(t)∀t∈[0,24):C(t)=Cm​+Ca​cos(242π​(t−p)),A(t)=S(t)+C(t)
    The circadian cosine C(t) is added to the homeostatic component S(t) to form the raw alertness drive A(t).
    ∀t:U(t)=0 extbydefault,KSS^(t)=a+b(S(t)+C(t)+U(t)),b<0\forall t:\quad U(t)=0\ ext{by default},\qquad \widehat{\mathrm{KSS}}(t)=a+b\bigl(S(t)+C(t)+U(t)\bigr),\qquad b<0∀t:U(t)=0 extbydefault,KSS(t)=a+b(S(t)+C(t)+U(t)),b<0
    The optional 12-hour ultradian process U is disabled in the shipped model. The fitted conversion has a negative slope: more internal drive means a lower predicted sleepiness rating.

    Original sources

    Ingre M et al. Validating and extending the three process model of alertness in airline operations. PLoS ONE 9(10):e108679 (2014).

    Ingre et al. (2014)
    Alertness

    KSS — Karolinska Sleepiness Scale

    A nine-point self-report instrument for how sleepy you feel right now.

    subjective sleepiness
    higher number = sleepier
    1
    2
    3
    4
    5
    6
    7
    8
    9
    extremely alertfighting sleep
    1–3 alert
    4–6 fading
    7–9 sleepy

    How to read it

    Higher KSS means sleepier; lower KSS means more alert. It is a subjective report, not a performance test, and PRIME is expressed on this same scale so the two can be compared.

    How it is computed

    KSS uses fixed verbal anchors from extremely alert to fighting sleep. The wording is part of the instrument: changing it to an informal energy question would create a different measure.

    A logged KSS is an observation that can challenge PRIME; it is not automatically used as proof that the model is right.

    When to trust it

    Self-reports vary with context, interpretation and prompting. A rating is most useful when the same anchor wording is used consistently and the sampling pattern is remembered.

    Math
    ∀r∈KSS:r∈{1,…,9}⊂Z,r↑⟺sleepier\forall r\in\mathrm{KSS}:\quad r\in\{1,\ldots,9\}\subset\mathbb{Z},\qquad r\uparrow\Longleftrightarrow\text{sleepier}∀r∈KSS:r∈{1,…,9}⊂Z,r↑⟺sleepier
    The instrument has nine ordered anchors. A larger response means greater reported sleepiness; it does not mean a larger amount of energy or performance.

    Original sources

    Åkerstedt T, Gillberg M. Subjective and objective sleepiness in the active individual. International Journal of Neuroscience 52(1–2):29–37 (1990).

    Åkerstedt & Gillberg (1990)
    Timing & rhythm

    SRI — Sleep Regularity Index

    How repeatable your asleep/awake pattern is at the same clock time on adjacent days.

    Same clock position, one day apart
    higher match = higher SRI
    Yesterday
    Today
    00:0006:0012:0018:0024:00
    asleep
    awake
    changed state

    How to read it

    Higher SRI means more regular timing; lower SRI means more irregular timing. A high SRI does not mean the schedule is long, restorative or healthy — only that it repeats.

    How it is computed

    SRI compares the sleep/wake state at each minute with the state exactly 24 hours earlier, then averages the matches and rescales the result. It does not need one main sleep episode to be defined.

    This is schedule regularity, not phase. A person can be consistently late or inconsistently centred around an average midpoint.

    When to trust it

    SRI needs repeated, reliably classified sleep/wake data. Missing or misclassified intervals alter the match fraction, and a short history gives a fragile estimate of regularity.

    Math
    ∀i∈W, si∈{asleep,awake},W={i:si and si+1440 are observed}:SRI=200∣W∣∑i∈W1[si=si+1440]−100\forall i\in W,\ s_i\in\{\text{asleep},\text{awake}\},\quad W=\{i:s_i\text{ and }s_{i+1440}\text{ are observed}\}:\quad \mathrm{SRI}=\frac{200}{|W|}\sum_{i\in W}\mathbb{1}[s_i=s_{i+1440}]-100∀i∈W, si​∈{asleep,awake},W={i:si​ and si+1440​ are observed}:SRI=∣W∣200​i∈W∑​1[si​=si+1440​]−100
    For every minute i, count whether the sleep/wake state matches the same minute on the next day; 1440 is the number of minutes in 24 hours.

    Original sources

    Phillips AJK et al. Irregular sleep/wake patterns are associated with poorer academic performance and delayed circadian and sleep/wake timing. Scientific Reports 7:3216 (2017).

    Phillips et al. (2017)
    Clock & phase

    Behavioural–cardiac desynchronisation

    How far the time suggested by your sleep midpoint is from the time suggested by your heart-rate rhythm.

    angular gap between two clock estimateslarger gap = greater disagreement
    Sleep timing clock
    phase from sleep midpoint
    Heart-rate clock
    phase from fitted HR minimum

    Desynchronisation is the wrapped distance between these two directions. It says the estimates disagree; it does not explain why.

    How to read it

    The sleep clock answers when your sleep pattern is centred; the heart-rate clock answers when the fitted HR rhythm reaches its minimum. Desynchronisation is the shortest clock distance between those two answers.

    How it is computed

    The engine keeps the gap visible instead of hiding disagreement inside the fused BioTime value. A zero gap means both clocks point in the same direction; a two-hour gap means their phase directions are two clock-hours apart.

    The gap is computed on the circle, so 23:30 and 00:30 are one hour apart. It is a comparison of estimates, not an additional measurement stream.

    When to trust it

    A gap is only informative relative to the errors of both phase estimates. When those errors are wide, a visible gap may be ordinary estimation noise.

    Math
    ∀(φb,φc)∈[0,24)2:d=∣((φb−φc+12) mod 24)−12∣\forall(\varphi_b,\varphi_c)\in[0,24)^2:\quad d=\left|((\varphi_b-\varphi_c+12)\bmod24)-12\right|∀(φb​,φc​)∈[0,24)2:d=∣((φb​−φc​+12)mod24)−12∣
    The absolute shortest distance between the behavioural and cardiac phases, wrapped so midnight remains adjacent to the end of the day.

    Original sources

    Mardia KV, Jupp PE. Directional Statistics (2000). Bowman C et al. A method for characterizing daily physiology from widely used wearables. Cell Reports Methods 1(4):100058 (2021).

    Directional StatisticsBowman et al.