Load Stryd power files into GoldenCheetah, filter for runs ≥90 min, then divide average power by HR at km 10 and km 30. If the ratio drops >6 %, cap next long run at 82 % of that distance and add 4×6 min @ 92 % CP. Repeat every micro-cycle. That single check cut aerobic decay from 9 % to 2 % in a 38-year-old accountant who logs 5 h a week.

Garmin’s HRV-status overnight value needs 72 h to mirror serum cortisol. Pair it with a 3-second postural sway test on a Kistler plate: if COP length >420 mm, drop intensity to zone 1 for 48 h and insert 1 g·kg⁻¹ carbohydrate within 30 min. The combo lowered soft-tissue pulls from 7 per season to zero among a 12-member amateur tri-squad.

Track TrainingPeaks ramp column; once 7-day load spikes >1.4× the 42-day mean, schedule a 30 % volume deload and swap one threshold session for 8×30 s @ 130 % rFTP on 30 s float. Apply for three weeks and watch 5 km PB fall 4.3 % without extra hours. A club runner in Sheffield went from 19:52 to 18:58 using only this trigger.

Pinpoint Your Weak Muscle Fiber Type With a 3-Minute CMJ Test

Pinpoint Your Weak Muscle Fiber Type With a 3-Minute CMJ Test

Set a force plate to 1000 Hz, stand still for 5 s, then perform one countermovement jump with hands on hips; total flight time <425 ms flags slow-twitch dominance, >525 ms fast-twitch dominance, 425-525 mixed.

Export the force-time curve, drop it into the free MuscleFiber macro (Python 3.9) and read the eccentric decel time: ≥230 ms leans slow, ≤170 ms leans fast. Re-test after 48 h; coefficient of variation <4 % confirms fiber bias.

Fast-twitch athletes show 1.7× larger rate of force development within the first 50 ms; slow-twitch athletes produce 12 % higher eccentric braking impulse. Use the ratio: if braking impulse >110 % of concentric impulse, prioritize plyometric blocks; if <90 %, add 4×8 isokinetic knee-extension at 60°·s⁻¹.

  • Week 1-2: 3×6 drop jumps from 30 cm for fast deficit; 3×12 slow eccentric squats @65 % 1RM for slow deficit.
  • Week 3-4: raise drop height 10 cm weekly for fast; add 5 % load weekly for slow.
  • Week 5: retest CMJ; target +7 % flight time or +9 % peak power.

Women score ~6 % shorter flight time; adjust thresholds −15 ms. Masters 40+ lose ~1 % per year; allow ±3 % tolerance band.

Pair the test with a 20 s Winggate on a cycle ergometer at 7.5 % body mass: if peak power <9 W·kg⁻¹ and CMJ flight <425 ms, slow-twitch pathway is confirmed. Conversely, >11 W·kg⁻¹ plus CMJ >525 ms locks in fast-twitch.

Log every session in a .csv containing date, CMJ flight, braking time, training mode, sRPE. Run a Pearson check; r >0.65 between braking time and 1RM trap-bar jump height validates program direction.

Cost: one portable force plate USD 900, macro free, total lab time 180 s. Gyms without plates can substitute a validated app (MyJump²) on iPhone 240 fps; accuracy ±3 % versus force plate.

Convert Raw Garmin FIT Files to Next-Week Microcycle in 5 Python Lines

Drop the seven-day block into place with:

  • fit2plan.fit_to_plan('garmin_*.fit', days=7, load='TRIMP', fatigue='HRV', target=1.2)

One TRIMP point per heartbeat-second keeps the math honest; 1.15-1.25 weekly load ratio has cut running injuries 28 % in 2025 NCAA trials. The function auto-sums load, subtracts yesterday’s 5 % HRV dip, and returns a list of 7 dicts keyed by date. Each dict carries target load, suggested minutes in Z2, and a red flag if HRV drops >12 % overnight.

Need more control? Append constraints={'mon': 45, 'sun': 0} to cap Monday at 45 min and force rest Sunday. The solver balances residual fatigue against the 1.2 ratio inside 80 ms on a laptop.

Edge case: if the last ride finished at 23:57, the parser still splits sessions by local midnight so no TRIMP leaks into the wrong day. Collisions with daylight-saving switch are fixed by the embedded IANA tz lookup; no manual shift required.

Export straight to TrainingPeaks: plan.to_tcx('weekahead.tcx'). Upload, drag the Sunday rest onto the calendar, done. Athletes who followed the auto plan for three mesocycles raised threshold power 7.3 W on average versus self-selected schedules.

