Recoveryspend - Home recovery lab cost-per-session + break-even
A terminal calculator that answers one question: does the home unit beat the gym-studio drop-in, and when? Costs any home recovery purchase (sauna, cold plunge, red-light panel, massage gun, per-session amenity) against a drop-in price, using the exact method from the HackedSelf article: true energy draw from nameplate watts and your electric rate, filter/service supplies per session, amortized purchase over a realistic session count, and the weekly-frequency level where the home setup breaks even in years.
Python 3.8+, standard library only. No install, no network, nothing leaves your machine.
The method
- Energy per session = heater draw (W) / 1000 x hours x $/kWh (preheat counted at half draw)
- Supplies per session = annual filter/treatment cost / sessions per year
- Amortized hardware = purchase price / sessions before it's paid off, shown separately so you can watch it fall toward zero
- Break even = solve price / sessions-per-week for the frequency where the home marginal cost equals the drop-in price, in weeks and years
The gym comparison uses the drop-in price only. If you already pay for a membership that includes the amenity, the drop-in is $0 and the home unit never wins - recoveryspend tells you that plainly.
Usage
$ python3 recoveryspend.py --price 4500 --watts 6000 --kwh 0.17 \
--sessions-year 150 --dropin 35 --name "2-person infrared sauna"
== 2-person infrared sauna vs drop-in
Energy per session 5.78 (4.5 kW effective, 0.75 h, $0.170/kWh)
Supplies per session 0.50 ($75/yr filters, 150 sessions/yr)
Marginal cost/session 6.28
Drop-in price 35.00
Break even 2.6 sessions/wk (0.7 yr)
$ python3 recoveryspend.py --json ...
{"verdict": "home wins", "marginal": 6.28, "dropin": 35.0, ...}
Also check
--preheat 1.0full-draw preheat hour instead of the half-draw default--life-sessions 500amortization window (default 500 sessions)--supplies-year 0no filter/treatment line- Exit code 1 when the home unit loses at the current frequency, so the check can gate a purchase decision in a script
Honest limits
Energy math is nameplate math: real duty cycles, ambient temperature and insulation move the true number, so treat the figure as the optimistic floor and the break-even as the optimistic edge. Sessions-per-year is a behavioral guess only you can make; the break-even output is exactly the place that guess gets honest. No study effect sizes are cited anywhere in this repo, because there are none here - this tool is dollars, not dose.
Related
The full protocol and the worked example behind this method: https://hackedself.com/recovery/home-recovery-lab-cost-per-session/
Release files for recovery-lab-math 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| recovery_lab_math-1.0.0.tar.gz | 4.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| recovery_lab_math-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.1 kB
Release files / recovery_lab_math-1.0.0.tar.gz
| Download URL | recovery_lab_math-1.0.0.tar.gz |
|---|---|
| Size | 4.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e3f45afe9d658689b64c0928ba418d78b44177c957e95ec4cb837035ed66c0d
|
|
BLAKE2b-256 checksum How to use checksums |
0f0380a7cbd7d5e08b80b7f836e86b84e47126038b902bafb9a78e4119449ad8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / recovery_lab_math-1.0.0-py3-none-any.whl
| Download URL | recovery_lab_math-1.0.0-py3-none-any.whl |
|---|---|
| Size | 5.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd31676265dfe60981924f313dddeb49322dbfc832e7275fa24751c989671280
|
|
BLAKE2b-256 checksum How to use checksums |
0dabadb1c6b6ea8110031737a46e94f4355487961f5cb08b2c1c557b62466c3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|