• The issue has been fixed and hopefully you can post screen shots again
  • 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

Horse Racing Data, Strategy, and AI Harnessing

RSB used to assess them based on winning races only but you could adopt a 'ran well' option both eliminate the not trying races
Aye there are probably a ton of variants Mark
A la Quirin's "Speed Points" (see PDF below)
And also very easy to add a "class" structure

Some even go down the probabilistic route

EPFProbs1.png

EPFProbs2.png
 

Attachments

  • Quirin Speed Points - HTR.pdf
    40.2 KB · Views: 8
Last edited:
A Ajit What do you mean by 'k values'? Regarding my data, I have obtained racecourse profile information that details how horses perform when ridden.

View attachment 173357
I mean if you're intent on exploring Elo, it will save you some time if you consider different multipliers for different disciplines.
I have attached a couple of files that show outcomes from tests of different values for k in all disciplines bar NH Flat.

Should save anyone looking a bit of time in testing. I wouldn't bother though if I'm being honest.
 

Attachments

  • elo_k.zip
    14.7 KB · Views: 5
Anyone got a list of the variables/metrics used by Benter and whoever else, I had one re Benter at one point but can't find it, as I'm looking to add to my own 100+ list I use for prev winner trend analysis.
 
ARAZI91 ARAZI91, MySportsAI MySportsAI, A Ajit Thank you all so much for your advice and ideas!

Over the last few days, I’ve been optimizing my codebase, which means that implementing new strategies should be much easier now.

I have gathered a lot of data—much of it actually represents information whose meaning is unclear—but your input and common sense are helping me make sense of it all.

My goal today is to write code that parses selections from the FHRTIPS FHRTIPS website so I can test trades based on their predictions.
 
I have started testing the FHRTIPS FHRTIPS selections.

From an agentic point of view, what is particularly interesting is that incorporating their data source into my existing data context allows me to cross-analyze their selections against various other datasets, such as: 'Retrieve the RacingTvDataForHorses and Horses1STPastThePostRacePicks,' and then analyze whether the horse ranked by RacingTvDataForHorses aligns with the picks in Horses1STPastThePostRacePicks.

This process helps determine if a horse ranked number one truly represents the best betting selection.

1794583644850.png
 
What argues against taking #1 as "the" bet

1 win from 23 hurdle starts (2 from 36 overall) — an exposed, hard‑to‑win type who finally broke through. A 24.4 % win probability is on the generous side for that profile.

Career‑high mark and top weight: he's up 7 lb (92 → 99) and carries 12‑3, conceding 6–14 lb all round in a Class 5.
He is up in grade off a hard front‑running win on a quick 10‑day return.

Two rivals are more lightly raced and higher rated (Promethean TF 106, 6 hurdle runs; NWP TF 105 and 5 stars, 3 hurdle runs, plus a 5 lb claim). A form/ratings model structurally under‑rates that upside — though the market over‑rates both, which is the offsetting point.
The picks model's own credibility gaps (relevant to how much weight to put on the ranking): Classical Sting is ranked 5th with 8.8 % on zero run data and a 234‑day absence, and Captain Attridge is ranked 6th with 7 % despite a very long layoff (and the feed contradicts itself:

daysSinceLastRun 1337 vs a 9‑May‑2025 last run ≈ 553 days). The model leans heavily on OR/Timeform figures and is soft on absences ⇒ its ordering beyond #1 is unreliable and probably flatters some no‑hopers.
Independent second opinion doesn't fully endorse him: the timeformTippedPlace field orders them Northwest Passage (1), Promethean (2), Character Testing (3).

Value ranking, not win ranking: purely on overlay, #1 (+22 %) is beaten by Papa Oscar (+38 %), Cawthorne Banker (+34 %), Classical Sting (+32 %) and the outsiders (Iolaos Du Mou +237 %, Captain Attridge +82 %, Razzo +78 %) — but those carry 3–9 % model probabilities and, for the top overlays, the same absence/data problems. High‑variance lottery tickets, not better bets.

The race was won by: Northwest Passage
 
This is true - ELO is actually a pretty messy construct when adapted to multi-competitor sports like racing when compared to a true handicapping model.
Was originally designed for rating chess players and as chess is 1v1 can be adapted directly to 1v1 sports pretty easily but racing would need manipulated quite heavily.
Some of Dave Dave 's values were very questionable and raised an eyebrow in the opening post in that ELO thread although i'm not here to critique anybody's methods - i'll leave that to the bloggers and "experts"

From a "handicapping" perspective though i will say these don't make any real sense and i can actually prove that being a eh ...private handicapper


View attachment 173359
View attachment 173360
View attachment 173361
View attachment 173362

for example Masego up there strictly on form on that run has ran 2lb below his BHA mark of 51 behind an improved winner, He was beaten 9 lengths which was corrected to 7.51 given the archaic way that the BHA treat beaten lengths
The third was a further (corrected) 13.7 lengths away