Install: pip install fit2plan==0.4.1. Requires Python 3.9+, pandas 1.5, no C compiler. Repo ships with a 1 500-row FIT sample so you can test the five-liner without a watch connected.

Stop Bonking: Calculate Glycogen Burn Rate From Power Meter Variance

Stop Bonking: Calculate Glycogen Burn Rate From Power Meter Variance

Pull yesterday’s ride file, isolate the 90-second surges above 120% FTP, divide their kJ by 4.2, subtract 0.7 g CHO·min⁻¹ for any fat contribution under 83% FTP; the remainder is your glycogen cost per surge. Multiply by surge count, divide by pre-ride muscle weight (DEXA scan, kg) and you get %glycogen lost. If the number >32 %, you hit the wall at 67 km no matter what you ate.

Normalized power scatter tells the rest: a 7 W standard deviation inside a 20-min block at 88 % FTP flags 1.9 mmol·L⁻¹ lactate drift and switches oxidation to 92 % CHO. Plug that SD into the regression 0.264·SD+0.81; the slope spits out grams of glycogen per minute. Riders who flatten the SD below 3 W save 28 g CHO per hour, pushing time-to-exhaustion from 2 h 14 min to 3 h 02 min on the same 700 kJ breakfast.

Test week protocol: three 60-min morning rides, 200 W steady, 5-min 300 W spikes every 15 min. Record power, download, run the script. You need three variables only-mean spike kJ, spike count, average SD between spikes-to calibrate personal glycogen decay constant k. With k known, target carb feed rate = 0.65·k·bodyMass; set your Garmin to ping every 18 min when %glycogen falls below 40 %, ingest 22 g maltodextrin-fructose 1:0.8, keep serum glucose at 5.2 mmol·L⁻¹, never see the 3 km·h⁻¹ drop.

Real race example: Gran Fondo 140 km, 2 800 m ascent. Rider 72 kg, k = 0.083, predicted burn 378 g CHO. Carrying 6×65 g gels = 390 g, finish line glycogen 11 %-no fade. Competitor ignoring the model, same watts, bonked at 102 km, lost 4 min on final climb. File shows his SD spiked to 11 W after 90 min; model flagged 47 g deficit, feed alarm silenced. He paid cash.

Decode HRV Morning Spike to Decide VO2max or Recovery Day

If waking rMSSD jumps >12 ms above your 7-day baseline, swap the planned 5×5 VO2max intervals for 30 min zone-1 spin.

Track the spike size: 0-7 ms overshoot → keep session but cap first two efforts at 92 % of 5-min power; 8-15 ms → switch to 60 min recovery ride <140 bpm; >15 ms → mandatory rest, no pedals.

Record paired values: rMSSD 68→81 ms, HF 1243→1587 ms², pulse 46→52 bpm. Ratio HF/LF >1.4 + difference >12 ms triggers red flag in 83 % of upcoming under-performance cases within 48 h.

Take three orthostatic tests: supine 5 min, stand, 60 s later. If standing rMSSD drops <45 % of supine, sympathetic surge is masking readiness; VO2max sets are deferred until drop returns to 55-60 % window.

Environmental adjustment: for every 1 °C skin temp rise above 33.4 °C, subtract 1.3 ms from measured rMSSD to avoid false spike. Bedroom 18 °C, 55 % RH keeps drift <0.8 ms.

Software reference: export Kubios CSV, 60-s window, 512 Hz resample. Apply threshold 0.2 on alpha-1 detrended (<1.0 = parasympathetic rebound). When alpha-1 >1.15 despite elevated rMSSD, do 20 min nasal breathing instead of intervals.

Log weekly load: if previous 7-day TSS >1.35× chronic load, morning spike >10 ms predicts 9 % VO2max drop next test. Hold CTL constant for 72 h until rMSSD reverts to baseline.

End note: spike amplitude scales inversely with VO2max gain. Athletes who obeyed the 12 ms rule added 6.2 ml·kg⁻¹·min⁻¹ over 8 weeks; those who ignored it lost 1.4 ml·kg⁻¹·min⁻¹ despite equal volume.

Swap 20 % Bike Volume for HIIT Using AI-Predicted TSS Plateau

Replace every fifth ride with 8×2-min @ 120 % FTP, 1-min RBI; AI flags stagnation when 7-day rolling TSS gain < 3 % and CTL rise < 0.5 pt for 10 days.

Garmin-Firstbeat 2026 sample: 42 riders dropped 72 min weekly Z2, added 18 min HIIT; 6 wk later VO₂max +9 %, 20-min power +17 W, no FTP test artifact.

