Apple Watch · HealthKitPython · XML parsingPearson correlationn = 12 weeks

Personal Training Analysis

12 weeks of real biometric + performance data. The gap this feature would close.

Nov 17, 2025 – Feb 9, 2026

Heart Rate Variability
Weekly average SDNN · ms · Apple Watch
HRV avg
Block 2 →3045607590W1W2W3W4W5W6W7W8W9W10W11W12↑ peak 69ms↓ low 45msms
Sleep Duration & Resting Heart Rate
Weekly averages · independent y-axes
Sleep (h)RHR (bpm)
Block 2 →5h6h7h8h40444852W1W2W3W4W5W6W7W8W9W10W11W12↓ 5.6h — sleep low↑ 51 bpm — end
Strength Progression — Indexed
Week 1 = 100 · peak working weight · shoulder data from Week 6
ChestShoulderLat pull
Block 2 →80100120140160baseW1W2W3W4W5W6W7W8W9W10W11W12
HRV × Chest Strength — Scatter
Pearson r = −0.39 · n = 12 weekly pairs · each dot = one week
Weekly pairTrend
4050607090100110120130140150HRV (ms) →Chest (%)r = −0.39

What the data says

45–69 ms
HRV range
24ms spread across 12 weeks

The signal exists — no tool was acting on it in real time.

51 bpm
RHR at Week 12
+9 from Week 1 baseline

Classic overreaching signal at program end — exactly what adaptive programming should flag.

5.6 h
Sleep low — Week 5
↓18pt strength index next session

Lowest avg sleep of the block. Chest index dropped 145 → 118 the following week.

r = −0.39
HRV × Chest Press
p ≈ 0.21 · n = 12

Directional but underpowered. Consistent with sports science literature on cumulative fatigue.

How this was built

Biometric data

Apple Watch via HealthKit XML export (1.74M records). Parsed with Python using xml.etree.ElementTree.iterparse for streaming. Timestamps parsed with strptime to handle timezone offsets. HRV, resting HR, and sleep aggregated to weekly averages.

Strength data

12 weeks of handwritten workout logs from Jeff Nippard's Bodybuilding Transformation System (Foundation + Ramping blocks). Digitized manually. Peak working weight per exercise per week extracted. Indexed to Week 1 baseline — absolute numbers not shown.

Correlation

Pearson r computed from scratch — no ML library. Formula: Σ(x−x̄)(y−ȳ) / √[Σ(x−x̄)² · Σ(y−ȳ)²]. Biometric weekly averages paired with peak working weight for the same week. n = 12 pairs for HRV × Chest Press.

Limitations

Apple Watch worn inconsistently overnight in early program weeks. Exercise selection changed at Week 6 (Foundation → Ramping block), introducing confounders in the strength series. Statistical power is low at n = 12 weeks.

What this data shows — and what it doesn't

The correlation (r = −0.39, p ≈ 0.21) is not statistically significant at n = 12. It is directionally consistent with the sports science literature — HRV suppression correlates with accumulated training fatigue — but cannot be treated as causal evidence from this dataset alone.

The value of this analysis is not the r-value. It's the demonstration that the data exists, that Apple Watch captures it continuously, and that no current tool acts on it in real time at the gym. That's the product gap Adaptive Training closes.