Most fatigue trackers ask “how sore are you?” That single signal misses two out of three things that actually matter. Soreness is a downstream symptom. It tells you about yesterday’s training, sometimes about the day before that, but it doesn’t resolve the question every analytical lifter has at the start of a session: am I ready to push, or am I building debt I’ll pay for later?
MGFI — the Muscle Group Fatigue Index — is the construct Calyber uses to answer that question with a number rather than a guess. This piece is the reference for what it is, what feeds into it, and why a single fatigue score was never going to be enough.
What fatigue actually is
Training fatigue isn’t one thing. It’s three things stacked on top of each other, each measurable, each responding to inputs on a different time horizon.
- —Subjective readiness. Pre-session perception of effort capacity. Recovers fast — a single rest day or even a few hours of sleep can move it. Captured in soreness and pump reports.
- —Performance deviation. Objective gap between prescribed and actual session output: missed reps, slower velocity, reduced top sets. Lags subjective readiness by 24–72 hours.
- —Training load accumulation. Multi-session burden. Doesn’t show up in any single session. Compounds across the mesocycle. Drives deload decisions.
A scoring system that treats these as a single number conflates them. A lifter with high readiness but rising accumulation will get told they’re fine until the structural failure shows up — usually as a missed PR week three weeks into a block they could have completed if the algorithm had separated the signals earlier.
The dual-index split
Calyber’s fatigue model uses two indices, computed and tracked independently:
- —Readiness Index (RI). A short-window readiness signal. Updated each session from the most recent feedback: soreness, pump, workload, and performance against the prescribed target. Drives same-week load and rep adjustments.
- —Accumulation Index (AI). A decayed-burden integrator over the trailing sessions. Each session’s contribution decays exponentially with time. Drives multi-week deload decisions.
The split isn’t aesthetic. It’s a control-systems choice: a single index that responds to both fresh signals and chronic load will either over-react to a single bad session or under-react to a slow build. Two indices on two clocks let the autoregulator make decisions on the right time horizon.
How the indices compute
Skipping the implementation specifics, here’s the high-level math:
- —RI is a weighted composite of soreness readiness (mapped from a 0–3 scale), pump rating, workload rating, and performance score from the prior session. Each signal is normalized to [0,1]; the composite is bounded the same way. A value of 0 means “fresh,” 1 means “maxed.”
- —AI uses the same per-session inputs but integrates them across the trailing window with exponential decay
exp(−d / 3)wheredis days since each prior session. A session 3 days ago contributes ~37%; a session 6 days ago contributes ~14%. Newer sessions dominate; older sessions taper. - —Both indices respect a corroboration gate: a single high-feedback session isn’t enough. The system requires
n ≥ 2qualifying signals before a deload directive fires. This blocks the worst failure mode of subjective trackers — one bad day deloading an otherwise healthy block.
One worked example
From the data Calyber was built and tested on:
Week 6 of a 13-week upper-body block. Five training days per week. Shoulders had been working at +2 sets above MEV. Soreness was reported at 2 across two consecutive sessions, pump at 1, workload at 1. RI ticked to ~0.68. AI, still carrying the prior two weeks’ accumulated burden, sat at ~0.55. Algorithm fired a volume adjustment: shoulders next week target reduced from 24 sets to 23, no change to other muscle groups. By week 8, shoulder e1RM on Reverse Grip Bench Press was at111lbs —+15%above the week-3 baseline.
Notice what didn’t happen: a full block-wide deload. Notice what did happen: a targeted, single-muscle volume reduction, scoped to one week, computed from signals the lifter had already given. That’s what the dual-index model is for.
Why not just one index
A reasonable objection: this is more complicated than it needs to be. Single fatigue scores work for elite-athlete monitoring systems (HRV, wellness questionnaires) and they look clean on a dashboard.
The reason Calyber uses two is empirical. Fresh-readiness drift and chronic burden have different consequences for the prescription. If you over-fit to fresh readiness, you adjust load every session and the program loses its progression. If you over-fit to chronic burden, you deload too late and the last two weeks of the block get spent peaking in a fatigued state. Splitting the construct lets each pathway have its own decision rules.
The summary
MGFI is not one number on a fatigue meter. It is two indices, two clocks, two decision pathways. If you’ve ever pushed through a week that ended in a missed PR — the kind where you felt fine on Monday and were grinding by Friday — MGFI is what would have caught it on Tuesday.
For the full formula, the input mapping tables, and the threshold logic, see the Fatigue Index algorithm reference. For how the indices feed back into prescription decisions, see the methodology page.
Begin Calibration — 28-day trial, no card.
Start free trial →