How to use data to predict your best race days
Great legs on race day are not random. You can stack the odds by tracking training stress balance (TSB), heart rate variability (HRV), and weather. Blend these signals and you can forecast when your body is primed to push high watts and turn fitness into results.
Why TSB, HRV, and weather matter together
Each metric tells a different part of the story:
- TSB (training stress balance): A power-based freshness metric derived from your training load (CTL and ATL). Positive TSB usually means you are carrying less fatigue and can express more of your FTP. Too negative suggests high fatigue; too positive can mean you are detuned.
- HRV (heart rate variability): A recovery and readiness signal. Compare your morning HRV (often LnRMSSD) to your personal baseline to see if your autonomic nervous system is ready for hard work.
- Weather: Heat, humidity, wind, and precipitation change how many watts you can hold and how you should pace. Recognizing external load shifts prevents overcooking early and preserves your sprint or climb.
When these three align—freshness, readiness, and favorable conditions—you are likely to set personal bests in 5–60 minute power and race more effectively.
What the numbers should look like
Use these practical ranges as a starting point and calibrate with your own data:
- TSB
- -30 to -10: heavy training load; expect suppressed power and slower recovery.
- -10 to 0: normal training fatigue; good for quality workouts, not peak racing.
- +5 to +20: fresh and primed for hard efforts and racing.
- +25 or more: very fresh, but you may feel flat if you have not touched intensity.
- HRV (vs your 7–21 day baseline)
- Within ±1 SD and stable resting HR: green light for planned intensity.
- +0.5 to +1.5 SD with normal resting HR: high readiness. Good timing for a breakthrough FTP effort or race.
- < -1 SD or trending down 3+ days: caution. Consider extra recovery or a short opener instead of a full-gas day.
- Weather
- Heat and humidity: as temperature and dew point rise, expect lower sustainable watts. If it is > 25°C with a high dew point, reduce target power 2–5% and increase cooling and fluid intake.
- Wind: strong crosswinds increase stochastic effort; draft value rises. Headwinds favor steady pacing; tailwinds favor higher speed for the same watts.
- Rain: lower cornering speed and higher energy cost from drag; plan position and tire choices accordingly.
| Factor | What to monitor | Rule of thumb |
|---|---|---|
| TSB | Daily TSB from your training platform | Target +5 to +20 for A-priority races |
| HRV | Morning LnRMSSD or RMSSD vs baseline | At or above baseline, stable resting HR |
| Heat/humidity | Temp and dew point | Reduce targets 2–5% if > 25°C with high humidity |
| Wind | Speed and direction on course | Even pacing into headwinds, conserve in crosswinds |
Build a simple readiness model
You do not need a lab. A simple blended score helps you compare days and choose when to go all in.
- Normalize each input
- TSB: map -20 to +20 onto 0–100 (clip below/above).
- HRV: convert your daily value to a z-score vs your baseline (e.g., 21-day), then map -2 to +2 SD onto 0–100.
- Weather: start at 100 and subtract penalties: heat/humidity, wind, and rain.
- Blend with weights based on sensitivity: 40% TSB, 40% HRV, 20% weather works well for most riders.
// Inputs
ts b = +12; // from your PMC
hrv_z = +0.8; // SD above baseline
T = 18; DP = 8; // °C and dew point
air = 8; // wind km/h, moderate
// Normalize
function norm(x, lo, hi) { return Math.max(0, Math.min(100, 100*(x-lo)/(hi-lo))); }
let tsb_norm = norm(tsb, -20, 20); // -20 => 0, +20 => 100
let hrv_norm = norm(hrv_z, -2, 2); // -2 SD => 0, +2 SD => 100
// Weather penalties
let heat_pen = Math.max(0, (T-20)) * (DP >= 16 ? 2 : 1); // more penalty when humid
let wind_pen = air > 20 ? 10 : air > 10 ? 5 : 0;
let rain_pen = 0; // add 5–10 if wet is forecast
let weather_norm = Math.max(0, 100 - (heat_pen + wind_pen + rain_pen));
// Blended readiness
let readiness = 0.4*tsb_norm + 0.4*hrv_norm + 0.2*weather_norm; // out of 100
Interpretation
- 85–100: green light. Go for PRs at 20–60 minute power near or above FTP. Race aggressively.
- 65–84: good. Execute the plan; be smart with pacing and fueling.
- < 65: proceed with a process goal or adjust targets. You can still race well with tactics.
Example above: TSB +12, HRV +0.8 SD, cool weather and light wind often yields readiness in the 80s—excellent timing for an A or B race.
Race-week checklist and decisions
Use this 7–3–1 day rhythm before your event:
- 7 days out: Ensure last quality session is done. Let TSB rise toward +5 to +15. Keep daily HRV stable. Sleep and fueling become the priority.
- 3 days out: Short opener to touch high cadence and sweet spot, 20–30 minutes of work total. Confirm weather trends and plan pacing.
- 1 day out: Check HRV and resting HR. If HRV is down and RHR up, replace opener with an easy spin and extra carbs and sleep.
On race morning, confirm:
- TSB is between +5 and +20.
- HRV is at or above baseline and resting HR is within 3–5 bpm of normal.
- Weather plan is set: bottle count, sodium, cooling, and pacing adjustments.
Pacing adjustments
- Hot/humid: start 5–10 watts under target for the first third of the effort; increase if HR and RPE are stable. Expect slightly lower sustainable watts vs cool conditions.
- Windy: into headwinds, hold steady power in your threshold or upper tempo zone; in tailwinds, avoid over-gearing—cadence and aero still matter.
- Hilly: cap surges at 110–115% of FTP; keep average power close to target without spiking.
Fueling and cooling
- Carbs: 60–90 g/h for races over 90 minutes; 30–60 g/h for shorter events. Practice in training.
- Fluids: 500–750 ml/h in temperate weather; up to 750–1000 ml/h in heat, with 500–800 mg sodium/h depending on sweat rate.
- Cooling: pre-cool (ice slush, shade), cold bottles, and ventilation at the start.
Common pitfalls and how to avoid them
- Chasing a perfect TSB: Some riders race best at +2, others at +15. Review your last 3–5 strong performances to find your personal sweet spot.
- Reading HRV without context: A single low day after travel may not mean you are unready. Look for trends and pair HRV with resting HR and how you slept.
- Ignoring weather: A 30°C, humid day can suppress threshold power even with great TSB and HRV. Adjust pacing and fueling rather than forcing your cool-weather watts.
- Forgetting openers: If TSB is very positive, include short high-cadence efforts or a few 30–60 second activations at 110–120% of FTP to feel snappy.
Bottom line: Plan your peak days where TSB is modestly positive, HRV is at or above baseline, and the weather is manageable. When two are green and one is amber, adjust the plan. When all three are green—pin a number and go.