• 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

Creating an Oddsline

I was reading an old thread on here today about oddsline creation so I thought I would start a fresh thread with a different twist to an old idea. Steve Tilley wrote a smartSig article some years ago about creating an oddsline from ratings. Essentially it revolved around formulating a normal distribution of ratings for a horse, think in ters of horse A has a rating of 70 but is statistically likely to run to something between 65 and 75. Randomly select a value from this range as its rating and do the same for all other horses and their range. So if horse horse A is a 65 horse with a range of 60 to 70 and randomly 70 is picked whilst randomly 65 is picked for horse A then horse B is predicted to win. Do this many thousands of times and use the win scores to create a probability for each horse.

Now with machine learning you can use regression to predict, for example, pounds beaten where pounds beaten is derived to take into account the race distance. The second step is to use the residuals of the errors on these predictions to get a range rather than an absolute prediction. OK WHOAAA what are residuals you ask. This is the difference between the prediction and the result so if horse A was predicted to be beaten 3L and it was beaten 5.5l the residual is 2.5, if on the other hand the actual is 2l then the residual is 1l

Using these derived ranges we can then perform a monte carlo simulation, thats the part that tests it all thousands of times, to get an oddsline.

It is early days but I tested this idea using Lingfield AW handicaps only to reduce the going effect on pdsBtn ranges. I trained on 2011 to 2015, calibrated the ranges using 2016 to 17 and then tested it on 2018/19

When the oddsline was less than BFSP there were 2365 bets and PL of +152.13
When the oddsline was greater than BFSP there were 1828 bets and a PL of -178.4
 
Do ranges of ratings favour deteriorating horse unfairly compared to improving horses,
how would a monte carlo simulator treat 2:horses that had each run 6 times with the following ratings chronologically
horse A 90,89,86,86,76,77
horse B 69,74,77,84,90,98
i think horse B would be 1/6 at the most.
what would Monte Carlo say.
i will have a bet on whatever price Monte Carlo wants to give me after he’s run his 10000 simulations.
I really like the idea of Monte Carlo simulations, I want to put all my ratings into one and see what the probabilities are , it’s sounds a perfect solution, but I just think it’s going to make horse A favourite and that just doesn’t hold water in the real world.
Same with averages , they make no sense to me, how can you evaluate ratings through averages.
 
Last edited:
Do ranges of ratings favour deteriorating horse unfairly compared to improving horses,
how would a monte carlo simulator treat 2:horses that had each run 6 times with the following ratings chronologically
horse A 90,89,86,86,76,77
horse B 69,74,77,84,90,98
i think horse B would be 1/6 at the most.
what would Monte Carlo say.
i will have a bet on whatever price Monte Carlo wants to give me after he’s run his 10000 simulations.
I really like the idea of Monte Carlo simulations, I want to put all my ratings into one and see what the probabilities are , it’s sounds a perfect solution, but I just think it’s going to make horse A favourite and that just doesn’t hold water in the real world.
Same with averages , they make no sense to me, how can you evaluate ratings through averages.
Horse A has the tighter range and greater average so horse A would probably be favourite but the questin is how accurate would the odds be, accurate enough to beat the market ?
 
Arazi wrote a great thread on this Mark worth a read
Who is this Arazi guy T tony spencer ?? i keep seeing his name pop up either Arazi or Arazi 91, or Arazi91 sometimes i've even seen Arazi1991
Pretty sure there is even an Arazi999 flying about as well which sounds like a cry for help :)

Who is this guy ???
Would love to meet him as we share the same avatar but for that wee @ character which i know is sometimes hard for people to reach on a phone or standard keyboard
The old bony fingers stretching over slowly to touch that @ key and then just saying "fuck it" and eventually giving up
"Helluva effort Big Man....thanks for trying....maybe next time eh :clap:????"
:)
 
Last edited:
Who is this Arazi guy T tony spencer ?? i keep seeing his name pop up either Arazi or Arazi 91, or Arazi91 sometimes i've even seen Arazi1991
Pretty sure there is even an Arazi999 flying about as well which sounds like a cry for help :)

