Yudemon

apexflow

One iRacing Season, Two Series, and 155,256 Heartbeats

Max Frenzel, PhD · 9 September 2026 · 19 min read

Many of the things I build come from curiosity about myself, and self-experimentation has turned out to be one of my most useful product development tools. The original Yudemon HRV app grew out of a ten-day experiment to pin down my own optimal breating rate, and most of what the app does today started life as a question I wanted answered about my own physiology.

ApexFlow is the same idea in a very different setting. I built it because I wanted to know what actually happens inside me when I race. But building the tool is only half of it. So for the whole of iRacing's 2026 Season 3 I wore a heart rate strap for every test, practice, qualifying and race session in two different series, and let ApexFlow record and align every heartbeat with the car's telemetry, simply to see what I would find. This article is what came out of that: one season of sim racing, seen through my physiology.

The setup

For the full iRacing 2026 Season 3 I completed at least one race each week in the following two series:

  • Production Car Challenge (PCC) – Toyota GR86 (a car I've driven on track in the real world), a multi-class field, rolling starts, 25-minute races
  • FIA Formula 4 Challenge (Fixed) – FIA F4, single class, standing starts, 15-minute races

On the physiology side, a Polar H10 chest strap records the exact time of every heartbeat, and ApexFlow records and aligns that with the iRacing telemetry at ten samples per second: speed, brake, position on track, the gap to the nearest car ahead and behind, incidents, and so on. Over the season that added up to:

GR86F4Total
Sessions11859177
Races351853
Hours in the car21.58.329.8
Distance2,705 km1,191 km3,896 km
Laps690275965
Heartbeats111,38943,867155,256

In terms of results, the season went reasonably well. I finished the PCC championship in 87th overall, and F4 in 84th. I was aiming for top 50, but top 100 is still not too bad. Although to be honest, a lot of that is just the consistency of showing up every week.

The physiological metrics

Two metrics are central to everything in this article. Heart rate, which should be fairly self-explanatory, and HRV, heart rate variability. HRV is the beat-to-beat variation in the time between heartbeats, which for this article we measure as RMSSD in milliseconds and smooth out over ten consecutive heartbeats. At these short timescales a lot of that variation comes from breathing – the heart naturally speeds up slightly on the inhale and slows on the exhale. But beyond breathing, HRV drops when the sympathetic, fight-or-flight side of the nervous system takes over. HRV can move on mental load and stress alone, more so than heart rate, before anything physical has happened. Very handwavingly, it's a good proxy metric for stress/arousal.

One thing I want to be clear about, because HRV usually comes with wellness connotations: a drop in HRV is not a bad thing here. Racing needs you switched on (at the right moments), and a driver with the HRV of someone meditating is probably not driving very hard. The interesting questions are where/when the body switches on, by how much, and whether it switches off again and recovers in between. That ability to move between the two states is what sets many elite performers apart, and it is exactly what HRV biofeedback trains.

The start

The first thing I looked at was the race start, and the first thing that stands out is that my body starts ramping up well before the green flag.

Heart rate around the green flag, GR86 rolling starts and F4 standing starts, median across races with a band holding the middle half
Heart rate around the green flag, every race of the season – the line is the median race, the band holds the middle half of races

The two series have different start procedures, and it's directly visible in the curves. In the GR86 the start is a rolling one, and the climb begins a full minute before the flag, during the formation lap: from about 70 bpm two minutes out I am already at around 96 when the green comes, and I peak at around 108 some 25 seconds after it. In the F4 the start is standing. And already about 20 or 30 seconds before the start, my heart rate starts climbing in anticipation. Then the moment the lights go out heart rate sharply rises, from 81 at the start to a peak of around 114 within 30 seconds.

HRV essentially tells the same story.

HRV around the green flag, both series, median across races with the middle-half band
HRV (RMSSD) around the green flag – it falls to a fraction of its pre-race level and takes minutes to come back

None of this came as a huge surprise, starts feel stressful. But I had not expected to see the anticipation quite so cleanly, or the difference between a rolling and a standing start quite so clearly. There is also a first hint here of something that shows up throughout the season: the data indicates that F4 is (maybe not too surprisingly) a slightly more physically intense experience.

Fights

Fights are by far the clearest signal in the whole season. Before the results, let's define what exactly we mean by fights and related concepts: a fight is another car within half a second, ahead or behind, for at least 20 seconds. Clean air is no car within 1.5 seconds on either side. The zone in between, 0.5 to 1.5 seconds, I will call near. And the first two minutes after the start are excluded from all fight data below, to not conflate the two effects.

Of the 14.4 hours of green-flag racing, only 30% was clean air. I spent 5.4 hours – 37% of all my racing – within half a second of another car, across 264 distinct fights, or a little over five per race. The longest sustained fight was just under ten minutes, at Lime Rock.

An important note on how all of the comparisons in this section are made, because it's key to the analysis: My baseline heart rate on a given day depends on sleep, exercise, stress, coffee and a dozen other things the strap cannot see, and it moves by tens of beats from one week to the next (more on that later). So every number here is computed within a race: my physiology with a car nearby, compared with my own clean-air running in that same race, on that same day. I then take the median across races, so that no single race dominates, and the whiskers on the charts are 95% confidence intervals of that median.

The closer the car, the bigger the response

The result that surprised me most in the entire season is this one. I took every sample of green-flag racing, binned it by the distance to the nearest car in 10-metre steps, worked out how far my heart rate and HRV in each bin sat from that race's clean-air level, and took the median across races.

Change in HRV and heart rate against distance to the nearest car, in 10-metre bins, with an exponential fit
Change vs clean air by distance to the nearest car – each dot is a 10 m bin, dot size is the amount of data behind it, the dashed line is an exponential fit

I did expect my physiology to respond to running closer to other cars, but I did not expect the relationship to be this clean. Heart rate rises exponentially as the gap closes: about +13 bpm when I am right on another car, half of that at around 21 metres, and indistinguishable from clean air beyond about 100 metres. A simple exponential explains 97% of the variation across the bins. HRV does the same thing in the other direction: about 40% below clean air at "contact", halving on almost exactly the same length scale, and gone by 100 metres.

Fitting the two series separately gives the same curve twice, with the F4 a little steeper and a little higher.

The same proximity analysis with the GR86 and F4 fitted independently
The same analysis with the two series fitted independently – same shape, the F4 slightly higher and shorter-range

In the GR86 the effect at zero distance is about +12 bpm, halving every 20 metres. In the F4 it is about +15 bpm, halving every 18 metres. The same hint as at the start – F4 being slightly more intense, especially in close racing. But the overall shape holds remarkably well between the two cars.

Using the time gap instead of the distance gives, unsurprisingly, the same picture.

Change in HRV and heart rate against the time gap to the nearest car, in quarter-second bins
The same analysis by time gap – the effect halves roughly every half a second, and disappears above about 2 seconds

Ahead, behind, boxed in

Distance is not the whole story. It also matters where the car is. ApexFlow classifies every moment of a race as clean air, near, a car within half a second ahead, a car within half a second behind, or boxed in with cars on both sides.

Change in HRV and heart rate vs clean air by traffic state
Change vs clean air by traffic state – median across races, first two minutes excluded

From the data, defending seems a bit more intense than attacking. That matches how it feels: it's usually easier to hunt than to be hunted. Boxed in being the worst of all is not surprising either, but it is nice to see it come out so cleanly in the data.

How long the fight lasts

ApexFlow also measures each fight against the clean air just before it began. Here are all 206 fights from outside the start window, grouped by how long they lasted.

Change in HRV and heart rate by fight duration
The cost of a fight by its duration – median change vs the clean air just before it

Heart rate behaves very cleanly here: a 20 to 30 second battle barely moves it, and from there it climbs steadily with duration, to a median of about +5 bpm through the fights that last around two minutes or more. HRV does something different. It is down in every bin, by somewhere between 6 and 22%, but it does not scale with duration at all. Interestingly, the two signals seem to be measuring different things: HRV reacts within seconds and is already fully committed in the shortest fights, while heart rate accumulates the longer the fight goes on.

Braking

Away from other cars, the biggest single stressor is heavy braking zones, so that is where I looked for the response to the driving itself. ApexFlow's braking response takes every heavy braking event – at least 30% brake pressure after at least two seconds off it, which picks out the bigger braking zones rather than every dab of the brake – and averages heart rate around the moment of brake onset, relative to the five seconds before. For the analysis I used only braking events with no car within 1.5 seconds, so that what is left is the corner and nothing else. That gave 471 events in the GR86 and 282 in the F4.

Heart rate around heavy braking, both series, mean change vs the five seconds before onset
Heart rate around heavy braking – mean change vs the five seconds before the brake goes on, band is one standard error, clean-air braking only
HRV around heavy braking, both series
The same for HRV – the mirror image, bottoming out at the same moment

Two things show up nicely. The first is the delay. Heart rate does not move for the first two or three seconds after the brake goes on, then rises to a peak eight to ten seconds later, and then dips below where it started at around fifteen seconds, which I would guess is the breath out on the following straight. HRV draws the same curve upside down. The delay is real, though a little exaggerated here: the curves are locked to the moment the brake goes on, but the corner keeps making demands after that point, through trail braking, apex and exit, so the true lag between the demanding moment and the response is shorter than eight seconds. The second is the car difference of the F4 again: a peak of about +3.7 bpm against +1.6 in the GR86, and an HRV dip of about 4.7 ms against 3.0. Shorter, harder, more intense braking zones – the car's nature showing up in my body's response.

What I find most telling, though, is the scale. A heavy braking zone in clean air costs two to four beats for about ten seconds. A car within half a second costs eight to fifteen beats for as long as it stays there. The driving does register, but it's small compared to the effect of other cars.

It is worth remembering at this point that this is sim racing. The gap between sim and real is getting smaller and smaller, but from my own experience on a real track, the physical side is where the two are still furthest apart. In the sim there are no g-forces to brace against, no heat (which is what I personally struggle with the most), and no braking zone at 200+ km/h that your body actually believes in. What is left is (mostly) the mental side of driving, and I find it quite remarkable that even that leaves a measurable trace – a few beats per corner, every corner, for a whole season. I would expect the real-world version of this curve to be far more extreme, and I hope to test that myself in the not too distant future.

The track maps

Everything so far was about whole-season-averages. What I was actually planning to look at before going into this analysis was mainly track and car differences. But the start and traffic results proved far more interesting. Still, questions like "what is the most stressful track" are interesting, so let's have a look. But before doing that, there needs to be another big caveat. My baseline physiology on a given day is set by things the telemetry or physio data cannot see – how I slept, what and when I ate, how stressful my day was, and many other factors. This makes genuine fair comparisons across tracks, weeks or series very hard. What still works is comparing a track with itself, and that is what the maps below do.

Each map shows heart rate relative to that session's own average, by position on track, aggregated across every session at the same track, with one shared colour scale across all twelve maps and the first two minutes of each session excluded. First the GR86 calendar, heart rate and then HRV. Note that on the HRV maps the scale is flipped, so that red means stressed on both.

Heart rate by track position, relative to each session's own average, for all twelve Production Car Challenge tracks
Heart rate by track position, all twelve GR86 tracks – relative to each session's own average, aggregated across every session at the track
HRV by track position, relative to each session's own average, for all twelve Production Car Challenge tracks
The same for HRV – red is low HRV, so red means stressed on both sets of maps

The maps reward a closer look. What's particularly interesting is how they show that heart rate and HRV are related but not simple inverses, exactly as the fight-duration chart also hinted at. Suzuka is a good example. Through the esses you can see both signals moving together – heart rate rising and HRV falling through the whole sequence. But on the heart rate map I look completely calm through 130R, and only get a response into the final chicane. On the HRV map, 130R is clearly a stressor. I cannot prove it from this data, but my guess is a held breath: hold your breath through a fast corner and the breathing-driven part of HRV collapses without the heart rate moving at all, which is precisely what a ten-beat RMSSD would show (and I'm sure in a real car that response through 130R would look a lot more red).