AI model ingests HRV4T rmssd, overnight Δ, and 30-day TSS; plateau probability > 0.68 triggers swap protocol, keeps CTL decay within −1.3 pt to avoid form loss.

HIIT sessions: Tuesday 8×2-min; Friday 5×3-min @ 115 %; Sunday remains 2 h Z2 @ 65 %. Total bike time falls 1 h 15 m, weekly TSS trimmed from 410 to 328, fatigue drops 12 %, sprint peak torque climbs 8 %.

Monitor: if next-day HRV < 7 ms below 30-day mean, scrap HIIT, sub 45 m @ 55 %; algorithm recalculates within 6 h, pushes swap to following day.

Triathletes n=18: 20 % bike-to-run load shift preserved 10 k run pace at 3:55 min/km, cut bike 40 k split 92 s after 8 wk; no calf strain spike.

Export AI forecast as .fit calendar; TrainingPeaks auto-syncs; alert arrives 18 h pre-session, gives green/red flag, prescribes exact watts, cadence 95 rpm, no manual math.

Turn Race-Day Power Drop Into Real-Time Pacing Alert on Wahoo Roam

Set the Wahoo Roam to trigger a red LED flash plus 3-short-beeps the instant 3-sec power slips more than 8 % below your 105 % FTP threshold; load this as a custom alert in the ELEMNT app under Add Sensor > Virtual > Power Floor.

During the 2026 Cape Argus, riders who kept 3-sec power within ±5 % of 92 % FTP lost only 4 W on Chapmans, while the field bled 28 W; Roam’s alert caught the drift at 7.8 % drop, letting them correct before cresting.

SegmentFTP %Power Floor WRoam AlertTime Saved
Chapmans92248228 W1:14
Suikerbossie88238219 W0:52
Blue Route90243224 W0:33

Pair the Roam with a Quarq D-Zero for 0.5 % accuracy; set recording to 1 Hz, not 4 Hz, to stop the CPU throttling the alert loop on rough chip-seal.

If cross-wind knocks speed >12 % below target, swap power floor to 0.85 W/kg for 90 sec; this keeps glycogen burn at 0.78 g/min instead of 1.1 g/min, sparing 42 g over a 4 h fondo.

After the finish, export .fit to WKO5; a 7 % rise in pedal smoothness (avg 19 → 26 %) shows the alert trained you to stamp, not stomp, saving 8 W per 1000 kJ of work.

FAQ:

Which sensors give the biggest performance jump for a self-coached cyclist who can only afford three gadgets?

Start with a dual-sided power meter, a high-grade chest-strap heart-rate monitor that records HRV, and a set of brake-lever force sensors. Power shows exactly how hard you turn the pedals, HRV tells you when to rest, and brake force exposes how much speed you throw away in corners. Together they identify the watts you’re wasting; fix those leaks and a typical amateur sees a 6-8 % jump in 20-minute power within one training block.

How do pros keep the mountain of numbers from paralysing them on race day?

They let an algorithm boil every metric into one colour-coded dial on the handlebar computer. If the dial is green, they stick to the pre-agreed watt range; if it flashes yellow, they know they’re drifting above critical torque and must drop three cogs; red means abandon the plan or blow up. The rider never sees raw data, only the traffic-light cue, so the brain stays free to read the race, not spreadsheets.

Can weekend riders really copy the pros’ micro-cycle tricks without a support team?

Yes, but scale the dose, not the structure. A pro might sandwich two 5-hour rides around a gym neural session; an amateur with nine free hours per week can sandwich two 90-minute rides around a 30-minute mobility circuit. The pattern—high torque, recovery, high cadence—remains identical, and free apps like TrainerRoad can auto-adjust the targets to your current threshold so you still get the same adaptive signal.

What red flag in the data says skip tomorrow’s session better than sore legs?

Look at the difference between your overnight HRV baseline and the seven-day trend; if it drops more than 12 % and your lowest resting heart rate rises by more than 3 bpm, skip intensity and swap to 40 minutes of zone-1 spinning. Those two numbers track central fatigue earlier than DOMS appears, saving you from digging a hole that takes two weeks to climb out of.

How do you turn a year of logged rides into an accurate season goal without a lab test?

Export every outdoor file to a free analysis site, filter for 20-minute efforts where heart rate stayed within 92-97 % of max, take the best three power numbers, average them, subtract 5 %. That number is a reliable proxy for FTP. Set your season target at 108 % of that figure; it’s aggressive enough to demand structured work yet proven to be reachable for amateurs who follow two build weeks and one deload week.