ALGORITHM · FATIGUE INDEX

Muscle Group Fatigue Index.

MGFI is a per-muscle composite computed from soreness rating, objective session performance, set volume completion, and workload rating. It produces two orthogonal scores (readiness and accumulation) that gate volume adjustments, recovery triggers, and deload decisions independently.

Last calibrated: 2026-05-08

§1 · Definition.

The Muscle Group Fatigue Index (MGFI) quantifies cumulative fatigue for a single muscle group after a training session. Unlike a single scalar, MGFI decomposes into two independent indices:

  • Readiness index: measures how recovered a muscle group is at the start of the next session. Drives load and volume prescription for the upcoming session.
  • Accumulation index: measures how much cumulative fatigue has been deposited. Gates volume reduction, recovery protocol trigger, and reactive deload.

Both indices are bounded [0, 1]. Higher readiness index means more recovered; higher accumulation index means more accumulated fatigue. Each muscle group in a session receives an independent MGFI computation; there is no cross-muscle averaging.

§2 · Inputs.

Six inputs feed the two MGFI indices. Pump rating is collected but carries zero causal weight; it is displayed as a session annotation only.

INPUTSOURCESCALEWEIGHT IN FORMULA
Performance severity (P)Objective: Δe1RM or Δtotal reps vs prior sessionnone / mild / moderate / severe0 / 0.3 / 0.6 / 1.0 (mapped via PERF_SCORE)
Baseline coverage (C)Fraction of planned exercises with prior session data0-1Multiplies P: effectivePerfScore = P × C
Soreness readiness (SR)User self-report at session start (0-3)0→1.0, 1→0.85, 2→0.60, 3→0.3540% of readinessIndex via (1 − SR)
Soreness carryover (SC)Same soreness rating, accumulation path0→0.0, 1→0.15, 2→0.50, 3→0.8530% of accumulationIndex
Objective set fraction (OSF)Weighted actual sets ÷ planned sets0-1 (clamped)50% of accumulationIndex
Workload modifier (W)User workload rating at session end (0-3)0→0.10, 1→0.40, 2→0.75, 3→1.020% of accumulationIndex
Pump ratingUser self-report after session (0-2)0=poor, 1=moderate, 2=goodDisplay annotation only, zero causal weight

§3 · Formula.

Derived inputs

effectivePerfScore  = PERF_SCORE[perfSeverity] × baselineCoverage
  where PERF_SCORE: none→0, mild→0.3, moderate→0.6, severe→1.0

sorenessReadiness   = SORENESS_READINESS[soreness]
  where SORENESS_READINESS: 0→1.00, 1→0.85, 2→0.60, 3→0.35

sorenessCarryover   = SORENESS_CARRYOVER[soreness]
  where SORENESS_CARRYOVER: 0→0.00, 1→0.15, 2→0.50, 3→0.85

objectiveSetFraction = clamp(0, 1, weightedActualSets / expectedWeightedSets)
  where FATIGUE_WEIGHT: low→0.5, medium→1.0, high→1.5

workloadModifier    = VOLUME_STRESS[workloadRaw]
  where VOLUME_STRESS: 0→0.10, 1→0.40, 2→0.75, 3→1.00

Readiness index

readinessIndex = clamp(0, 1,
  1.0 − (effectivePerfScore × 0.60 + (1 − sorenessReadiness) × 0.40)
)

Accumulation index

accumulationIndex = clamp(0, 1,
  objectiveSetFraction × 0.50
  + sorenessCarryover  × 0.30
  + workloadModifier   × 0.20
)

Weight rationale: objective set completion (0.50) dominates accumulation because it is the only fully quantitative signal: sets either occurred or did not, regardless of user perception. Soreness carryover (0.30) captures inter-session residual stress that persists even when in-session performance is normal. Workload modifier (0.20) provides a subjective ceiling that prevents the accumulation index from remaining low when the user reports an unusually demanding session.

For readiness, objective performance severity dominates (0.60) because it reflects whether the muscle produced force at the expected level, the most direct fatigue signal available within a session. Soreness readiness (0.40) captures the prior-day residual that the objective measure cannot detect before training begins.

§4 · Worked example.

Session: Chest, Week 4, Day 1

Soreness at session start:   2 / 3
Pump at session end:         2 / 2  (good, annotation only)
Workload at session end:     2 / 3
Performance severity:        mild   (−3 total reps vs prior session)
Baseline coverage:           1.0    (3/3 exercises have prior data)
Sets completed / planned:    9 / 10 (fatigueClass=medium → weights=1.0)
                                    objectiveSetFraction = 9/10 = 0.90

Computation

effectivePerfScore  = PERF_SCORE[mild] × 1.0
                    = 0.3 × 1.0 = 0.30

sorenessReadiness   = SORENESS_READINESS[2] = 0.60
sorenessCarryover   = SORENESS_CARRYOVER[2] = 0.50
workloadModifier    = VOLUME_STRESS[2]       = 0.75
objectiveSetFraction = clamp(0, 1, 9/10)    = 0.90

readinessIndex = clamp(0, 1,
  1.0 − (0.30 × 0.60 + (1 − 0.60) × 0.40))
= 1.0 − (0.18 + 0.16)
= 1.0 − 0.34
= 0.66

accumulationIndex = clamp(0, 1,
  0.90 × 0.50 + 0.50 × 0.30 + 0.75 × 0.20)
= 0.45 + 0.15 + 0.15
= 0.75
readinessIndex: 0.66: moderate readiness. Autoregulation engine may reduce prescribed load for the next session.
accumulationIndex: 0.75: status High. Reactive deload eligible; recovery protocol surfaced to user at next session start.

§5 · Decision thresholds.

Accumulation index: volume and recovery routing

ACCUMULATION INDEX RANGESTATUSDOWNSTREAM DECISION
< 0.30FreshNo volume adjustment. Progression allowed.
0.30 - 0.49ModerateVolume held. Load progression suppressed.
0.50 - 0.64ElevatedVolume reduction candidate. Recovery check triggered.
≥ 0.65HighReactive deload eligible. Recovery protocol surfaced to user.

Readiness index: load and volume prescription

READINESS INDEX RANGEINTERPRETATION
≥ 0.80Muscle group ready for full planned volume and load.
0.60 - 0.79Moderate readiness. Autoregulation may reduce load prescription.
0.40 - 0.59Impaired readiness. Volume reduction applied by autoregulation engine.
< 0.40Low readiness. Recovery session prescription triggered.

§6 · Scope.

What MGFI does not measure:

  • MGFI does not measure systemic fatigue across muscle groups. Each muscle group receives an independent score; there is no cross-muscle pooling or global fatigue scalar.
  • MGFI does not use cardiovascular data, sleep metrics, HRV, or any wearable input. All inputs are collected during or immediately before the training session.
  • MGFI is not a wellness score. Pump and soreness are inputs to deterministic formula weights; they do not represent a subjective quality-of-life assessment, and the engine does not infer intent from them.
  • Pump rating is displayed as a session annotation but carries zero causal weight in either index formula. It was separated from the causal model because pump is strongly confounded by hydration, caffeine, and blood flow factors orthogonal to mechanical fatigue.

§ Citations

Schoenfeld, B.J. (2017). Science and Development of Muscle Hypertrophy. doi:10.1519/JSC.0000000000001817

Helms, E.R., Aragon, A.A., and Fitschen, P.J. (2014). Evidence-based recommendations for natural bodybuilding contest preparation: nutrition and supplementation. doi:10.1080/02640414.2013.862363