Spa shows the other thing the braking response showed: the delay. Heart rate peaks shortly after the final chicane and the first corner, not in them, and again after Eau Rouge and Raidillon rather than through the climb itself. The hottest sections of the heart rate map are the straights that follow the demanding bits, not the demanding bits themselves.

The same reading works for the F4 calendar.

Heart rate by track position for all twelve FIA F4 tracks
Heart rate by track position, the twelve F4 circuits
HRV by track position for all twelve FIA F4 tracks
The same for HRV

All these heatmaps above include all session data – clean air as well as fights. Monza in the F4 shows the effect of this nicely. There's a heart rate spike before turn one, a result of many close battles down the main straight and hoping no one (including myself) does anything stupid into the chicane.

The season's tracks, ranked

As mentioned, going into this I was hoping I could pull out a clear "most stressful track" of the season, or something like that. The truth is that other things – how close the battles were that week, and above all my daily baseline – make this a really difficult question to answer. But for what it is worth, here are the season's weeks ranked by clean-air heart rate and HRV, with every session at each track shown.

Clean-air heart rate for every session of the season by track, both series – filled dots are races, hollow dots are practice and qualifying
Clean-air heart rate by track, every session of the season – filled dots are races, hollow dots practice and qualifying, the tick is the track median
Clean-air HRV for every session of the season by track, both series
The same for HRV

