Kinexis

Guides · ForceDecks · 8 min read

Building an athlete readiness score from CMJ data: z-scores, smallest worthwhile change and traffic lights

A step-by-step method for turning weekly countermovement jump data into a defensible readiness score — baselines, z-scores, smallest worthwhile change, and traffic-light thresholds coaches can act on.

By Vikas Kashyap · Updated 25 September 2026

A readiness score is a promise to a coach: one number, every morning, that says whether the athlete is where they normally are. To keep that promise it has to be built from the athlete's own history, it has to separate real change from noise, and the coach has to be able to ask 'why is it red?' and get an answer. Here is a method that does those three things.

Step 1 — choose few metrics, and choose them for sensitivity

Jump height is the metric coaches know and the one least sensitive to fatigue, because athletes protect it by changing strategy. The metrics that move first are the strategy ones. A defensible set for a CMJ-based score:

  • RSI-modified — the efficiency of the jump; falls under fatigue even when height holds.
  • Eccentric (braking) duration — lengthens with neuromuscular fatigue.
  • Jump height (impulse-momentum) — included because a coach will ask for it, weighted lower.
  • Relative peak propulsive force — a strength-side marker.

Four is enough. More metrics do not make the score more accurate; they make it harder to explain.

Step 2 — build each athlete's baseline

For each athlete and each metric, take the last 6–10 sessions where the athlete was not flagged, injured or returning from a break, and compute the mean and standard deviation. This is the baseline. Update it on a rolling basis so it tracks the athlete's real level through the season rather than a pre-season snapshot. Until an athlete has at least five clean sessions, do not score them; show 'baseline building' instead.

Step 3 — express today as a z-score

z = (today − baseline mean) ÷ baseline SD, per metric. Flip the sign for metrics where higher is worse (eccentric duration) so that negative always means 'worse than usual'. A z-score of −1 means today is one standard deviation below the athlete's normal. That is the language the whole score is built in.

Step 4 — decide what counts as real

Two guards stop the score reacting to noise. First, the smallest worthwhile change: a change smaller than the SWC (a common estimate is 0.2 × the between-athlete SD for the metric, or 1.5 × the metric's typical error if you have measured it) is treated as zero. Second, require agreement: one metric at −1.5 with the other three at zero is more likely a bad trial than fatigue.

Step 5 — combine and colour

Average the four z-scores (weight RSI-mod and eccentric duration at 1.5 if you want the score to lean toward the sensitive metrics). Then apply one rule the coach can repeat back to you:

ColourRuleWhat the coach does
GreenComposite z above −0.5, and no single metric below −1.5Nothing. Train as planned.
AmberComposite between −0.5 and −1.0, or any single metric between −1.5 and −2.0Ask the athlete. Consider volume, not intensity.
RedComposite below −1.0, or any single metric below −2.0, or amber three sessions runningConversation with the sports scientist or physio before the session.
Amber three sessions running is the rule that catches slow decline. A single red catches acute fatigue; a run of ambers catches the athlete who is quietly drifting, which is the one that ends in a strain.

Step 6 — always show the why

The score is the headline. Underneath it, always show the four metrics with their z-scores and a one-line explanation: 'Red — RSI-mod −2.1 and eccentric duration −1.6 versus 8-session baseline; jump height stable.' A score without a reason is a score coaches stop trusting within a month.

What this does not do

  • It does not replace wellness, load or sleep data. It is one input. A CMJ-only score with a wellness overlay is a better readiness system than either alone.
  • It does not diagnose. Red means 'different from usual', not 'injured'.
  • It does not work for an athlete without a baseline. Resist the urge to score against squad averages; that is profiling, not readiness.

How Kinexis handles this

Kinexis runs exactly this method on every ForceDecks session: per-athlete rolling baselines, z-scores with a smallest-worthwhile-change guard, a composite with your thresholds and your colours, and the written reason underneath — and it can fold in NordBord, ForceFrame and PhotonSport data so the readiness view is the whole athlete, not one jump.

See it on a real athlete profile

Fifteen minutes, your questions, the system running live. No deck, no pressure either way.