Week 7: The Safety Car#
What is one lap of waiting worth?
The question#
At the end of a lap, two calls remain:
- stop now at a known added cost
- wait one lap for an interruption that may make the stop cheaper
What is the value of waiting, and what supplied hazard would reverse the call?
One lap. Two outcomes. No random draw.
The words we need#
- Safety Car (SC) — a car deployed to neutralise the race; competitors reduce speed, normally do not overtake, and form a queue behind it
- hazard — the chance the SC starts on a particular lap, conditional on no SC having started earlier
- survival — the chance of reaching a later lap with no SC yet
A Virtual Safety Car (VSC) is a distinct procedure. This fixture models an SC only.
Why the relative cost changes#
During an SC, on-track cars slow and queue. The pit lane remains a separate, speed-limited path, and the regulations permit tyre changes during deployment. A stop may therefore lose less race time relative to cars on track.
- FIA 2026 Section B, Issue 08, B5.13 supplies the procedure
- Heilmeier et al. model probabilistic SC phases inside a lap-wise race model
- neither source supplies this week’s costs or constant hazard
Every number in our fixture is synthetic.
Known event, different call#
The SC is deployed now
The event is known. Validate the state, check the tyre set, and score the stop. That is the preparation warm-up.
The SC may start next lap
The event is uncertain. Waiting has an SC cost and a normal-running cost. The hazard weights them.
Do not use a probability after the event has already occurred.
A next-lap hazard is conditional#
h_l = P(SC starts on lap l | no SC before lap l)The denominator contains only races that reached lap l without an earlier
SC.
It is not:
- the chance of an SC somewhere in the race
- the chance of an SC by the end of several laps
- a calibrated Formula 1 probability
The scenario supplies h_l.
Survival multiplies#
For successive laps:
S(k) = product(1 - h_j)With synthetic constant h = 0.20:
survive lap 1 = 0.80
survive two laps = 0.80 × 0.80 = 0.64
SC arrives by end of lap 2 = 1 - 0.64 = 0.36
SC arrives on lap 2 only = 0.80 × 0.20 = 0.16The conditional hazard stays 0.20. Cumulative arrival does not.
The order of work#
validate state
↓
filter actions against the physical-set ledger
↓
compare projected finishing position
↓
score same-position actions by expected adjusted cost
↓
report the call and its assumptionsAn unavailable action never reaches the scoring function.
The lap-32 ledger#
All entries are synthetic.
| Set | State | Available now? |
|---|---|---|
| H1 | used, not returned | yes — may be refitted |
| M1 | fresh | yes |
| S1 | electronically returned | no |
used does not mean unavailable under this boundary. returned does.
Two feasible calls#
At the end of lap 32, every listed outcome retains projected P3.
| Action | Next-lap state | Added cost | Set |
|---|---|---|---|
| stop now | either | 21.000 s | H1 |
| wait one lap | SC starts | 10.000 s | M1 |
| wait one lap | no SC | 22.000 s | M1 |
Because the projected position ties, adjusted cost may decide the call.
Price the wait exactly#
The supplied next-lap hazard is h = 0.20.
E[C_wait] = h C_SC + (1 - h) C_green
= 0.20(10.000) + 0.80(22.000)
= 19.600 sC_now - E[C_wait] = 21.000 - 19.600 = 1.400 sWithin P3, the call is wait one lap by 1.400 s.
Solve the boundary#
Do not stop at the selected action. Find what would reverse it.
wait when: h(10) + (1 - h)(22) < 21
22 - 12h < 21
h > 1/12
h > 0.0833…Above the break-even hazard, wait. Below it, stop now. At equality, the added costs tie.
The low-hazard flip#
Hold every cost, position and physical set fixed. Change only the supplied
hazard to h = 0.05.
E[C_wait] = 0.05(10.000) + 0.95(22.000)
= 21.400 s21.400 > 21.000The call flips to stop now by 0.400 s within P3.
Feasibility can end the decision#
Alter one ledger entry:
M1: fresh, electronically returned, unavailablewait one lap requires M1, so it is rejected before its 19.600 s expectation
is computed.
The hazard does not matter. A cheap stop on a set the ledger does not contain is not a call.
Position remains first#
Another synthetic pair:
| Action | Projected position | Expected added cost |
|---|---|---|
| stop now | P3 | 23.000 s |
| wait one lap | P4 | 15.000 s |
Choose stop now. The smaller expected time in P4 cannot rescue the worse projected position.
Only same-position outcomes reach the adjusted-time tie-break.
Two failures worth catching#
Confuse a conditional hazard with cumulative arrival
assert survival([0.20, 0.20]) == approx(0.64)
assert arrival_by_two_laps([0.20, 0.20]) == approx(0.36)Score an action that names an unavailable set
assert "wait one lap" not in feasible_actions(returned={"M1"})
assert score_calls == {"stop now": 21.000}The decision report#
action: wait one lap
projected_position: P3
expected_added_cost: 19.600 s
physical_set: M1
supplied_next_lap_hazard: 0.20
break_even_hazard: 0.0833…
assumption: synthetic scenario input; not estimated or calibratedThe report carries the reason the action won and the threshold that would make it lose.
What leaves this week#
Your lab: validate the fixture, implement hazard and survival, gate actions on the ledger, commit the threshold before unlock, then report the feasible one-lap call.
The boundary: no Bernoulli sampling, no distribution over finishing positions, and no claim that the supplied hazard predicts Formula 1.
Week 8 changes the uncertainty: a commitment is made against a supplied weather forecast. It owns that forecast. Stop here.