A quick note on the two outliers. Qualcomm in the GR86 and Barcelona in the F4 are the two tracks where I have no usable race data (just me being an idiot and forgetting to record) so each is represented by a single solo test session driven after the season, with nobody to race, just so I could get a full grid of 12 maps. That automatically makes them look like two of the calmest tracks of the season.

Two races

Season medians are one way to look at this. The other is a single race, and two races this season tell two very different stories. Both panels below are ApexFlow's Your Race view: heart rate over the race with fights shaded (blue attacking, red defending, purple boxed in), the position trace, and a timeline of every fight and incident underneath.

Suzuka: a quiet race from the front

ApexFlow Your Race panel for the Suzuka GR86 race – peak heart rate at the start, four brief fights, heart rate settling towards the clean-air line
Suzuka – heart rate peaks right at the start, followed by a mostly calm and uneventful race

Pole position, led every lap, won. Only ten per cent of the race within half a second of another car, across four brief moments. The first was a short defence off the line. The other three were not really fights for position at all – they were backmarkers and cars coming out of the pits – and you can see that the heart rate barely reacts to them. What it did react to was the start: the peak of the whole race, 124 bpm, came on lap zero, sitting stationary in first place with the best possible view of an empty track, 45 bpm above the race's clean-air level.

Monza: never a moment alone

