Kinoku
Menu

Engine reference

How Kinoku
computes everything.

Every number Kinoku shows comes from a formula on this page. You get the formulas, the choices behind them, the studies they rest on, and where they can go wrong. See a number on a chart and want to know how it got there? This is the answer.

Pulse Score

A daily score from 0 to 100. Here is how the parts are weighted:

Training dimension: 45%
Wellness dimension: 30%
Health dimension:   25%

When a part has no data for the day, its weight spreads across the other parts. Say you skip your wellness log. Or you have not connected Health Connect. Or you logged no training. The score then leans on what is left. It never fakes confidence. If only training data is in, the score reflects only training.

For runners and swimmers, the training part mixes 75% gym with 25% of your hardest cardio or swim, when that data is in the window. This keeps a gym-only score from underrating a big run week.

State labels:

85–100: Thriving
55–84:  Building
35–54:  Steady
0–34:   Drifting

Rest days are exempt. A real rest day does not pull the training part down. Its weight spreads to the other parts, as if there were no data that day. The Rest Day feature explains the rules.

Form Band (Banister CTL / ATL / TSB)

This uses the Banister impulse-response model, which tracks how training builds you up and tires you out (Banister 1975, Calvert 1976, Skiba 2014 review). It runs two moving averages of your daily training load:

α_CTL = 1 − e^(−1/42) ≈ 0.0235   (42-day time constant)
α_ATL = 1 − e^(−1/7)  ≈ 0.1331   (7-day time constant)

CTL[t] = CTL[t-1] × (1 − α_CTL) + load[t] × α_CTL
ATL[t] = ATL[t-1] × (1 − α_ATL) + load[t] × α_ATL
TSB[t] = CTL[t] − ATL[t]

Load adds up gym tonnage (scaled by RPE when you log it), run TSS from heart rate or pace, and brisk walking (minutes above the brisk cadence threshold, turned into a steady-state equivalent). Most tools only track running. Kinoku's Form Band puts gym days in the same curve.

The full article is at /learn/banister-ctl-atl-tsb. You can also try the interactive Banister Form Band simulator.

Strength Standards

All four scores use offline tables that ship with the app. No score makes a network call.

DOTS

A fifth-degree polynomial with one set of numbers for each sex. The DOTS calculator lists the exact constants:

DOTS = total × 500 / (A + B·x + C·x² + D·x³ + E·x⁴ + F·x⁵)

IPF GoodLift (GL)

Scaled against your bodyweight. The IPF GL calculator lists the exact values:

GL = 100 × total / (A − B × e^(−C × bodyweight_kg))

Kinoku ships the numbers for classic raw 3-lift totals, the most common contest format. It does not ship the rarer formats in-app, such as bench-only, deadlift-only, squat-only, or equipped divisions. The Strength tab stays on classic raw. The web calculator uses the same numbers as the app.

Wilks 2 (2020 recalibration)

A sixth-degree polynomial with one set of numbers for each sex. The app ships the 2020 version only. To match older federation records that used the 1994 Wilks, the web Wilks calculator offers both versions as a reference.

FFMI and adjusted FFMI

fat_free_mass_kg = weight_kg × (1 − bodyFatPercent / 100)
FFMI             = fat_free_mass_kg / (height_m)²
adjusted_FFMI    = FFMI + 6.1 × (1.80 − height_m)

Source: Kouri 1995, including the 6.1 height adjustment from the same paper. The FFMI calculator shows what the bands mean.

Percentile tables

The percentiles come from public IPF meet data, using raw classic-format lifts. By design, the pool leans toward trained lifters, so it is not a benchmark for the general public. Land in the top half and Kinoku shows a "top X%" chip. Beginners see only the tier band, so no one gets a "top 95%" chip for a starter total.

Acute:Chronic Workload Ratio (ACWR)

Acute (A)   = mean of last 7 days of load
Chronic (C) = mean of last 28 days of load
ACWR        = A / C

From Gabbett 2016. Below 0.8 means you may be undertraining. 0.8–1.3 is the sweet spot. 1.3–1.5 is caution. Above 1.5 is the Gabbett "danger zone." Kinoku uses the plain rolling-average version. The ACWR calculator has the interactive version and covers the main critiques (Impellizzeri 2020).

Volume Landmarks (MEV / MAV / MRV)

Set per muscle group, drawn from the Renaissance Periodization (Israetel, Schoenfeld) framework:

  • MEV (Minimum Effective Volume): the fewest weekly sets where you still grow
  • MAV (Maximum Adaptive Volume): the set count that grows you best
  • MRV (Maximum Recoverable Volume): the most your recovery can absorb

Kinoku counts your weekly working sets per muscle group (FAILURE sets at 1.2×, DROP sets at 0.8× per Kinoku's volume conventions) and flags weeks that fall outside MEV–MRV. The defaults come from published RP ranges, and you can change them per user.

Zone Training (polarized 80/20)

Pace-based zones for GPS runs: Recovery, Easy, Tempo, Threshold, Interval, Race. The cutoffs come from your own recent best efforts (1 km / 5 km / 10 km race equivalents), not a fixed table. So the zones move with your fitness.

A weekly snapshot adds up your time in each zone across all runs. The polarized target is 80% easy / 20% hard. The weekly chart shows whether you are hitting that split or drifting into too much tempo.

Each session also gets a Training Effect score on a 0.0–5.0 scale, built from how long you ran, your time in each zone, and how steady your pace was.

Bodyweight Total Load

per_rep_load_kg  = bodyweight_snapshot_kg × coefficient + added_weight_kg
total_volume_kg  = per_rep_load_kg × reps × set_type_multiplier

Each exercise ships with a coefficient (pull-up 1.0, dip 0.98, push-up 0.64, and so on). Old sets with no captured snapshot use a 1.0× proxy, so your history stays intact. The relative-strength pillar article has the biomechanics references.

Cycle Correlations

The four phases are follicular, ovulatory, luteal, and menstrual. Kinoku works out your phase from the period start dates you log plus a typical cycle-length model. Predictions smooth across your past cycle lengths.

Correlations show only after 3 or more completed cycles. Below that, the sample is too small to mean anything. Per-phase comparisons of volume, RPE, and PR rate use pairwise Kruskal-Wallis tests for significance. A card shows only when the pattern clears a set confidence threshold. A card with too little data says so, plainly, instead of hiding.

Kinoku never tells you how to train around your cycle. Every output is a pattern to read. You decide what to do with it.

Readiness Score

A 0–100 score that blends:

  • HRV (the small beat-to-beat changes in your heart rate) against your rolling 28-day baseline (weight: ~0.40)
  • Sleep length and sleep quality against your rolling baseline (weight: ~0.25)
  • Current TSB (Form Band), where a deeply negative TSB lowers Readiness (weight: ~0.25)
  • Resting heart rate against your baseline (weight: ~0.10)

Missing inputs spread their weight, the same way Pulse Score does. Readiness feeds the opt-in Readiness Adaptation layer, which can pre-adjust tomorrow's planned weights and reps by up to ±15%. Every change is a suggestion. You approve it before the session.


For the thinking behind these engines, why Kinoku surfaces patterns instead of telling you what to do, see the Supplemental AI pillar article.