Models / survival-model

DNF Risk

P(this driver retires before the flag, given still running), per lap.

survival-modelanalytics.strategy

How it works

A survival model combines a team-level reliability baseline — each constructor's per-start retirement rate — with the share of the race still to run. Mechanical and accident retirements are combined into one risk. Because the remaining distance only shrinks, the risk declines steadily toward zero through the race, with no mid-race spikes by design. An unknown team receives a fleet-wide default rate.

When to use it

  • Fantasy: discount a fast car that keeps breaking when weighing a captain pick, where a retirement costs points.
  • Weight a driver's finishing chances on a results or projection screen.

Inputs

  • constructor reliability record
  • current lap
  • race distance

Output

drivers[].reliability.dnfRiskP(retire before the flag | still running), 0–1.
drivers[].reliability.lapsTo50PctSurvivalLaps until survival crosses 50%. null when the risk is effectively zero or no laps remain.
drivers[].reliability.constructorHazardRateThe team's per-start retirement rate.

Example payload

An excerpt of one analytics.strategy delivery, trimmed to the fields this model produces. Values are illustrative. The full message shape is on the feed reference.

json
{
  "feed": "analytics.strategy",
  "lap": 35,
  "drivers": [
    {
      "number": "44",
      "tla": "HAM",
      "reliability": {
        "dnfRisk": 0.041,
        "lapsTo50PctSurvival": null,
        "constructorHazardRate": 0.08
      }
    }
  ]
}

Use it

Subscribe to analytics.strategy with a webhook and read this model's fields from each delivery:

bash
curl -X POST https://api.racehooks.io/v1/webhooks \
  -H "Authorization: Bearer $RACEHOOKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"webhookUrl":"https://your-app.com/f1","feedId":"analytics.strategy"}'

To try it without waiting for a race weekend, replay the recorded Canadian Grand Prix (2026-canada_r) from the quickstart.

How to read it

dnfRisk is the chance the driver does not reach the flag from here. It falls as the race shortens, so compare drivers on the same lap rather than one driver across the race. constructorHazardRate is the long-run team baseline behind it, useful when comparing teams before a race has much distance left to run.

Limitations

  • It is a reliability baseline scaled by distance remaining. It does not react to live damage, rain or incidents on track.
  • Risk is the same for teammates in the same car, because the baseline is team-level.
  • Published in Race and Sprint sessions only.

FAQ

Why does DNF risk only go down during a race?

It is the chance of retiring in the distance still to run. As that distance shrinks, so does the risk; it is built not to spike mid-race.

Does DNF risk react to crashes or damage?

No. It reads the team's reliability record and how much of the race remains, not live damage, weather or incidents.

Related models

Get the data

This model is delivered on analytics.strategy. Subscribe by webhook or stream it over SSE. The quickstart walks through registering an endpoint and replaying a past session against it.