In one sentence
Jump-diffusion treats a price as a gentle random drift that is occasionally hit by sudden jumps, which is exactly how in-play football, cricket and tennis prices behave.
How it works
Watch the draw price in a 0-0 football match. For long spells it shortens gently as time runs down, a tick at a time. Then a goal goes in and it leaps from under 2.0 to 4.0 or more in a second. The gentle part is the diffusion; the leap is the jump.
Robert Merton proposed this model in 1976 for share prices. A Poisson process decides when jumps happen, and a separate distribution decides how big they are. Between jumps the price follows ordinary Brownian motion.
The practical lesson is about risk. Strategies that harvest slow drift, such as backing the draw or unders and trading out, win small amounts most of the time and lose big when a jump comes. Looking only at the smooth part badly underestimates the danger.
The maths
- Xt: the price, or better its log-odds, at time t.
- μ: the steady drift, such as time decay.
- σ: the size of small random wiggles between jumps.
- Wt: Brownian motion, the source of the small wiggles.
- Nt: a Poisson process counting jumps, with rate λ per minute.
- J: the size of a jump when one happens.
In plain English: the price creeps, wobbles and, now and then, leaps; the leaps arrive at random at rate λ.
Worked betting example
A match is 0-0 late on. You back the draw for £100 at 2.00, planning to trade out in 5 minutes.
- No goal: the draw drifts in to 1.90. Lay £100 × 2.00 ÷ 1.90 ≈ £105.26. Profit ≈ £5.26.
- Goal: the draw jumps to 4.0. Lay £100 × 2.00 ÷ 4.0 = £50. Loss = £50.
Your model says goals arrive at 2.4 per 90 minutes. Expected goals in 5 minutes: 2.4 × 5 ÷ 90 ≈ 0.133. Chance of at least one goal: 1 − e to the power −0.133 ≈ 12.5%.
Expected value = 0.875 × 5.26 − 0.125 × 50 ≈ −£1.64 before commission, or about −£1.73 after 2% commission on the winning trades.
The trade wins seven times in eight, yet loses money on average. Working back from the prices, the market is only pricing a goal chance of about 9.5% over those 5 minutes. Whether the trade is good depends entirely on whether your goal rate or the market's is closer to the truth.
Where it's good
- In-play football: pricing the draw, unders and correct scores between goals.
- Cricket: slow drift in match odds punctuated by wickets and boundaries.
- Tennis: gentle moves on holds, jumps on breaks of serve.
- Stress-testing trading strategies that look smooth in backtests but hide jump risk.
Limitations and pitfalls
- Jump rates are not constant; they depend on the score, time, red cards and team tactics.
- Jump sizes depend on the state of the game, so one jump distribution for all situations is too crude.
- Fitting both jump rate and jump size from price data alone is hard; use event data where you can.
- Betfair suspends markets at goals, penalties and red cards, so you cannot trade out mid-jump; stops do not protect you.
- A long run of small wins can make a losing strategy look brilliant until the jump arrives.
How to build it
- Simulate paths with numpy: Poisson jump times plus normal wiggles; fit rates with scipy.optimize.
- Use minute-by-minute goal data to estimate λ, and price snapshots before and after events for jump sizes.
- Tip: always report the worst-case loss on a jump alongside the average profit for any in-play strategy.
Related methods
- Brownian motion and random walks are the smooth part of the model.
- Poisson processes decide when the jumps happen.
- Extreme value theory looks at the size of the worst shocks.
- Risk of ruin shows how jump losses threaten a bank.