Who is this guy ???
Would love to meet him as we share the same avatar but for that wee @ character which i know is sometimes hard for people to reach on a phone or standard keyboard
The old bony fingers stretching over slowly to touch that @ key and then just saying "fuck it" and eventually giving up
"Helluva effort Big Man....thanks for trying....maybe next time eh :clap:????"
:)
Sorry Rob Arazi91
 
I was reading an old thread on here today about oddsline creation so I thought I would start a fresh thread with a different twist to an old idea. Steve Tilley wrote a smartSig article some years ago about creating an oddsline from ratings. Essentially it revolved around formulating a normal distribution of ratings for a horse, think in ters of horse A has a rating of 70 but is statistically likely to run to something between 65 and 75. Randomly select a value from this range as its rating and do the same for all other horses and their range. So if horse horse A is a 65 horse with a range of 60 to 70 and randomly 70 is picked whilst randomly 65 is picked for horse A then horse B is predicted to win. Do this many thousands of times and use the win scores to create a probability for each horse.

Now with machine learning you can use regression to predict, for example, pounds beaten where pounds beaten is derived to take into account the race distance. The second step is to use the residuals of the errors on these predictions to get a range rather than an absolute prediction. OK WHOAAA what are residuals you ask. This is the difference between the prediction and the result so if horse A was predicted to be beaten 3L and it was beaten 5.5l the residual is 2.5, if on the other hand the actual is 2l then the residual is 1l

Using these derived ranges we can then perform a monte carlo simulation, thats the part that tests it all thousands of times, to get an oddsline.

It is early days but I tested this idea using Lingfield AW handicaps only to reduce the going effect on pdsBtn ranges. I trained on 2011 to 2015, calibrated the ranges using 2016 to 17 and then tested it on 2018/19

When the oddsline was less than BFSP there were 2365 bets and PL of +152.13
When the oddsline was greater than BFSP there were 1828 bets and a PL of -178.4
Do ranges of ratings favour deteriorating horse unfairly compared to improving horses,
how would a monte carlo simulator treat 2:horses that had each run 6 times with the following ratings chronologically
horse A 90,89,86,86,76,77
horse B 69,74,77,84,90,98
i think horse B would be 1/6 at the most.
what would Monte Carlo say.
i will have a bet on whatever price Monte Carlo wants to give me after he’s run his 10000 simulations.
I really like the idea of Monte Carlo simulations, I want to put all my ratings into one and see what the probabilities are , it’s sounds a perfect solution, but I just think it’s going to make horse A favourite and that just doesn’t hold water in the real world.
Same with averages , they make no sense to me, how can you evaluate ratings through averages.
I asked theses questions - in relation to my own ratings

The forum poster is right about the naive version, but his objection is to the inputs, not to Monte Carlo. I ran his two horses through 100,000 simulations using four different ways of setting each horse’s range:

How the range is setHorse A centreHorse B centreB’s win chance
Plain average and spread of all 6 runs848244% (A favourite)
Recent runs weighted more heavily828662%
Average of the last 2 runs76.59499%
Straight-line trend projected one run ahead74102about 100%

Why the plain average fails:
  • It puts the centre in the wrong place. Averaging six runs treats the 69 Horse B ran a while ago the same as the 98 he ran last time.
  • It makes the range wrong too. A horse improving steadily from 69 to 98 looks “inconsistent”, so B gets a range almost twice as wide as A’s, about ±11lb against ±6lb. That pulls B down in roughly 44% of the runs and makes A favourite, which is the result he predicted.
Monte Carlo itself only does one job: it turns whatever range you give each horse into a win chance. If the range is wrong, the price will be wrong, however many times you run it.

The approach in the original post avoids both problems.
  • The regression predicts each horse’s centre, and it can use trend, age, class and days since its last run to do it. An improving horse’s centre moves up.
  • The width comes from the model’s own prediction errors over thousands of past races, not from one horse’s six runs. So improvement isn’t mistaken for inconsistency.
