The Kelly Criterion for Greyhound Racing Models

29 May 2026racing-analysis · kelly · allocation

The Kelly Criterion is the standard tool for sizing an allocation when you have a positive expected value. It was derived by John Kelly at Bell Labs in 1956 to solve a communication-channel problem, and it turns out to maximise the long-run geometric growth rate of a portfolio. This article explains the formula, walks through a greyhound example, and shows why TrapStats uses a fractional Kelly in practice.

All performance figures here are simulated/paper results; past performance does not guarantee future results. This is research and education, not betting advice.

The formula

For a single binary outcome at decimal price O with your estimated win probability p:

f* = (b·p − q) / b

where b = O − 1 (net price), q = 1 − p, and f* is the fraction of your portfolio to allocate. f* > 0 means the selection has positive expected value and you should allocate f* × portfolio; f* ≤ 0 means skip.

The same formula written more intuitively: you're allocating your expected value (b·p − q) divided by your net price. Bigger signal → bigger allocation. Bigger payoff multiple → smaller allocation (because the variance is wider).

A worked example

Suppose TrapStats predicts a dog at trap 5 has a 35% win probability and the forecast price is 4.0:

  • p = 0.35, O = 4.0, b = 3.0, q = 0.65.
  • Expected value per unit: p·O − 1 = 0.35 × 4 − 1 = +0.40 (i.e. +40% expected value).
  • Full Kelly: f* = (3 × 0.35 − 0.65) / 3 = 0.40 / 3 ≈ 13.3% of portfolio.

If your test portfolio is 100 units, full Kelly says allocate 13.3 units. That's an enormous allocation, and as we'll see, it's almost never the right choice in practice.

Why fractional Kelly

The Kelly formula assumes your probability estimate p is exactly right. Reality has two problems:

  1. Your p is an estimate, not a truth. Even a well-calibrated model has noise. If you overestimate by 5pp, Kelly massively over-allocates.
  2. Returns compound through losses too. A full-Kelly portfolio with the correct p still experiences ~50% drawdowns regularly. That's mathematically expected but operationally ruinous.

The standard fix is fractional Kelly: allocate α × f* where α is something like 0.25 (quarter-Kelly) or 0.5 (half-Kelly). The growth rate is α(2 − α) times the full-Kelly growth rate — so quarter-Kelly gives you 7/16 ≈ 44% of the full growth with about 1/16 the volatility. The trade-off is excellent.

In our example: quarter-Kelly on the 35% / 4.0 dog would allocate 3.3 units, not 13.3.

How TrapStats applies it

The Denis live tracker uses a percentage-tiered allocation scheme (not pure Kelly) for three reasons:

  • Shrinkage: model probabilities are shrunk toward the market-implied probability (pw_eff = (1 − λ)·prob_win + λ·(1/price), λ=0.30) before EV is computed. This is a defence against the well-documented model overconfidence on the selection arm.
  • EV bands: allocations scale 1% / 2% / 3% of the portfolio based on the shrunk EV bucket — not on full Kelly. This caps any single selection's blast radius regardless of how excited the model is.
  • Hard caps: a max-EV guardrail (denis_safety_max_ev=0.50) rejects implausibly high EV outputs as a model-overconfidence flag, and a max-price guardrail (denis_safety_max_sp=6.0) rejects long-shot phantom signals. The price floor (denis_safety_min_price=3.5) skips short-price favourites because the 4-week analysis showed those segments lose at the empirical ~28% flat win rate.

The result is a more conservative regime than full Kelly, with explicit constraints that protect against probability mis-estimation.

Common Kelly mistakes

  • Treating the model's probability as truth. Even calibrated, it's an estimate. Use fractional Kelly always.
  • Compounding through a drawdown. If your portfolio halves, your Kelly allocation halves too. That's correct — it's not a sign to "make it back" with bigger allocations.
  • Ignoring correlation. Two selections in the same race aren't independent. Kelly assumes independence, so adjust down when allocating across multiple runners in one race.
  • Confusing expected value with hit rate. A 28% hit rate at average price 5.0 is profitable in simulation; a 50% hit rate at average price 1.8 is not. Kelly cares about the expected value b·p − q, not the win rate alone.

Want the maths in one line?

The Kelly allocation is (expected value / payoff) where expected value is what you expect to win on average per unit and payoff is the net decimal price. If those numbers don't make sense for the selection, the Kelly allocation won't either. When TrapStats shows an EV of +35% at price 4.0, that's expected value = 0.35, payoff = 3.0, full-Kelly = ~11.7%. We will allocate less than that — by design.