2
$\begingroup$

I have dataset with horse racing results including bookie odds - converted to percentage chance of winning. Data are stored in relation tables.

The basic entity relation is described on image. Each race consist of n number of horses. Each horse have own history, is owned by owner, trained by trainer and "raced" by jockey. Each entity have many mandatory (M) and optional (OP) attributes:

  • Race: datetime, winning prize, distance, race course, race type, ... (all mandatory)
  • Horse: age (M), official rating (OP), speed rating (OP), ...
  • Trainer: wins and rides in last days (M), year income (M), 0 .. n previous races with results (again with many attributes)
  • Jockey: same as Trainer
  • Owner: same as Trainer
  • History: 0 .. n previous races with results (again with many attributes)

enter image description here

The predicted value should be percentage of winning for each horse. Im looking for MODEL which takes as input race, single horse, his history, trainer,... and the output should be for example 23.5%.

Now my questions.

  1. How to deal with variable number of horses in race? Insted of perctenage, should be the output some ranking? Then, out of the model, the ranking can be converted to percentage based on total race horse count? How this formula should look like?
  2. How to deal with data from lower entities? For example last trainer's races. The trainer could have 5 races in last day, or 0 in last week. How to propage this variable data to upper level? I assume that using thousands of "sometimes used" input features are not good way.
  3. Use models based on deep learning or rather some simplier models like XGBRegression?

This problem can be transfered to many other situations, 100m sprint, elections. The question is very broad. I'm looking for direction how to solve similar problem. Thank You for any help.

$\endgroup$

2 Answers 2

1
$\begingroup$

Multivariate Logistic Regression models are the common way to solve these problems. Google Benter etc. That deals with 2 competitors at a time. So the number of horses in the race becomes irrelevant.

You cannot work out percentage chances individually - they depend on the chances of all the competitors in the race. The sum of all the percentages = 100%.

Trainer data etc is usually based on percentages over last two weeks or so. Less than 30 races gives unreliable data.

It is recognized that too many data variables makes the solution worse. 5 key data items that are independent are enough.

NN models are not successful because they are averaging models - they are not good in predicting for a specific race but OK for a whole season of races.

$\endgroup$
1
$\begingroup$

Rank-ordered logit is a good route (search for Bolton & Chapman's paper on Multinomial Logit for Handicapping horse races - their treatment is easy to digest).

Regarding your questions: 1) Rank-ordered logit can return probabilities by horse for however many horses are in the race. STATA has a built in command for this (rologit)

2) You'll have to use domain knowledge on deciding which trainer features are most relevant. I'd start with trainer's overall win percent, win percent on today's surface, jockey-trainer combined win percent, etc. You could later incorporate features like trainer last 30 day win % divided by last 180 day win % to get a feel for whether recent momentum is predictive

3) In my opinion, definitely go with a model that can be interpreted like rank ordered logit. Deep learning model is probably overkill

Hope this helps.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.