His results look encouraging, with caveats:
  • Where the oddsline was shorter than BFSP: 2,365 bets, +152 points, about +6.4% ROI.
  • Where it was longer: 1,828 bets, −178 points, about −9.8%.
  • One course and about 4,000 bets is a decent test. It’s not proof, and it’s against BFSP, which you don’t bet at.
How this relates to your cards:
  • Your age lens already does what the poster wants. A 3 to 5yo is expected to improve; a 7yo and older is managed by rating. The seasonal allowance in the OR + Age rating moves a young horse’s centre up, which is the fix the plain average lacks.
  • your Win % isn’t really a probability. Score divided by the field total squeezes everything together. At Kempton the top horse got 10.8% and the bottom 5.8%, which is roughly 9/1 against 16/1 on fair odds. Real fields aren’t that flat, so this is probably why your fair odds look so similar to each other.
 
your Win % isn’t really a probability. Score divided by the field total squeezes everything together. At Kempton the top horse got 10.8% and the bottom 5.8%, which is roughly 9/1 against 16/1 on fair odds. Real fields aren’t that flat, so this is probably why your fair odds look so similar to each other.
This is what "most" people do
usually using "straight proportion" ie n/sum of n
which translates to rating/sum of ratings
where the ratings are scored generally 0 to 100 and they have "stuff" like "10 points for a C/D win" etc etc

If you actually stepped back and looked at the resultant values you'll see they bear no resemblance to a real world horserace betting market
or
an actual real probability distribution
 
How the range is setHorse A centreHorse B centreB’s win chance
Plain average and spread of all 6 runs848244% (A favourite)
Recent runs weighted more heavily828662%
Average of the last 2 runs76.59499%
Straight-line trend projected one run ahead74102about 100%
It would be so easy knock up a rating scenario where Monte Carlo would get it wrong in each of the 4 ‘How the range is set’ criteria you mention ( I think you have already done this , because 44%, 62%, 99% and 100% are all not realistic imo) and also other infinite amounts of criteria you could analyse, I can think of infinite ways Monte Carlo simulation would get the probabilities wrong compounding on each other until the output bears no resemblance to the real world problem. What I’m not clever enough to do is find the criteria where it works in a sensible way and would deliver an accurate set of probabilities from a set of ratings for each horse. If it could do that I would spend all day every day feeding ratings into it, it would be that enjoyable to me.

4 monte carlo attempt at getting a realistic probability for horse B have failed, this is just a simple 2 horse problems, what happens when there are 12 runners, some improving, some deteriorating, some yo-yoing, some lightly races some with 50 runs, multiple horses with outlier bad runs in their ratings history, how could Monte Carlo possible deal with this, this is every race that is like this.
 
Last edited:
Thats excellent post you shared about forecasting odds using ratings
It would be so easy knock up a rating scenario where Monte Carlo would get it wrong in each of the 4 ‘How the range is set’ criteria you mention ( I think you have already done this , because 44%, 62%, 99% and 100% are all not realistic imo) and also other infinite amounts of criteria you could analyse, I can think of infinite ways Monte Carlo simulation would get the probabilities wrong compounding on each other until the output bears no resemblance to the real world problem. What I’m not clever enough to do is find the criteria where it works in a sensible way and would deliver an accurate set of probabilities from a set of ratings for each horse. If it could do that I would spend all day every day feeding ratings into it, it would be that enjoyable to me.

4 monte carlo attempt at getting a realistic probability for horse B have failed, this is just a simple 2 horse problems, what happens when there are 12 runners, some improving, some deteriorating, some yo-yoing, some lightly races some with 50 runs, multiple horses with outlier bad runs in their ratings history, how could Monte Carlo possible deal with this, this is every race that is like this.
You are focusing on individual examples, the key as with all analysis is does it have benefit across all races. It does not matter if in some cases it is wildly off kilter
 
This is what "most" people do
usually using "straight proportion" ie n/sum of n
which translates to rating/sum of ratings
where the ratings are scored generally 0 to 100 and they have "stuff" like "10 points for a C/D win" etc etc

