Live sports intelligence

Model the match while it's still being played.

InplayRadar streams Rolling Expected Goals, momentum, and live pressure for every fixture - the same signal feed that powers ROBIN.AI and MACY.AI. Sub-second updates, one clean API.

12 leagues live · p50 latency 280ms · 99.95% uptime

ARS vs MCILive feed
Pressure stream · 5s window
ARSMCI
Match clock67'
d_index+0.31
rxG · ARS1.93
rxG · MCI1.06

The model

rxG - Rolling Expected Goals

Classic xG scores a chance the instant it happens, then forgets it. rxG keeps a decaying memory of every shot, touch, and territorial gain, so the number you read reflects the team that is dangerous right now - not the team that was dangerous ten minutes ago.

Definition

rxG_t = Σ  xG_i · e^(-λ·(t - t_i))
        i≤t

λ      decay constant  (default 0.012 /s)
xG_i   shot quality at event i
t - t_i  seconds since the event

Exponential decay window

Each event's weight halves roughly every 58 seconds. A chance from a minute ago still matters; a chance from the first half barely registers.

Possession-aware ingestion

Open-play sequences, set pieces, and counters carry separate base rates, so a single corner does not spike the curve like a clear one-on-one.

Recalculated every event

rxG is recomputed on every tracked touch, not on a fixed tick, so the curve never lags the action on the pitch.

rxG curve vs raw xG eventsλ = 0.012
0'match minute →5'
rxG (rolling)xG event

Momentum

The Momentum Index, d_index

d_index is the first derivative of rxG differential, normalized to a [-1, +1] band. It answers one question continuously: which way is the match tilting, and how hard? Positive means the home side is building pressure; the steeper the slope, the sharper the swing.

Formula

d_index = tanh( k · d/dt (rxG_home − rxG_away) )

k        sensitivity gain (1.8)
tanh     squashes to a stable [-1, +1] band
+1.0
Sustained home siege
+0.3
Home edging the play
0.00
Even contest
−0.6
Away counter forming
d_index · second halfhome ▲ / away ▼
HOMEAWAY

Time spent above the line is territorial dominance; the spikes are the moments a model should react to. ROBIN.AI consumes this exact stream to flag in-play swings before the scoreboard does.

Model API

One feed, every model

Both ROBIN.AI and MACY.AI read the same normalized signal feed over a single endpoint. Pick a model, post the live features you want, and stream inference back in real time.

POST/v2/models/robin/infer
Request
{
  "fixture_id": "epl-2026-0417",
  "stream": "live",
  "features": [
    "rxg_home", "rxg_away",
    "d_index", "pressure_5s"
  ],
  "horizon_s": 120
}
Response · 200 OK
{
  "model": "ROBIN.AI",
  "ts": 1718700000.412,
  "minute": 67,
  "signal": {
    "next_goal_prob_home": 0.41,
    "swing": "home_building",
    "d_index": 0.36,
    "confidence": 0.88
  }
}

Responses stream over Server-Sent Events at the cadence of the match. The same feature vector feeds both models, so you can run them side by side without re-ingesting a thing.

280msMedian feed latency, event to API
12Leagues covered live, expanding
1.2MTracked events processed per matchday
99.95%Inference uptime, trailing 90 days

Get the feed

Build on the industry standard for live sports intelligence.

Pull rxG, the Momentum Index, and live pressure straight into your own models. Request access and we will set up a sandbox key for your first fixture.