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.16

The 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 assumptions

An unavailable action never reaches the scoring function.

The lap-32 ledger

All entries are synthetic.

SetStateAvailable now?
H1used, not returnedyes — may be refitted
M1freshyes
S1electronically returnedno

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.

ActionNext-lap stateAdded costSet
stop noweither21.000 sH1
wait one lapSC starts10.000 sM1
wait one lapno SC22.000 sM1

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 s
C_now - E[C_wait] = 21.000 - 19.600 = 1.400 s

Within 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 s
21.400 > 21.000

The call flips to stop now by 0.400 s within P3.

Feasibility can end the decision

Alter one ledger entry:

M1: fresh, electronically returned, unavailable

wait 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:

ActionProjected positionExpected added cost
stop nowP323.000 s
wait one lapP415.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 calibrated

The 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.