If you actually stepped back and looked at the resultant values you'll see they bear no resemblance to a real world horserace betting market
or
an actual real probability distribution
With out going into super computing or economics how did the old time bookies create their tissues
 
You are focusing on individual examples, the key as with all analysis is does it have benefit across all races. It does not matter if in some cases it is wildly off kilter
I honestly can’t think of a race where it wouldn’t be wildly off kilter, what happens when some improving, some deteriorating, some yo-yoing, some lightly races some with 50 runs, multiple horses with outlier bad runs in their ratings history, how could Monte Carlo possible deal with this, this is EVERY race that is like this.
 
When you model actual horseracing betting odds as a population they generally exhibit a strongly right-skewed, heavy-tailed distribution rather than anything resembling a normal (Gaussian) distribution.
The main characteristic features are:
Positive skewness - Many runners are concentrated at shorter and intermediate odds, with fewer at extremely long prices.
Heavy right tail - Odds can extend to 100/1, 500/1 or beyond, depending on the market.
Lower bound - Decimal odds cannot fall below 1.00.
Non-normality - The arithmetic mean can be substantially greater than the median.

What is more interesting (at least to me) is that when you model market "RANK" by "FIELD SIZE" over historical odds distributions using lots of race data the "means" by rank pull away from that "power-law" distribution and centre on a distribution that is "harmonic" by nature.

That harmonic distribution fits perfectly with a "rank order" distribution ie 1,2,3,4 etc ........but can also be fitted to an assumption where in say a performance ratings set where if pounds or points ...then there is a cumulative delta between each runner of 1 lb or 1 point and the max of those ratings deltas = field size - so in an 8 runner race the max of the "differences" between a ratings set over the 8 runners = 8 pounds or points.
This harmonic scale can be captured in a very elegant equation where the outputs as probabilities correlate very highly (almost perfectly) to the large sample historical odds distributions by field size.

harmonic scale .png

This is actually a great starting point and much can be done
Ratings can then be modeled based on the above assumption where Field Size = Ratings Spread and "one" unit point on a ratings scale can then be highly calibrated to a real probability distribution.
All sorts of probability distributions can then be tested and modeled against the historical harmonic distribution.
If you calibrate on a delta of "one" ratings unit then it becomes quite simple to test and calibrate on further deltas.

Aint got too much time today but will add this quickly

Here is an historical odds distribution by Rank for 12384 8 Runner UK Flat/AW races

8 runner historical UK FlatAW.png



I've added in Historical Win %'s by Rank as a probability, and mean Industry SP and BFSP both as probabilities
We can see that in correlation all distributions are very close but BFSP mirrors historical actual win probs closer than Industry SP does

assume we have a ratings set where the top rated is 100 and there is a cumulative 1 point or pound delta between every other runner
so the ratings follow 100, 99, 98, 97, 96, 95, 94, 93
So if we take the Max rating of that distribution and subtract each rating and then add +1 we get the deltas "between" each rating and they become this

Deltas Rat +1.png

which is essentially the same distribution as "RANK ORDER" ie 1,2,3,4 etc
and we fit it to the harmonic formula above in black we get the following outputs directly as probabilities ....and they sum to "one"

Harmonic outputs .png

and then compared to the historical actual win probabilities

comparison 1.png


we can see they are very very close


as said it's only a starting point for further investigation but a very good one
you can then test the same ratings assumption on different probability distributions
for example the Exponential, Cauchy, Power-Law & True Softmax Distributions

Distributions 2.png

and of course you can start to test different ratings assumptions..here using a cumulative delta of 2 ratings points or pounds between runners

Ratings Assum +2.png

Stuck for quality time and apologies i just put this together quickly
will have time later on as there is lots of stuff missed from the post about MCsims and assuming ratings and values are normally distributed
Nobody has spoken yet about "opportunity cost" within a performance ratings set and can show an example where this is a big factor
if you were trying to create a take to market probability or oddsline and one of your inputs was a horse's form expressed through a series of ratings, there must be a term in the equation representing opportunity cost, so that the likely distribution of all its future ratings reflects the importance of prior opportunity.
"Upside" in a performance ratings set TOTALLY DOMINATES exposed ability.
 
