Method

How a market chart becomes a workout

Method v1.0 · constants read from the game code at build time · 28 August 2026

reps. takes one trading session — a list of candles, each with an open, high, low and close — and turns every candle into a set of reps on a clock. A green candle is squats, a red candle is push-ups, and the size of the move decides how many. Your webcam counts them. This page is the whole rule set; nothing about scoring is hidden in the game.

1. Which exercise

A candle closes above its open: squats. Closes below: push-ups. A candle whose body is smaller than 15 basis points is a doji — it counts as squats and its wick is ignored.

2. How many reps

The candle's body — the distance from open to close — is measured in basis points of the open price. Its wick beyond the body adds a bonus of 25% of itself, capped at 25% of the body. A volume spike (more than twice the session's average volume) multiplies the result by 1.1. That effective move is scaled by the difficulty's load, rounded, and clamped between 1 and the difficulty's per-candle cap.

body_bps   = |close − open| / open × 10 000
wick_bps   = max(0, (high − low) / open × 10 000 − body_bps)
effective  = body_bps + min(wick_bps × 0.25, body_bps × 0.25)
             × 1.1 if volume > 2 × session average
reps       = clamp(round(effective × load), 1, cap)
Load and cap by difficulty
DifficultyLoadCap per candleSurvive at
Easy0.07×640% of target
Medium0.45×2055% of target
Hard0.85×30 (60 on boss charts)55% of target

Worked example

A green candle opens at 100, closes at 100.25 and wicks up to 100.4: body 25 bps, wick 20 bps beyond the body, effective 30 bps. That candle is 2 squats on Easy, 14 squats on Medium and 26 squats on Hard.

3. How long you get

Every candle gets its own clock: 2 seconds per squat or 1.65 seconds per push-up, plus 2 seconds of setup, plus 3 more seconds when the exercise changes from the previous candle — getting down to the floor takes real time. The floor is 4 seconds for tiny dojis; the ceiling is 240 seconds and only exists for pathological charts. The session length is the sum of every candle's clock.

4. Surviving the day

You survive a session by finishing at least 55% of its total target (Easy lowers that; see the table). Missing a candle's target is a warning; missing 2 in a row starts a 12-second liquidation countdown, which you cancel by clearing the remaining reps on the failed candle. Easy allows 3 misses before the countdown.

5. What counts as a rep

The camera feeds MediaPipe's Pose Landmarker, which returns 33 body landmarks per frame, in your browser. Each exercise is a small state machine over joint angles: you must pass fully through the bottom position and fully back to the top before the next rep can start. The angle is smoothed with an exponential moving average (half-weight on each new frame) and every threshold has to hold for two consecutive frames, so a jittery landmark cannot flicker a rep in or out.

Squat

Standing
knee angle ≥ 165°
Bottom
knee angle ≤ 95°
Hold
2 frames past each threshold
Minimum gap
550 ms between reps

Form gates reject look-alikes: the torso must stay roughly upright, both feet must stay on the ground when visible, and a knee rising above the hip does not count. lib/exercises/squat.ts

Push-up

Top, side view
elbow angle ≥ 160°
Bottom, side view
elbow angle ≤ 105°
Facing the camera
155° / 115°
Minimum gap
550 ms between reps

The body must read as a plank: hip line at or above 140°, torso not folded. Front-on thresholds are wider because the elbow angle foreshortens from that view. lib/exercises/push-ups.ts

6. The calorie number

The kcal figure on a finished run is a stated assumption, not a measurement: 0.35 kcal per rep, a blended estimate for vigorous calisthenics at roughly 70 kg body weight, applied to every rep regardless of exercise or athlete. A hundred reps shows as 35 kcal. Treat it as a comparison between your own runs, not as an energy reading.

7. What we have not measured yet

We have not yet published a measured counting-accuracy figure against a human count, and the detectors have not been reviewed by a credentialed coach or physiotherapist. The thresholds above are tuned from testing sessions, not from a study. Both are on the list; until they are published, read this page as the exact rules the game applies, not as a claim about how well they match reality.

Numbers on this page are imported from the game code when the page is built, so they cannot fall behind it. Camera placement is covered on the setup page; what the camera sends anywhere is on the privacy page.