ApexFlow Your Race panel for the Monza F4 finale – five fights covering almost the entire race, heart rate never returning to clean air
Monza – five fights covering 91% of the race, and no clean-air stretch long enough to settle into

The F4 season finale, and a very different kind of race. Fifth to first then back to third, 91% of the race within half a second of another car, five fights – one of them four minutes and nineteen seconds long – and the state flipping between attacking, defending and boxed in all the way through, with some pretty sketchy moments. There is barely a clean-air stretch in the whole race to compare against. Heart rate sits mostly between 110 and 130 from the first lap to the last, and the peak of 133 bpm came on lap eight, moments after contact. It was also one of the most fun F4 races I had all season – close, hard, and mostly very clean racing (which is rare for both F4 and Monza, and even more so the combination of both).

Thanks to Track Titan's awesome video capture and export features I have a record of exactly what I saw in the moment, with the heart rate, HRV and traffic state from ApexFlow overlaid afterwards for this article.

Monza F4 finale, final lap onboard, with real-time heart rate, HRV, traffic state and gaps overlaid

I'm not sure whether it has any impact on the results, but as you can see from all the shaking, I race in VR, which at least subjectively makes the experience more visceral than it would be on a monitor.

All of this in ApexFlow

Nearly every view in this article is a live feature of ApexFlow: the start curves, the traffic states and fight-duration charts, the braking response, the track heatmaps and the Your Race panels all use exactly the definitions used here. The season-wide pieces – the proximity curves, the ranking of the season's tracks and the twelve-track heatmap grids – I did in a separate analysis on top of the same data, and I will look at bringing some of them into the dashboard.

If you race on iRacing and own a Bluetooth heart rate strap, you can start collecting and analysing your own racing physiology. You can record either with the Yudemon HRV app on your phone and upload the telemetry files on the web afterwards, or with a small Windows desktop app. The Getting Started guide walks through both.

Just to be clear what this is and isn't at this stage. I think everything above is genuinely interesting, and some of it – the proximity curve especially – is more striking than I expected from a season of recording my own data. But I am deliberately not claiming that any of it is actionable yet. The big open question for me, and the one that ties ApexFlow back to the HRV biofeedback side of Yudemon, is whether you can actually train or steer your nervous system to get something out of this: deliberate slow breathing on the grid or on the formation lap, or a few breaths to reset on a long straight after an intense battle or an off-track. Given what the start curves look like, the grid is the obvious place to try. I do not have the answers yet, but that is the direction I will keep investigating and building in. The other direction is out of the sim altogether: real-world telemetry support is in the works, and how much more extreme all of this gets when the g-forces (and stakes) are real is a question I would very much like to answer with my own data.

See you on track, in the sim or the real world.

Get new essays by email

Occasional essays and product updates from Yudemon – no noise, unsubscribe any time.

← All posts