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
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 eventExponential 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.
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
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.
/v2/models/robin/infer{
"fixture_id": "epl-2026-0417",
"stream": "live",
"features": [
"rxg_home", "rxg_away",
"d_index", "pressure_5s"
],
"horizon_s": 120
}{
"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.
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.