View attachment 173364
If you remove the winner you can only get a possible range of figures that range from 48 to 52 (and that's using all 7 runners that finished directly below him) so the range is pretty tight - an extremely high probability that his figure MUST fall in that range.
The historical median Class 6 Southwell handicap figures again for 1st, 2nds, 3rds, 4ths & 5ths when plugged in all suggest he's ran to 49-51 which is an even tighter range.
You couldn't possibly say it was a strong race given that the mid point of margin beaten was just over 4.00 seconds and 5 of the 14 runners actually returned negative performance ratings which tells you how far back they were when they can't even reach a benchmark of 0.
Had a look and the timefigure returned was around 9lbs below ability (winner ran to 62 , timefig 53)
with the sectionals upgrading Masego slightly by just over a pound - early pace was way too fast which Masego was very close to and was out on his feet at the finish coming home in the final three furlongs over 2.3 seconds slower than the winner
A pound upgrade then and Masego has ran to a pound below his BHA mark of 51 and a performance rating of 50
BHA have him running around 3lbs below his mark but given that they standardize their Lengths Per Second if they changed their methodology they would probably concur. Racing Post handicappers also agree that he has run slightly below his mark

No true handicapper in the world would have him going up 25 lbs like the ELO has done there
it's very possible that the ELO points to pounds conversion is massive but again noticed that Dave calculates race/field averages and that there was 19lbs between a class 4 and a class 6 at Southwell which nearly reflects BHA (18 lbs) even though his ratings are scaling at a range of 93 to 112 between those classes. If the differences between races are similar why are horses individually being bumped up when in reality they are running near or below form in very ordinary races ?

can show the others but would just be long winded handicapping jargon
the point then ??
I'd be very wary from the get-go if i was implementing an ELO type rating given that we know it was designed for 1 v 1 type sports and contests
Introducing pounds to length conversions and rating scales would need lots of testing to see if the constructs and conversions are replicating reality also remember that it is a loop-type rating which feeds back information on itself so you could possibly end up with a set of ratings down the line that amount to an exercise in playing with numbers rather than anything real and predictive
Modeling real life racehorse performance shows that many more horses run under their ceiling of ability rather than above which means that ratings that measure and normalize performance would be heavily skewed to the left rather than anything approaching a bell curve type normal distribution. Handicappers that have been rating horse populations for years know this which probably tells you that it would be very difficult to come up with an automated "algorithm" or "system" that could replicate their work.
There still is a lot of manual work involved where you have to subjectively make decisions.
And thank fuck there still is ....as AI and the robots can't have everything. :)
ARAZI91 ARAZI91
Fair challenge on Masego. I've been through the race runner by runner, and you're largely right.

Two things drove the 25. First, it was his first run in my AW database, so he started on a provisional rating, and provisional ratings move faster by design. That's where most of the overshoot sits. Across 2025-26, horses gaining 15+ on their first rated run gave back about 6 next time, while established horses gave back about 1.

Second, over half of his gain came from beating five horses that ran well below their own level, in a race where the tail finished 50+ lengths back. Elo can't tell a horse that ran badly from one that's simply slower, and it credits the winner of that head-to-head either way. That's your point exactly.


On the scale, I checked it against official ratings across this year's AW handicaps, and a point is close to a pound, so your reading was fair. His post-race figure equates to a mark in the mid-70s, which nobody would sign off on.

What I tested off the back of it. Reducing the credit for beating below-form horses sounded right but made the selections worse, so that's out. Capping any single race's gain predicted winners just as well, removed most of the give-back, and the flagged selections held up slightly better. That goes into the shadow version I'm already running and gets judged on live races over the next couple of months before anything changes.

I agree with your wider point too. A rating that feeds on itself needs proving against results, not just internal consistency. That's why nothing from it reaches members unless it holds up out of sample. And yes, there's still a lot of manual judgement involved, and I'd want it that way.

Thanks for taking the time. This is the kind of challenge that makes it better.

Cheers Dave
 
Ready to test my updated strategy, "Form Trajectory Strategy" — here are the changes:

Models

  • LastRunReadings — FSP, finishing-speed quality, final-two-furlong sectionals, closing quality, position gain, top speed / stride / acceleration, jumping quality, execution and evidence.
  • RaceShapeReadings — pace category, pace style edge, pace edge/quality, draw lengths/significance/quality, career starts/place/win rates, freshness.
  • HeadToHeadReadings — matches, wins, losses and quality against opponents met in the last race.
  • TrajectoryReadings now carries LastRun, RaceShape and HeadToHead.
  • All new values are published as [<Browsable false>] members on SelectionFormTrajectoryData.

Engine

  • LastRace is proved against the newest completed run by horse name, date and finish position; a mismatch is treated as no evidence.
  • Uses MetricSpeedData / ComparisonMetricsData percentages and ranks.
  • Uses Sectionals: final-two-furlong percentiles, par-relative pace categories, cumulative TimeBehindLeader for closing rank, and SectorPosition for position gain.
  • Uses RunnerOpponents for field-relative closing rank and head-to-head with today’s field.
  • Uses RaceMetricsData, JumpingMetricsData and ComparisonMetricsData for jumps, with None on the flat rather than a zero.
  • Uses PaceMap and TryGetCourseStatisticForPositionCategory, with a normalised category fallback and a last-race 2f-position fallback because live PaceMap.PositionCategory is often missing.
  • Uses DrawData, Statistics and DaysSinceLastRun in the Capability layer.
  • Form is now 70% trajectory + 20% last-run execution + 10% head-to-head.
  • Capability weights are Surface .30, Trip .30, Handicap .10, Pace .15, Draw .05, Record .10.
  • Ranking tie-break now includes LastRunExecution.

Bot

New criteria columns for every new reading.
 
Yes, I know this forum is about finding a winning horse to back, or dutching several of them. I do that as well, and I trade too.

Skylark2009 Skylark2009 lays horses.

So my question is: has anyone tried to build a specialized model just for laying a horse, or for trading one?
 
Back
Top