Horse Racing Systems

Here I present two systems aimed at using higher level maths for horse racing prediction. We start with a Binary Logistic Regression Model and then a Cumulative System.

Model 1: Binary Logistic Regression

The principal

For the first attempt at a horse racing system I analysed the data from 583 horses over a selection of race venues. The large sample was to hopefully eliminate factors such as day, venue, weather etc. For each horse I looked at the odds for that horse, the average odds for the race the horse was in, the number of runners and if it was ranked somewhere in the range of 1st to 5th favourite. These were to be my predicting factors along with all possible interactions between these. For the outcomes I looked purely at if the horse won the race or not. With all of this information I tried to fit a binary logistic regression model including all factors and interactions and then removed them one at a time after looking at the significance of each. Once I had found a suitable predictor I then used the data to find a suitable cut of point so that I could expect a 20% win ratio (a value that appeared reasonable from looking at previous racing results). In order to find the cut off I needed to remember that it would be worse to bet on a losing horse rather than not betting on a winning horse.

The regression model

The model is only valid for races in which there are 4 or more horses, and no more than 10.

\( A = \) the odds for the horse,
\( B = \) the average odd for the race,
\( C = \) 1 if the horse is 1st favourite, or 0 if not,
\( D = \) 1 if the horse is 2nd favourite, or 0 if not,
\( E = \) 1 if the horse is 3rd favourite, or 0 if not,
\( F = \) 1 if the horse is 4th favourite, or 0 if not.

\( x=-4.7522+19.675A+0.719B+3.5141C+1.382D+3.213E+4.03F-18.728AC-14.508AD-23.554AE-24.23BF \)

\( y= { e^x \over 1 + e^x } \)

A bet would be placed on a horse if \( y \gt 0.67 \) .

Model Test

To test the model I looked at 30 races over, a historical, several months. (It appeared that most of the races suggested not betting on any of the horse). The idea was to start with 100 units and bet 20 on each race. These 20 units would be split over all the horse worth betting on in a single race such that the same profit was expect form each horse. Clearly if it is not possible to spread the bets in such a way no bet would be placed. The results are shown below.

graph 1

The model appears to be good and predicting a continued long term profit.

Theory Test

With the success of the model and a historical test I decided to look at a theoretical test with an imaginary £100, following the same rules as before with £20 stakes on races. The test was then taken in real time using the odds from as I would have really betted. The results are shown below.

graph 2

The results were not as good as I had hoped which makes me think another system is required.

Model 2: A Cumulative System

The principle

The idea of this system comes about form thinking that in general the favourite horse (with the lowest odds) will win the race, this would make sense to stop the bookies losing out. Looking at some historical data this seems to happen somewhere between a third and a quarter of the time. The idea is that if a horse won then we simply collect the winning, but if it loses we then bet more on the next race to recover the lost money on the previous and make a profit.

The system

The wanted profit for each win would be set at 100 units and the stakes would vary in order to accommodate this. (100 units are easy to convert into whatever sums required as the mode would then act similar to a percentage). Each time we would bet on the favourite horse, in this way we bet with the bookies instead of against them. An additional advantage is the calculations are simpler for this model than in Model 1 and could be done easier on pen a paper.

\( P = \) the profit required for the race; this would be 100 + any previous losses since the last win.

Using decimal odds then the amount to bet is given by \( {P \over O - N} \)

where \( O = \) the odds for the favourites, and \( N = \) the number of favourites for the race.

Historical Test

Using the model I looked at the previous 50 races to see if the model was feasible or if the cumulative effect would be too much. The results are shown below. The graphs shows pure profit and loss rather than a bank balance.

graph 3

This system seemed to be promising. The dips would be expected, but so also is the recovery.

Real Time Test

With a successful historical test I again performed a real time test using betting odds from as they would have stood at the time of betting.

graph 4

Again we seem to realise a good return using the system. Even with more “unlucky” periods we still make a good profit over 85 races.

Real Money Test

With two successful theory tests I thought it was time to chance some real money. I invested £100 into and set to work strictly following the system for the next 48 races. The results are shown below.

graph 5

The test did not go well and I ran out of money. After the test went wrong I took a closer look at where it went wrong. Two things struck me; 1) when the odds are less than evens the horse only won half the time and cost me dearly in the system, 2) when there were multiple favourites I also bet a lot on a race.

The first course of action was to take out races with odds with less than even odds as if we have never bet on these races and therefore eliminating the problem. The graphs below show how this affected the last two tests.

graph 6 graph 7

The Real Time Test looked much better with fewer losses. Crucially, for the Real Money Betting, this time I did not run out of money. Out of interest I continued the Real Money test in theory using the history for the rest of the day from and starting prices. The graph below shows the results after the test was then extended to 68 races.

graph 8

This is now more promising as we have completely recovered from a very bad day of betting.

The Second Real Time Test

More testing would now be required with the system but with the additional constraint of not betting on horses with less than even odds. This tests will run until either I get a return of half on my initial investment (i.e. I will start with an imaginary £100, so until I reach £150) or again I run out of money. If we run out of money again we will look to see if the joint favourite issue is responsible.

graph 9

The results from the test are shown in the graphs above. It took one week worth of betting, from the 14th September to the 20th September, and 188 races to reach £151 at the close of the day. This test is looking promising. I thought I would continue with the testing for a more long term experiment. The results are shown below.

graph 10

Unfortunately by the end of the 23rd September we had run out of money again after a run of 16 losses. I feel the problem with this system is that sooner or later you will run into a sequence of losses so great that it will eventually eat into your profits. While the system will work in theory due to the fact that in real life a person would have a maximum amount they could bet and so there will come a point when they no longer have enough money to continue. We did still have the other ‘improvement’ to make to the system; that of not betting on races where there were joint favourites, or changing the amounts we bet. Unfortunately, this is not an issue worth pursuing because after a quick play around with this experiment it became clear that any changes to the joint favourites races made us lose the money quicker.


After a look into possible systems to win at horse racing betting it is sad to admit that there appears to be no perfect system. The only way to win at horse racing is to become a bookie.