Bill Benter turned Hong Kong win odds into probabilities, corrected the crowd's biases with a conditional logit model, and sized bets with the Kelly criterion. This lab reruns each step on 73,722 horses in 5,885 races: check how well the odds forecast, fit the correction yourself, size bets, and test the strategy on races the model has not seen.
← All labsBased on the case study “Benter’s Betting Strategy” (V. Sokolov), which reproduces Benter’s computer handicapping paper as annotated by Acta Machina; see Polson and Sokolov, Bayes, Artificial Intelligence, and Deep Learning, Chapter 4 (Kelly criterion). Data: Hong Kong Jockey Club races 1997–2005 (Kaggle gdaley/hkracing).
The race data file (benter-data.js) did not load, so the charts cannot be drawn. It must sit next to this page.
Each horse's win odds become an implied probability. The case study uses p = 1/(odds + 1), normalised so the field sums to 1. Then horses are grouped by that probability, and each group's actual win rate is compared with the forecast. Points on the 45° line mean the crowd is calibrated.
| Venue | Races | Avg field | Fav wins | Implied | Bias |
|---|
Case study: “favorites win approximately 4–5 percentage points more often than the public odds imply” at both tracks.
| Rank | Horses | Actual | Implied | Error |
|---|
Benter's public-only model raises every horse's log-odds to a power and renormalises within the race: ci ∝ exp(α · logit pi). With α = 1 nothing changes. With α > 1 the gaps widen and probability moves from longshots to favourites. Drag α and watch the negative log-likelihood of the observed winners.
Now add four fundamental factors next to the public log-odds: the jockey's and trainer's past win rates (from earlier races only), the starting gate (standardised within the race, positive = outside) and the horse's rating relative to the field, per 10 points. The model is a conditional logit, fitted here by Newton–Raphson on every race with a single winner.
| Parameter | Estimate | SE | z | Public-only fit |
|---|
| Model | Brier | Gain | Log-loss |
|---|
For a bet that pays b to 1 and wins with probability p, the Kelly fraction f* = (bp − q)/b maximises the long-run growth rate of the bankroll, g(f) = p·log(1 + bf) + q·log(1 − f). Bet more than f* and growth falls; near 2f* it drops to about zero (exactly zero when the edge is small). The simulator plays the same coin flips for four bettors who stake ¼, ½, 1 and 2 times Kelly.
| Stake | f | g per bet | Share of Kelly growth | Median end | 5th pct end | End below start |
|---|
Only one horse can win, so win bets in the same race are mutually exclusive. Kelly (1956), and Smoczynski and Tomkins for pari-mutuel pools, give the exact solution. Rank horses by expected return c·O. Add them one at a time while c·O is above the threshold R = (1 − Σc)/(1 − Σ1/O) over the horses already chosen, then stake fi = ci − R/Oi. The cash you hold back acts as the bet on "none of these".
| Horse | Odds O | Public p | Model c | Edge c·O − 1 | Kelly stake | Result |
|---|
The model is refitted on the training period from section 3 and used on the later races only. It bets a horse when its edge c·O − 1 is above the threshold. Flat staking bets 1 unit each time; fractional Kelly stakes a fraction of the multi-horse Kelly allocation, restricted to horses above the threshold, and compounds. The baseline bets 1 unit on the public favourite in every race.
| Strategy | Bets | Staked | Profit | ROI | Max drawdown |
|---|
The odds already pool the views of thousands of bettors. A model that starts from logit(p) and adds a few factors needs to explain only what the crowd missed, which is why α carries almost all the weight.
The bias is systematic and small: a few points for favourites, a fraction of a point for each longshot. Check the units first. Section 1 shows how much of the bias here depends on the odds-to-probability formula.
Only differences within a race matter, so there is no intercept, and factors are expressed relative to the field. It is multinomial logistic regression where the classes are the runners, the same softmax that ends a neural network classifier.
Kelly stakes are linear in the edge c·O − 1. With an 18% take, an edge only appears when the model is more confident than the market. If the model is overconfident by a few points, Kelly converts that error straight into oversized bets, and the bettor goes past 2f* where growth is negative.
Brier and log-loss can rank models differently; the betting decision needs the probabilities themselves to be right.
The edge must beat the take on each bet, survive price impact and be stable over time. The likelihood ratio test says the four factors carry real information; the backtest shows that real information and profit are different things.
Pari-mutuel betting has negative expected value for almost everyone: the track keeps about 18% of the pool before anyone is paid. Benter is famous because he is the exception. This lab is about forecasting, calibration and decisions under uncertainty, the same tools used to price insurance, size trading positions and read prediction markets.