How a market chart becomes a workout
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) | Difficulty | Load | Cap per candle | Survive at |
|---|---|---|---|
| Easy | 0.07× | 6 | 40% of target |
| Medium | 0.45× | 20 | 55% of target |
| Hard | 0.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
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
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.