Markets coveredMatch OddsCorrect ScoreOver / UnderFirst HalfSecond Half
Statometrics
Model Library · Evaluation, testing and behaviour

Sequential Testing (SPRT)

Checks a strategy after every bet, with stop rules that control false alarms and usually need fewer bets than a fixed test.

Advancedevaluationstaking

In one sentence

The sequential probability ratio test (SPRT), devised by Abraham Wald in the 1940s, lets you update the evidence after every bet and stop as soon as it clearly favours "edge" or "no edge".

How it works

Most bettors check their results constantly and stop, or scale up, when the numbers look good. With a standard hypothesis test that is cheating: repeated peeking makes a false "significant" result far more likely.

SPRT is built for peeking. You name two specific hypotheses, such as "no edge" and "a 5% edge", and keep a running score of how much more likely your results are under one than the other. Each win nudges the score up, each loss nudges it down.

Two boundaries are set in advance. Cross the upper one and you accept the edge; cross the lower one and you accept no edge; stay in between and keep betting. On average, this reaches a decision with fewer bets than a fixed-sample test with the same error rates.

The maths

Λn=Wln⁡p1p0+Lln⁡1−p11−p0\Lambda_n = W \ln\frac{p_1}{p_0} + L \ln\frac{1 - p_1}{1 - p_0} A=ln⁡1−βα,B=ln⁡β1−αA = \ln\frac{1 - \beta}{\alpha}, \qquad B = \ln\frac{\beta}{1 - \alpha}
  • Λ: the running log-likelihood ratio after n bets.
  • W and L: the number of winners and losers so far.
  • p0: the win rate under "no edge"; p1: the win rate under "edge".
  • α: the accepted chance of a false alarm (declaring an edge that is not there).
  • β: the accepted chance of missing a real edge.
  • A and B: the upper and lower stopping boundaries.

In plain English: every result shifts the running score towards one hypothesis, and you stop the moment it crosses a line you set beforehand.

Worked betting example

You back draws on Match Odds at average odds of 3.0. To keep it simple, commission is left out here. No edge means a win rate of 1 ÷ 3 ≈ 33.3%. A 5% edge means a 35% win rate. You pick α = 0.05 and β = 0.20.

  1. Upper boundary A = ln(0.80 ÷ 0.05) ≈ 2.773.
  2. Lower boundary B = ln(0.20 ÷ 0.95) ≈ −1.558.
  3. Each winner adds ln(0.35 ÷ 0.3333) ≈ +0.0488.
  4. Each loser adds ln(0.65 ÷ 0.6667) ≈ −0.0253.

After 300 bets with 110 winners and 190 losers: 110 × 0.0488 − 190 × 0.0253 ≈ 0.557. That is between −1.558 and 2.773, so keep going.

How long might it take? If the 5% edge is real, the expected number of bets to a decision is about 3,075. A fixed-sample test with the same 5% false-alarm rate and 80% power needs about 5,064 bets. SPRT saves roughly 40% on average, but you are still looking at thousands of bets, because a 5% edge at odds of 3.0 is small relative to the noise.

Where it's good

  • Monitoring a new strategy live, where you want to check often without fooling yourself.
  • Deciding when to stop trialling a tipster or system that is not working.
  • Quality control on automated trading bots: a clear rule for when performance has dropped to no edge.
  • Staged staking plans, such as moving from £2 to £10 stakes only after the upper boundary is crossed.

Limitations and pitfalls

  • It needs two precise hypotheses. The real edge could be 2% or 8%, and the test is less efficient when the truth sits away from both.
  • The simple version assumes a fixed win rate, so it suits roughly constant odds. Mixed odds require a version based on per-bet profit or likelihoods.
  • Expected sample sizes are averages; some runs take far longer.
  • Bets that are linked, such as several bets in the same match, break the independence assumption.
  • Edges fade as markets adapt, and SPRT assumes the truth is fixed; pair it with change-point detection for long-running strategies.
  • Commission must be built into the break-even win rate, which rises above 1 ÷ odds once commission is deducted.

How to build it

  • Python: a few lines of numpy to update the running score; scipy.stats for any likelihoods.
  • Data: bet-by-bet results with odds, in the order they settled.
  • Tip: write down p0, p1, α and β before the first bet and log the running score daily; changing them mid-test undoes the guarantees.
Learn it step by step
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