Markets coveredMatch OddsCorrect ScoreOver / UnderFirst HalfSecond Half
Statometrics
Model Library · Bayesian methods and time series

ARIMA

A classic forecasting model that predicts the next price move from recent moves and recent forecast errors, useful mainly for measuring bounce-back.

Intermediatetradingin-playevaluation

In one sentence

ARIMA (AutoRegressive Integrated Moving Average) forecasts the next value of a series from its own recent values and recent surprises, after first differencing it to remove trends.

How it works

ARIMA has three parts. AR (autoregressive) means the next move depends on the last few moves. I (integrated) means you model changes rather than levels, so a price that wanders is turned into a series of moves that behaves more steadily. MA (moving average) means the next move also depends on the last few forecast errors.

The model is written ARIMA(p, d, q): p past moves, d rounds of differencing, q past errors. On Betfair price data, the most common finding is a small negative AR term on tick-by-tick or minute-by-minute changes: a move up tends to be partly given back. That is the "bounce" caused by prices flicking between back and lay sides.

The honest headline is that ARIMA usually finds price changes close to unpredictable. Its main value to traders is measuring how much bounce there is and whether it is anything more than prices flicking between the back and lay sides.

The maths

An ARIMA(1, 1, 0) model on price changes:

Δxt=c+ϕ Δxt−1+εt\Delta x_t = c + \phi\, \Delta x_{t-1} + \varepsilon_t

and the general form adds error terms:

Δxt=c+∑i=1pϕi Δxt−i+∑j=1qθj εt−j+εt\Delta x_t = c + \sum_{i=1}^{p} \phi_i\, \Delta x_{t-i} + \sum_{j=1}^{q} \theta_j\, \varepsilon_{t-j} + \varepsilon_t
  • Δxₜ: the change in price at time t, here measured in ticks.
  • c: average drift per step, often near zero.
  • φ: how much of the last move carries into the next; negative means it reverses.
  • θ: how much of the last forecast error carries forward.
  • εₜ: the unpredictable part of this step's move.

In plain English: next move = a fraction of the last move plus a fraction of the last surprise, plus noise.

Worked betting example

A football match odds market, pre-match. You fit an AR(1) model to one-minute changes in the home side's price, measured in ticks, over many past matches, and get φ = −0.3 with c ≈ 0.

  1. Last move. The home side drifted 2 ticks in the last minute, from 3.40 to 3.50 (ticks are 0.05 in this range).
  2. Forecast. Next minute's expected change = −0.3 × 2 = −0.6 ticks, so a partial bounce back towards 3.45. Two minutes ahead, the expected further change is −0.3 × −0.6 = +0.18 ticks: the effect fades fast.
  3. Value of a one-tick scalp. Back £100 at 3.50 and lay at 3.45: lay stake = 100 × 3.50 ÷ 3.45 ≈ £101.45, locking in ≈ £1.45 whatever the result.
  4. Expected gain. An expected move of 0.6 ticks is worth about 0.6 × £1.45 ≈ £0.87.
  5. Why it rarely pays. Much of this bounce is the traded price flicking between people backing at 3.50 and people laying at 3.45. It is a pattern in the record of trades, not a move you can reliably trade into and out of, so test the £0.87 on your own matched bets before trusting it.

The model can be correct and still not make money on its own. It tells you how big the bounce is, which is useful to know before you build a bot around it.

Where it's good

  • Measuring short-term bounce and reversal in price series.
  • Checking whether a "pattern" is anything more than noise: if the fitted coefficients are near zero, stop looking.
  • Forecasting slower series such as weekly traded volume or match attendances.
  • Producing a baseline forecast that fancier models must beat.
  • Residual checks: the leftover errors from other models should show no ARIMA structure.

Limitations and pitfalls

  • Assumes relationships stay fixed. Pre-match markets change character sharply around team news and near kick-off, and in-play markets jump on goals.
  • Price changes on Betfair are discrete ticks with an uneven ladder, not smooth numbers; model tick positions, not raw odds.
  • Fitted coefficients are usually small, so forecasts rarely convert into profit after commission.
  • Easy to overfit by trying many (p, d, q) combinations; use information criteria and out-of-sample tests.
  • Forecasts beyond a step or two decay to the average quickly, so ARIMA is poor at long-range price prediction.
  • Market microstructure (queue position, order book imbalance) often explains more than past price changes do.

How to build it

  • statsmodels ARIMA or SARIMAX in Python; pmdarima auto_arima for order selection; forecast package in R.
  • Data: evenly spaced price series (for example one reading per second or minute) from Betfair historical data.
  • Practical tip: convert prices to tick index before differencing, so a one-tick move means the same thing at 1.50 and at 15.0.
18+ only. Educational content, not financial or betting advice. Past results do not guarantee future returns. If gambling stops being fun, get free, confidential help at BeGambleAware.org.
Members