Analytics

Analytics Reference

The Analytics tier injects six ML model outputs as an analytics key on timingdata, cardata, and tyrestintseries payloads. No additional API calls, no separate feed subscriptions — the fields appear automatically when your account is on the Analytics tier. Analytics enrichment is currently available for F1; models for other sports will expand as RaceHooks grows.

Analytics enrichment requires the Analytics tier ($499/mo). Upgrade from the pricing page or the console billing page.

Enriched payload structure

Every timingdata payload gains a per-driver analytics object and a top-level overtakePairs array:

json
{
  "feed": "timingdata",
  "session": "2026 British Grand Prix — Race",
  "lap": 42,
  "data": {
    "1": {
      "position": 1,
      "lastLap": "1:29.104",
      "compound": "MEDIUM",
      "tireAge": 22,

      // ↓ injected by RaceHooks Analytics tier
      "analytics": {
        "tireHealth": 0.58,
        "tireHealthDelta": -0.04,
        "predictedLapsRemaining": 5,
        "cliffRisk": "high",
        "pitStopProbability": 0.79,
        "expectedWindowOpen": 1,
        "expectedWindowClose": 4,
        "winProbability": 0.61,
        "winProbabilityDelta": +0.08,
        "podiumProbability": 0.88,
        "safetyCarProbability": 0.14,
        "ltoe": -0.144,
        "ltoeCategory": "overperforming",
        "paceRank": 1
      }
    }
  },

  // overtake pairs are top-level, not per-driver
  "overtakePairs": [
    { "attacker": 4, "defender": 1, "p3lap": 0.11 },
    { "attacker": 14, "defender": 4, "p3lap": 0.44 }
  ]
}

Tire State Intelligence

Algorithm:Kalman Filter + Gaussian Process Regression

Per-driver tire health and degradation prediction, updated on every timing update.

FieldTypeDescription
analytics.tireHealthnumber0.0–1.0. Current estimated tire health (1.0 = new). Values below 0.35 indicate the cliff zone.
analytics.tireHealthDeltanumberRate of change per lap. Negative = degrading. Accelerating negative delta = cliff approaching.
analytics.predictedLapsRemainingintegerModel-estimated laps before health reaches the critical threshold for this compound on this circuit.
analytics.cliffRiskstring"low" | "medium" | "high" | "critical". Derived from tireHealthDelta acceleration.
The Kalman filter updates degradation rate on every timing packet, not just lap completions. Catches early degradation 3–5 laps before the team notices the delta.

Win Probability

Algorithm:Continuous Time Markov Chain (CTMC)

Win probability for every driver, updated on every timing update including safety car and incident events.

FieldTypeDescription
analytics.winProbabilitynumber0.0–1.0. Probability of this driver winning the race from current state.
analytics.winProbabilityDeltanumberSigned change from the prior lap. Large positive spikes typically indicate safety car deployment benefitting this driver.
analytics.podiumProbabilitynumberP(top 3 finish). Useful for fantasy apps and broadcast narrative scoring.
analytics.topHalfProbabilitynumberP(top 10 finish). Useful for points threshold modelling.
Computed via matrix exponentiation — analytically exact within model assumptions and fast enough to run on every timing packet, not just at lap boundaries.

Pit Stop Prediction

Algorithm:Bidirectional LSTM

Per-driver pit stop probability and expected window, updated every lap.

FieldTypeDescription
analytics.pitStopProbabilitynumber0.0–1.0. Probability of a pit stop this lap. Track the gradient across successive laps — 0.31→0.44→0.62→0.78 is more informative than any single value.
analytics.expectedWindowOpenintegerLaps from now until the probable pit window opens. null if probability is below threshold.
analytics.expectedWindowCloseintegerLaps from now until the probable pit window closes.
analytics.undercutobject{ vs: driverNumber, gain: lapTimeDelta } — the driver most threatened by an undercut and the estimated position gain. null if no clear undercut candidate.
Trained on 7,200+ documented pit stop events from 2020–2025. The bidirectional architecture lets the model look at both recent lap history and the expected end-of-stint pattern.

Safety Car Probability

Algorithm:LightGBM Gradient Boosted Trees

Real-time probability of safety car, virtual safety car, and red flag per lap.

FieldTypeDescription
analytics.safetyCarProbabilitynumber0.0–1.0. Probability of a full safety car deployment within the next lap.
analytics.vscProbabilitynumber0.0–1.0. Virtual Safety Car probability — lower severity incidents than full SC.
analytics.redFlagRisknumber0.0–1.0. Probability of a red flag. Low baseline, spikes materially on serious incidents.
Trained on 400+ safety car events from 2018–2025. Features include field compression, recent incident rate, circuit sector characteristics, and weather. Updated every lap.

Overtake Probability

Algorithm:XGBoost with per-circuit calibration

Per-driver-pair probability of a position change within the next 3 laps. Returned as a top-level array, not per-driver.

FieldTypeDescription
overtakePairs[].attackerintegerDriver number of the car attempting to overtake.
overtakePairs[].defenderintegerDriver number of the car being challenged.
overtakePairs[].p3lapnumber0.0–1.0. Probability of attacker overtaking defender within 3 laps.
Accounts for circuit overtake index — a 1-second gap on Monza carries different probability than the same gap at Monaco. Pairs within 3 seconds of each other are included, sorted descending by probability.

Pace Normalization (LTOE)

Algorithm:LightGBM Expected Lap Time Model

Normalized pace delta: actual lap time minus model-predicted lap time. Strips out tire age, fuel load, and track evolution.

FieldTypeDescription
analytics.ltoenumberSeconds (signed). Negative = faster than expected. Positive = slower. A value of -0.18 means the driver is lapping 0.18s faster than their tire state, fuel load, and circuit conditions predict.
analytics.ltoeCategorystring"underperforming" | "neutral" | "overperforming". Derived from ltoe threshold by compound and circuit.
analytics.paceRankintegerDriver's position in the field sorted by LTOE. 1 = fastest normalized pace.
analytics.trafficAdjustedbooleanWhether the dirty-air traffic correction was applied this lap.
Trained on 2.1M lap observations from 2018–2025. R² ≈ 0.94 on out-of-sample laps — when 94% of lap time variance is explained, the residual is real information. LTOE is suppressed for 2026 until 3+ races of 2026 data are available for the new era baseline.

2026 regulation adjustments

The 2026 F1 regulations introduced structural changes to car physics — turbo lag, tripled ERS power, and active aerodynamics replacing DRS. All six models required assessment:

ModelStatusAction taken
Tire DegradationRecalibratedCircuit parameters updated for new thermal loading from turbo lag. Conservative 50% wider confidence intervals until 4+ races of 2026 data.
Win ProbabilityUpdatedDRS → Overtake Mode: same 1.0s gap threshold. Transition rate β₃ adjusted 0.90 → 1.10 for electric boost advantage.
Pit Stop PredictionAdjustedERS clipping creates saw-tooth lap time variance that mimics cliff signatures. Decision threshold raised 0.53 → 0.60.
Safety CarOffset appliedBase SC rate +0.10 for first 6 races of 2026 (driver adaptation period to turbo lag).
OvertakeRecalibratedCircuit overtake indices updated for zone-independent Overtake Mode vs. DRS zone-specific activation.
LTOESuppressedReturns null until 3+ races of 2026 data available. 2026 is a structural break — car baseline resets completely.
← Feed catalogAPI Reference →