• Hi Guest Just in case you were not aware I wanted to highlight that you can now get a free 7 day trial of Horseracebase here.
    We have a lot of members who are existing users of Horseracebase so help is always available if needed, as well as dedicated section of the fourm here.
    Best Wishes
    AR

Class 4 on the turf

rmwesley

Yearling
I'm struggling to find the time to post daily updates on selections and rationale, but dave58 dave58 had the good idea that I could at least post up my process, so here goes.

Full disclosure first. It isn't a system as will become quickly apparent, just an attempt to systematically read form. I've tried to make the process as objective as possible, but I'm still left with a subjective decision to pick a horse at the end. There isn't anything new in it & much of it was stolen from other's threads and ideas, but in particular, from a thread on OLBG which I can't now find.

It will take a few posts to get it all down, but I'll try and get it all done today.
 
Step 1: Race selection

I use two automated python scripts which run late afternoon every day to do two things. Firstly, the scripts scrape the internet to update my local database with all UK and Eire races. I have records for every race going back to 2009, which can be useful for back-testing as well as form reading. Secondly, the scripts download the racecards for the following day. Props for these two scripts go to a guy called @joenano who wrote and published them on github. All the following steps are then based on further python scripts which I have written myself.

Next step is to select the races of interest for the following day. Since it is scripted, any criteria can be used to filter the racecards, e.g. class, distance, number of runners, horse name, course, jockey, trainer, owner, going etc. For this season I have focused purely on the following:
  • Location: UK
  • Type: Flat
  • Surface: Turf
  • Class: 4
  • Distance: 8f -12f
  • Number of runners: 5 to 8
This was, in part, designed to give me about 5 or 6 races to look at each week. In the winter I'll probably just swap Turf to AW.

The python script then drops a high level summary of these races into the first tab of an Excel spreadsheet:

1693208657026.png

Step 1 complete.
 
Step 2: Runner summary

The script then produces a high-level summary of each of the runners in each race. This gets dropped into the second tab in the daily Excel spreadsheet. A few of the fields are calculated and aren't immediately obvious:
  • OR: The official rating of each horse in the race, plus the delta of each horse from the average for the race as a whole, e.g. 4 \ 81 implies this horse has an OR of 81 which is 4lbs more than the average OR for the race (which is by implication 77).
  • LBS: The weight carried by each horse in the race, plus the delta of each horse from the average for the race as a whole, e.g. -2 \ 131 implies this horse is carrying 131lbs which is 2lbs less than the average weight carried by all horse in the race (which is by implication 133).
  • jcr: Total number of rides by the jockey at this course & for this race type, i.e. Flat / NH / Hurdle / NH Flat.
  • j12mr: Total number of rides by this jockey in the last 12 months for this race type, i.e. Flat / NH / Hurdle / NH Flat.
  • jstrk: Strike rate of this jockey in the last 12 months for this race type, i.e. Flat / NH / Hurdle / NH Flat.
  • t12mr: Total number of runners by this trainer in the last 12 months for this race type, i.e. Flat / NH / Hurdle / NH Flat.
  • tprof: Total profit betting £1 to win on each of this trainer's runners in the last 12 months for this race type, i.e. Flat / NH / Hurdle / NH Flat. Odds used are ISP.
  • tstrk: Strike rate of this trainer in the last 12 months for this race type, i.e. Flat / NH / Hurdle / NH Flat.
1693208971146.png

Step 2 complete.
 
Step 3: Runner history

The script then trawls through the historical database to extract a summary of all previous UK and Eire runs for each horse. Minor issue here is some horses may have run elsewhere, e.g. France, Dubai etc. but for the class of race I'm looking at this is few and far between. This gets dropped into the third tab in the daily Excel spreadsheet. Again, a few of the fields are calculated and aren't immediately obvious:
  • POS: Finishing position and number of runners, e.g. 4 \ 8 means the horse finished 4th of 8 runners.
  • ovr_btn: Lengths which this horse finished behind the winner of the race.
  • OR: As above, the official rating of the horse, plus the delta from the average for the race as a whole. Useful to know if the horse was running at the bottom of the rankings or the top.
  • LBS: As above, the weight carried by the horse, plus the delta from the average for the race as a whole. Useful to know if the horse was carrying top or bottom weight.
  • spd_records: The total number of previous races held at this course, at this class, over this distance, on this going.
  • h_win%: Out of all the previous iterations of this race at this course, at this class, over this distance, on this going... what percentage of them would this horse have won by travelling at the exact speed it did "today". For example, the horse may have finished down the field but if it was a fast run race, it may well have actually won some of the previous iterations of the race going at the speed it did "today".
  • ts_win%: Out of all the previous iterations of this race at this course, at this class, over this distance, on this going... what percentage of them would the winning horse of the race won by travelling at the exact speed it did "today". For example, the winner of the race may have just set the fastest time ever for this race configuration out of 400+ previous runnings. This is worth knowing.
  • dec: What ISP did the horse go off at?
  • comments: RP one line summary of the horse's performance.
  • exclude: Was this race a maiden, novice, selling, claiming, classified, auction, apprentice, conditional, amateur or hunters race?
  • handicap: Was this race a handicap?
1693210692948.png

Step 3 complete.
 
Last edited:
Step 4: Selection

The script then creates a blank pro-forma which allows me to rate each horse based on it's jockey, trainer, course form, number of previous runs, number of previous runs by type of race / surface / going / class / distance, OR trend, class trend, distance trend, plus form at "today's" course, distance, going and class. The bulk of this is formulaic and auto-populated into the pro-forma, e.g. horse hasn't run at this distance before is an amber flag, horse hasn't run at this distance +/- one furlong is a red flag.

Everything up to this point is fully automated and results in the Excel spreadsheet being emailed to me about 5pm each evening.

The next part is mostly subjective and reasonably time consuming. I evaluate the history to determine what chance has this horse of winning today's race given its previous form at this course, class, distance and going. I will trawl through each history row from Step 2 and 3 (with a focus on the the most recent 2 years) to convert the chance of winning into a Harvey Ball based on a scale of 4/4 it's going to win, down to 0/4 it's there as cannon fodder. I will look at each previous outing on it's own merits... was it running at the top or bottom of it's class and weight? was it on suited going and distance? did it run the race in a time which would have actually won other iterations of the same race? same for the winner of the race? what kind of odds did it go off at? what was the RP summary about it's performance? is the jockey in the form of his life? same for the trainer? I also favour things like improving OR and class trend, whilst downgrading horses with a declining OR trend.

The final step is then to tweak the score up or down as required based on the number of amber / red flags in the pro-forma.

1693213040943.png

Usually I will get a couple of options which stand out from the rest. If the Harvey Balls scores match, then it comes down to another evaluation of the amber / red flags otherwise the selection picks itself. Here I picked Princess Niyla for the win and Liberalist to come 2nd. The final column I manually update after the event to see how accurate my selections and Harvey Balls were.

A separate Excel is then used to track P&L over the course of the season.

Step 4 (and entire process) complete.
 
Wow ... first-class posts rmwesley rmwesley -- would love you to put up selections for a week or so, but realise from what you said that time is very tight. No matter -- thanks for the methodology: very impressive!
 
The method I use is very similar to this but I do all my data gathering manually using a combination of Horseracebase and Racing Post, focusing on trainer form, OR, course form and then the subjective bit which for the love of me I cannot get right but I keep on trying.

A long losing run this month almost finished me off but for some reason I kept ploughing on however as I have faith in the way I’m doing things.
 
Back
Top