Last edited:
there are some very clever people on this forum, who understand probabilities, need help really i have ratings that i think are ok but maybe they are not, so this attached is a random collection of 9 races with my ability ratings adjusted to todays task 100 would mean ability rating is exactly the same as todays task, i know the winners and their odds, what i need to work out is am i wasting my time ?, are my ratings good enough? , only way to find out is to convert them to probabilities and see if they can possibly beat 100% market.
Is it possible to get an accurate probability for each horse from my ratings, or are my rating simply not good enough, because i'm at the point that i don't know if the ratings are good enough and i can't interpret them cleverly enough, or if they are just useless.
What is the best way to convert these historical ratings for last 10 runs into probabilities(r1 most recent) ?How do i best calculate this ? Or is it a waste of time?
 

Attachments

  • ability test.xlsx
    19.9 KB · Views: 6
Last edited:
there are some very clever people on this forum, who understand probabilities, need help really i have ratings that i think are ok but maybe they are not, so this attached is a random collection of 9 races with my ability ratings adjusted to todays task 100 would mean ability rating is exactly the same as todays task, i know the winners and their odds, what i need to work out is am i wasting my time ?, are my ratings good enough? , only way to find out is to convert them to probabilities and see if they can possibly beat 100% market.
Is it possible to get an accurate probability for each horse from my ratings, or are my rating simply not good enough, because i'm at the point that i don't know if the ratings are good enough and i can't interpret them cleverly enough, or if they are just useless.
What is the best way to convert these historical ratings for last 10 runs into probabilities(r1 most recent) ?How do i best calculate this ? Or is it a waste of time?
O Outlander - Just in case you think your being ignored Mike, i'll come back later on this - stuck for time right now and then i'm offski into Parkhead to watch my shite team get royally humped by a half decent Turkish mob. Will be later tonight mate.
 
It would be so easy knock up a rating scenario where Monte Carlo would get it wrong in each of the 4 ‘How the range is set’ criteria you mention ( I think you have already done this , because 44%, 62%, 99% and 100% are all not realistic imo) and also other infinite amounts of criteria you could analyse, I can think of infinite ways Monte Carlo simulation would get the probabilities wrong compounding on each other until the output bears no resemblance to the real world problem. What I’m not clever enough to do is find the criteria where it works in a sensible way and would deliver an accurate set of probabilities from a set of ratings for each horse. If it could do that I would spend all day every day feeding ratings into it, it would be that enjoyable to me.

4 monte carlo attempt at getting a realistic probability for horse B have failed, this is just a simple 2 horse problems, what happens when there are 12 runners, some improving, some deteriorating, some yo-yoing, some lightly races some with 50 runs, multiple horses with outlier bad runs in their ratings history, how could Monte Carlo possible deal with this, this is every race that is like this.

With out going into super computing or economics how did the old time bookies create their tissues
Do ranges of ratings favour deteriorating horse unfairly compared to improving horses,
how would a monte carlo simulator treat 2:horses that had each run 6 times with the following ratings chronologically
horse A 90,89,86,86,76,77
horse B 69,74,77,84,90,98
i think horse B would be 1/6 at the most.
what would Monte Carlo say.
i will have a bet on whatever price Monte Carlo wants to give me after he’s run his 10000 simulations.
I really like the idea of Monte Carlo simulations, I want to put all my ratings into one and see what the probabilities are , it’s sounds a perfect solution, but I just think it’s going to make horse A favourite and that just doesn’t hold water in the real world.
Same with averages , they make no sense to me, how can you evaluate ratings through averages.
I think the thread has gone away from my initial description. Its perfectly valid to talk about how one would aggregate and in some way get a spread of possible ratings given the last X ratings of a horse but this is not what I am describing. The ML algorithm produces one probability (I will stop using rating) for the race. The question is what is the possible range, say 90% range of probabilities it may have. The residual errors on past training data is used to create a range
 
Back
Top