# Timeseries of odds in race - how to pick a model

Being new to AI/ML I'd like some pointers to where to begin. I got data from horse races. Specifically, I got the odds for each runner during the race - ca 5 times per second.

t1  r1   r2   r3 ...
1   5.25 2.04 3.25
2   5.10 2.50 2.75
...


I also know if the runner won/placed/lost My goal is to be able to say that runnerx X will win/place after ca 50-75% of the expected racetime with say 80% accuracy.

My problem is that I don't know how to model this situation. I've seem tournament strategies - ie who out of two runner will win - but here's more data - both in time and in participants

What model should I pay attention to?

/Björn

• Start simple. How well does predicting that "the favourite at time T wins the race" perform? As T increases I'd expect its accuracy to increase, but it might meet your threshold. At the very least you'll get an idea of how much better you'll need an algorithm to perform. And of course it might not even be possible. – Spacedman Oct 30 '18 at 16:08
• Hmm - that is a good idea. I'll think about for a while, and test it. Thanks. – bnl Oct 31 '18 at 8:19

Odds are directly connected to prediction accuracy. 4 means that you loose your money in 4 cases and win in one case. This is 20% probability $$\left(\frac1{4+1}\right)$$. If the bet goes down to 0.25 then the probability is 80% $$\left(\frac1{0.25+1}\right)$$. This logic is true if the spread between betting for the horse and against the horse is low. Betting is a financial market where people with the best betting algorithms bet the most and actually decide what the bet should be. If there is a situation on the market where someone could earn money it will be closed in milliseconds by trading robots. This is called an Efficient Market Hypothesis. In your data you can actually check if the hypothesis is true for horse betting.

If you would like to use ML algorithms to try to predict the outcomes better:

There are several ways to interpret the data.

1. You predict the probability that each horse is a winner.
2. You predict a rank of each horse.
3. You predict time difference between horses and the winner
4. You predict time

Some algorithms could be better at predicting one problem or the other.

Possible algorithms:

1. Linear regression. I always start with this because it is easy to calculate and easy to interpret. You build separate models for each horse number. Can be used for all problem definition.
2. Logistic regression. Similar to regression, but can only be used for the first problem definition.
3. LGBoost and XGBoost. Most likely the best models for such data, because the data is structured (not an image, sound). Can be used for all problem definitions.
4. Neural networks. For example MLP (multilayer perceptron).

You can also calculate some additional features. For example, multiply some odds, or calculate inverse normal distribution from the odds.

I would also recommend to collect more data. For example weather data. Then it is good to know the horse. Some horses could be more popular than others and receive better odds. Also time of the year because the horses could have a training plan according to the time of the year.

• This is data from Betfair - a large bet-exchange. While what you say is true, I'm looking for 'the holy graal' here. I'd like to find out if there are patterns in odds movement early in the race that might indicate a winner early - while the odds are high. But the odds are not truely inversed to the probability. They are inversed to what - in this case the bookmaker - thinks the probability is. So the odds curve is not smooth, there are plenty of hops in odds level and therefore sometimes a large spread. But I was looking of a way to feed the series to a model and ask it to point to a winner – bnl Oct 31 '18 at 8:30