Skip to content

[Feature] Calculate 1RM from MCV data, track alongside PRs with gamification #517

Description

@9thLevelSoftware

Summary

Use Mean Concentric Velocity (MCV) data captured by VBT devices to estimate a 1-rep max (1RM) for each exercise, track that 1RM over time alongside the existing PR system, apply gamification when 1RM increases, and let users choose % of 1RM (not just % of PR) when programming workout set weights.

Motivation

Velocity-based training (VBT) devices already capture per-rep MCV, so a data-driven 1RM estimate is available without forcing the user to grind out a true 1RM. Combining (Weight, MCV) data from a variable set with a lift-specific Minimum Velocity Threshold (MVT) yields a personalized 1RM, and tracking it over time unlocks the same kind of progression and gamification we already apply to PRs.

Proposal

  • For each exercise set, calculate a velocity-based 1RM estimate from the (Weight, MCV) data points of that set using a line-of-best-fit mapped to the exercise's Minimum Velocity Threshold (MVT).
  • Persist / display this as a separate 1RM per exercise, alongside the existing PR value, in exercise history and progress views.
  • Apply gamification (badges / streaks / progress notifications) when the velocity-estimated 1RM increases for an exercise.
  • In workout set programming, add an option to set weight as % of 1RM in addition to the current % of PR option.
  • Use MCV (Mean Concentric Velocity), not Peak Velocity (PV), for this calculation. PV is too erratic on standard strength lifts.

General MVT Defaults (1RM Velocity Thresholds)

Exercise MVT (m/s)
Bench Press 0.15
Back Squat 0.30
Deadlift 0.15
Overhead Press 0.20

These are physiological averages; the user's actual MVT is stable per individual and can be inferred from a true RIR=0 rep (e.g. last rep of a heavy set of 3 or 5) — the MCV of that final completed rep is the user's personalized MVT for that lift.

Worked Example

Variable set yields:

  • Rep 1 (Heavy): 225 lbs @ 0.38 m/s MCV
  • Rep 3 (Dropped): 185 lbs @ 0.52 m/s MCV
  • Rep 6 (Dropped): 155 lbs @ 0.68 m/s MCV

Plot (Weight, MCV), fit a line, and read off the weight at which the line crosses the exercise's MVT. That weight is the velocity-estimated 1RM for that exercise.

Steps to Reproduce / Validation Steps

  1. Complete a variable set of an exercise (e.g. Bench Press) with a VBT device capturing MCV per rep.
  2. Open the exercise history / progress view for that exercise.
  3. Expected behavior: A velocity-based 1RM estimate is shown alongside the current PR, with a timestamp and the MVT used in the calculation.
  4. Complete another variable set of the same exercise in a later session with higher velocity-estimated 1RM.
  5. Expected behavior: 1RM updates, gamification (badge / progress notification) fires.
  6. Start a new routine and edit a set's load.
  7. Expected behavior: A % of 1RM option is available in addition to % of PR.

Expected Behavior

  • A velocity-based 1RM per exercise is computed and stored, derived from per-rep MCV using a line-of-best-fit mapped to that exercise's MVT.
  • 1RM is shown next to PR in relevant views (exercise history, progress / analytics).
  • Increases in 1RM trigger the same gamification flow used for PR increases.
  • A new % of 1RM option appears wherever % of PR is offered for set load programming.
  • Personal MVTs override the general defaults once the user has at least one RIR=0 rep in their history for that exercise.
  • All 1RM calculations use MCV, not Peak Velocity (PV).

Actual Behavior

Not specified — this is a feature request; current behavior does not provide velocity-based 1RM tracking, 1RM-side gamification, or a % of 1RM load option.

Implementation Notes / Open Questions

  • Where to fit the line: per set, per session, or rolling window — needs a product decision.
  • Whether to backfill 1RM history from existing logged sets that already have MCV data.
  • Conflict resolution when velocity-estimated 1RM disagrees with a logged "true" 1RM (which one wins for PR vs. 1RM display).
  • Personal MVT inference: minimum RIR=0 reps and minimum session count to trust a personal MVT over the general default.
  • PV warning: ensure analytics / calculations do not silently switch to Peak Velocity for these strength lifts.

Missing Info / Follow-up Questions

  • Should the velocity-estimated 1RM be allowed to be higher than a previously logged "true" 1RM, and if so, which value is treated as authoritative for PR comparisons?
  • Do we need a user-facing toggle to switch between "% of PR" and "% of 1RM" globally, per routine, or per set?
  • Should the gamification badge for "new velocity 1RM" be the same as, or distinct from, the existing PR badge?
  • Any preference between storing a single 1RM value vs. a small time-series for the velocity-estimated 1RM (useful for trends)?

Screenshots / Attachments

None provided.

Original Discord Report

<@1502654170031849644> - Feature Request - Use MCV data to calculate 1 rep max for each exercise set and track 1RM for each exercise alongside current PRs.  Apply gamification for increased 1RM.  Option to use % of 1RM  instead of % of PR for workout sets.

To calculate your 1RM using your MCV data,  map your coordinates as (Weight, MCV). For example, if your variable set yielded these stats: 

Rep 1 (Heavy): 225 lbs @ 0.38 m/s MCV
Rep 3 (Dropped): 185 lbs @ 0.52 m/s MCV
Rep 6 (Dropped): 155 lbs @ 0.68 m/s MCV

You plot those points, draw your line of best fit, and see at what weight the line hits your exercise's Minimum Velocity Threshold (MVT)—which is the MCV of a true, max-effort failure rep.

General MCV Thresholds for a 1RM:
Bench Press:  0.15 m/s
Back Squat: 0.30 m/s
Deadlift: 0.15 m/s
Overhead Press:  0.20 m/s

Individualizing Your Thresholds
While these numbers represent standard physiological averages, your personal MVT is a stable individual trait dictated by your specific fiber-type composition and limb lengths.

If you want to find your exact threshold without actually performing a grinding 1RM, look at your VBT data for any set where you hit a Repetition in Reserve (RIR) of 0 (a true submaximal rep to failure, such as the last rep of a heavy set of 3 or 5). The MCV of that final completed rep is your personalized MVT for that lift. 

Quick Warning on PV (Peak Velocity).  If your VBT device tracks both, make sure your software isn't accidentally set to Peak Velocity for this calculation. PV is great for explosive, ballistic movements (like cleans, jumps, or speed-bench), but it is far too erratic for mapping a 1RM profile on standard strength lifts. Stick to MCV.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions