New automated betting strategy for sprinters added to site
By colin on Saturday, September 1st, 2012A new automated betting strategy has been added to the members’ area on the site.
It runs in real-time every day considering all sprint races in the UK and Ireland, using the same techniques described in Automatic Exchange Betting to select and schedule races automatically.
This robot considers each Flat sprint race (ie. 5 and 6 furlong races) 1 minute before the offtime and assesses all contenders against variables derived entirely from the Smartform database. Eight variables are used, each converted to a numerical value, then a simple average is taken of all. The robot simply backs the top rated from these averages. It could be a lot more sophisticated (the variables could be weighted or could form inputs to a neural network). Further a value price could be derived from backtested results (or any other method of determining a price) and bets made only on the contenders that exceed the value price or exceed it by some margin.
However, the top rated average on its own produces a recommendation per race and is at least interesting enough in recent backtesting to show it live on the site to £2 stakes. If you catch it just before the race from the link at this page you will see the recommendations as they are bet, together with results and recommendations from any previous sprint races on the day.
Analysing previous performances on heavy going
By colin on Saturday, June 16th, 2012In the wake of the recent, somewhat unseasonal, downpours in the runup to Midsummer’s Day, the going around the country has been changed to include the terms “Soft” and “Heavy”. In the case of Leicester, we can add “Abandonned: Waterlogged”.
Such unseasonal changes are always liable to mess with the form book. One of the tasks of the form student is to establish what previous form, if any, has been shown on such going.
In Smartform, we can translate this into a query on any particular runner, in order to find all its previous runs on similar going. By way of example, we’ll pick a race at Sandown today, since it is currently supposed to be riding “Soft, Heavy in places”. The race we’ll look at is the 2.50 at Sandown, a handicap over one mile.
First, let’s look at how to pull a runner’s entire history (in this case, Leviathan) from Smartform, in order to look at its career runs, as follows:
mysql> select scheduled_time, course, weight_pounds as ‘weight’, going, trainer_name, jockey_name, distance_yards as ‘distance’, num_runners as ‘ran’, finish_position as ‘finished’, unfinished from historic_races join historic_runners using (race_id) where name=”Leviathan”;
Smartform subscribers can try this one at home, since the table of results is rather wide to reprint in the blog (of course we can include any of the variables available in Smartform within the returned results, this just shows us the most pertinent basic information in order to see if Leviathan has shown any promise on softer going).
We can see from the results, however, that Leviathan has never raced on going which has included the word “Heavy” in the description. However, he has raced once on proper Soft going (proper in the sense that it wasn’t “Good to Soft”, for example), where he finished first of 13 runners. That was almost exactly one year ago,
If we had wanted just to cut to the chase and see runs only containing the terms “Heavy” we could have altered the query with a condition for the going description.
Let’s try that for another runner in the race, Sam Sharp, as follows:
mysql> select scheduled_time, course, weight_pounds as ‘weight’, going, trainer_name, jockey_name, distance_yards as ‘distance’, num_runners as ‘ran’, finish_position as ‘finished’, unfinished from historic_races join historic_runners using (race_id) where name=”Sam Sharp” and going LIKE “%Heavy%”;
This time, only one result is returned. A second out of 4 runners in a recent race over course and distance. The horse appeared to handle the going, being beaten only narrowly. However, we’ll find that it’s quite rare that horses have had many runs on heavy going, so that most queries which restrict results to runs only including the term “Heavy” on these runners will produce the results “Empty Set” (as with Leviathan). Where a run is returned, as in the case of Sam Sharp above, the sample size is usually so small that even if the run was not good, it is hard to say that the horse did not act on the going. We can say the reverse, however, where the performance in a run has indicated that a horse acted on the going.
Producing an individual query such as the above for each runner in a race is somewhat tedious of course, so this is exactly the type of query that can be automated for a whole race, dispalying all runners’ previous performances on heavy, for example, in one move, using a simple programming language, such as R or Perl. For some examples of using R with Smartform in this way, see the last Chapter of our free ebook, “BetfaiR Trading with R”.
Do 2 year old foaling dates matter at this stage in the season?
By colin on Saturday, June 9th, 2012We wrote about foaling dates in an April post – here – on the basis that in the earlier part of the season, any edge in age – and therefore physical maturity – can have a significant impact on the outcome of races. Clearly as a horse gets older, any difference of a few months in foaling date between it and its peers will be less and less significant.
This part of the season, in the run up to Royal Ascot, is interesting and perhaps represents a cutover in the importance of the early difference in age. Form starts to mean more than foaling dates, though it’s true that Ascot 2 year old winners all tend to be quite forward, by definition.
Using Smartform we can see just how much impact foaling dates do have, and when these may become less significant, by using the historic data and writing queries to assess all previous 2 year old races.
We can also apply a query to the daily declarations to rank upcoming races in this way. Back in April we produced a query for one race – today, here’s a query extended to produce a list of all races together with contenders (for today’s racing), all ranked by foaling dates – earliest to latest – for each contender:
>select scheduled_time, course, trainer_name, jockey_name, name, foaling_date, forecast_price from daily_races join daily_runners using (race_id) where age_range=”2YO only” and meeting_date=CURDATE() order by scheduled_time, course, foaling_date;
At a forecast 14/1 price, Rock Up, ridden by Frankie Dettori and trained by David Elsworth in the 1.45 at Newmarket, stands out as a possibly overpriced January foal, assuming there is still an edge at this stage in the season.
A Bonfire with stamina
By colin on Friday, June 1st, 2012As is often written but often forgotten when it comes to betting, the Derby is a unique test – in particular, the fact that most contenders haven’t yet encountered a fast run 12 furlong distance race or a track that rides anything like Epsom. In most years there is usually the intriguing question as to whether the 2000 Guineas winner will also be up to meeting the unique challenges of Epsom.
This year, it’s true that Camelot has better chances than most on breeding, and perhaps he is a worthy favourite. But he is certainly a short priced one and there is likely to be better value elsewhere.
One of the things in particular that is worth looking out for in a Derby winner is their ability to stay the trip. The Dosage index is often quoted as the best guide to this, and readers who are looking for the dosage figures on this year’s Derby might find the following link useful:
http://www.chef-de-race.com/dosage/classics/2012/2012_investec_derby_preview.htm
However, there are other ways of assessing possible stamina, and a method we like to use with Smartform is to look at performance of all a sire’s progeny over the distance in the database. On this basis, Bonfire’s sire Manduro has sired progeny which have scored well, albeit over a very small sample size, when competing at a distance of 12 furlongs or more. As Steve Miller writes in his Chef-de-Race column, the Dosage points for Bonfire are also inconclusive since they are so few. However, as the winner of what has proved one of the most useful trials, together with early indications that his sire is a useful influence for middle distance horses, he is a very interesting contender.
If we add to the above the excellent recent form of the Andrew Balding stable, the fact that the Dante was run in a decent time, and the fact that Bonfire’s price is not suffering from the hype associated with Camelot (as a result of hailing from the all-conquering O’Brien stable coupled with being the 2000 Guineas winner) then we have a worthy contender.
At a price of 9/2 with a quarter of the odds being offered by many bookmakers, he looks a fine each way bet, with the place part surely covering the win stake in order to give “a bet to nothing” for the possibility that Bonfire will beat Camelot and win.
Incidentally, another interesting stamina contender (who comes out second in the Smartform distance statistics for sires) is Mickdaam, at a far bigger price. Perhaps worth a very small interest (the bit that wins some cash from Bonfire placing), also each way in the hope of getting the favourite beaten.
Of course, advocates of win only betting will argue we are merely doubling our potential losses by backing each way. It’s an argument that has some validity, but we believe that backing horses like Bonfire in races where their prices are inflated to make each way returns possible (by competing against hyped odds-on shots in small fields where 3 places are offered) does represent long term value, even accepting the downside that any one bet can always go wrong.
Chester lowly drawn today
By colin on Saturday, May 26th, 2012We’ve discussed the low draw advantage at Chester a number of times in this blog. Comprehensive analysis of the advantage afforded by a low draw at Chester is also one of the examples covered in the Smartform User Manual.
Despite the number of times the low draw advantage is mentioned, it continues to produce a blind level stakes profit in certain circumstances (in particular sprints over the minimum distance with a decent field size on decent going). Now that the worst of the bad weather is over (and the Chester May meeting is behind us) we can hopefully look forward to decent ground and a return to the rich seam of potential winners that can be discovered by concentrating on those drawn low around the tight Chester circuit.
A useful Smartform query in order to whittle down fields on this basis can be produced as follows:
select course, scheduled_time, distance_yards AS ‘distance’, name, stall_number AS ‘draw’, forecast_price from daily_races join daily_runners using (race_id) where course=”Chester” and meeting_date=CURDATE() and stall_number < 3 order by scheduled_time, stall_number;
course | scheduled_time | distance | name | draw | forecast_price |
---|---|---|---|---|---|
Chester | 2012-05-26 14:25:00 | 1338 | Tyson The Byson | 1 | 33/1 |
Chester | 2012-05-26 14:25:00 | 1338 | Sojoum | 2 | 5/1 |
Chester | 2012-05-26 14:55:00 | 1338 | Asian Trader | 1 | 7/4 |
Chester | 2012-05-26 14:55:00 | 1338 | Red All Over | 2 | 66/1 |
Chester | 2012-05-26 15:25:00 | 2499 | Gabrial’s King | 1 | 6/1 |
Chester | 2012-05-26 15:25:00 | 2499 | Singalat | 2 | 9/2 |
Chester | 2012-05-26 16:00:00 | 1542 | Hot Rod Mamma | 1 | 33/1 |
Chester | 2012-05-26 16:00:00 | 1542 | Viva Ronaldo | 2 | 5/1 |
Chester | 2012-05-26 16:35:00 | 2275 | Watered Silk | 1 | 12/1 |
Chester | 2012-05-26 16:35:00 | 2275 | Look Left | 2 | 16/1 |
Chester | 2012-05-26 17:10:00 | 2949 | Silk Drum | 1 | 12/1 |
Chester | 2012-05-26 17:10:00 | 2949 | Cape Express | 2 | 6/1 |
Chester | 2012-05-26 17:45:00 | 1338 | Waking Warrior | 1 | 13/2 |
Chester | 2012-05-26 17:45:00 | 1338 | Rutterkin | 2 | 16/1 |
Chester | 2012-05-26 18:15:00 | 1338 | Blown It | 1 | 7/1 |
Chester | 2012-05-26 18:15:00 | 1338 | Lucky Dan | 2 | 20/1 |
16 rows in set (0.10 sec)
Of course, we may take the view that those we wish to look more closely at a wider range of criteria (say the lowest half of the field), or an even narrower set of criteria. In this regard, one of the keys to using draw advantage effectively is filtering by the number of runners in any race, so let’s discover that data as follows:
select count(name) AS ‘runners’, course, scheduled_time, distance_yards from daily_races join daily_runners using (race_id) where course=”Chester” and meeting_date=CURDATE() group by scheduled_time;
runners | course | scheduled_time | distance_yards |
---|---|---|---|
6 | Chester | 2012-05-26 14:25:00 | 1338 |
10 | Chester | 2012-05-26 14:55:00 | 1338 |
7 | Chester | 2012-05-26 15:25:00 | 2499 |
12 | Chester | 2012-05-26 16:00:00 | 1542 |
11 | Chester | 2012-05-26 16:35:00 | 2275 |
9 | Chester | 2012-05-26 17:10:00 | 2949 |
12 | Chester | 2012-05-26 17:45:00 | 1338 |
11 | Chester | 2012-05-26 18:15:00 | 1338 |
8 rows in set (0.10 sec)
Generally speaking, races with fewer than 10 runners declared are less compelling from a draw advantage perspective. Notice we’ve also included the distance of each race – again, races over distances beyond a mile are also less interesting (with some exceptions) from a draw perspective.
Thus, the 2.55, 4.0, 4.35, 5.45 and 6 pm races are the most interesting from a draw perspective today, so that may be the richest seam to concentrate on using the first query above. Let’s hope the bias shows through again, since there are some juicy prices on offer about low drawn runners, as you can see from the forecast prices displayed above.
Hello again Frankel
By colin on Saturday, May 19th, 2012It’s not very often you get an equine superstar, certainly not every year (though the racing media would have you believe there is), but Frankel is one.
Not much to say that hasn’t been said – surely if the real Frankel turns up then the only question is what will finish second? Strong Suit would have been a very interesting contender, but alas does not appear. Excelebration is obviously the form pick for second, though not many Exceed and Excel’s progeny do well over a mile, and we’d normally be looking to oppose Excelebration for second spot if the opposition weren’t so inferior by comparison. Not sure what with in this year’s field – it may be that there is better to come from Dubawi Gold. But with any luck we won’t be talking about the “also rans” later this afternoon.
Pace in Victoria Cup
By colin on Saturday, May 12th, 2012The big handicap race of the day is the Victoria Cup at Ascot, worth over 50k to the winner, with a massive field of 24 in contention.
The jury is out on draw bias at Ascot – supposedly high numbers are favoured, to the stands side of the course, but with the stalls being positioned in the centre of the course over a straight 7 furlongs, this is just the sort of race where the way the race unfolds, via pace, should be more important than draw.
Typically in these situations we will want to look for the paciest runners in order to predict how the race will unfold and which horses will lead the pace in the race, then narrow the field down to those horses that are drawn near the pace.
In order to predict the pace, we’ll use past in-race comments for each of the contenders, as found in Smartform. There are various programmatic ways of parsing previous comments to come up with those contenders that show the highest probability of racing prominently, as we’ve discussed before in this blog.
Today, the percentage likelihood of leading throws up the following shortlist (shown for each runner alongside the draw, with stall position and forecast SP):
White Frost, 0.11, 7, 12/1
Nasri, 0.11, 21, 20/1
Rodrigo De Torres, 0.10, 18, 14/1
Cool Marble, 0.10, 3, 25/1
Benandonner, 0.09, 9, 20/1
Brae Hill, 0.06, 8, 12/1
Pravda Street, 0.06, 16, 33/1
Kakatosi, 0.06, 24, 20/1
King Of Jazz, 0.06, 5, 10/1
This is a tricky prognosis – the fact is there is no clear side of the track where pacier runners are gathered, with those likeliest to race prominently (based on past performance) racing from stalls 3, 7, 18 and 21. It’s therefore possible in a field of 24 that two groups may develop towards the stands rail and the far rail, based on this.
The question then becomes which group will have the most pace, and possibly which part of the track is riding quickest. Unfortunately, yesterday’s results at Ascot offer no clues since the fields were so small. With regard to where the greatest pace is, a further look down the front runners list seems to indicate the strongest pace will indeed be on the near side (ie. high numbers), though it’s a marginal call.
As such, we’ll be looking at runners drawn 13 to 24 inclusive and ignoring the half of the field drawn low on the inside rail. Additionally, on soft to heavy ground, whilst the pace of the race might come from front runners, it’s unlikely the winner will be leading from pillar to post over 7 furlongs, so hold up horses that can come from off a strong pace may be favoured. Fortunately there’s a similar program that we can run from Smartform to show hold up horses in the race. Many horses have raced with varying characteristics, but Fathsta and Lightning Cloud and Space Station catch the eye as hold up horses in stalls 14, 15 and 17 respectively, along with New Leyf in stall 23.
Nasri is also interesting, 3rd in this last year having disputed the lead for most of the way, but now 2 lbs lower.
With a few of the bookmakers paying 5 places, the shortlisted horses are Fathsta, Space Station and Nasri, largely based on the fact that they should all go on the ground (backed up by reasonable speed figures) and the larger prices available on these in such a cavalry charge.
Whilst trying to solve the puzzle is part of the fun of horseracing, betting strength should be based on degree of confidence in having solved the puzzle. As should be clear from this blog post, with so many variables and marginal calls going in to this conclusion, stakes will be small on this particular occasion!
2000 Guineas by sire
By colin on Saturday, May 5th, 2012No specific Smartform queries for today but we will share some analysis of the 2000 guineas which uses Smartform.
The subject of the analysis is the race of the day, the first classic of the 2012 Flat season for colts over 1 mile at Newmarket, the 2000 Guineas.
The logic behind the analysis is that form is often a difficult measure when it comes to assessing likely improvement in lightly raced colts who are improving dramatically and who are often unraced over the exact conditions of today.
So, given the horses themselves may be showing us less from their form than we would like to see, we can corroborate their credentials for today’s race by looking at the performance of their sire’s other progeny – data which is all available in Sireform. In this case we are looking to 3 factors – the improvement rate in 3 year olds, performance over 1 mile, and performances on soft going.
And the winner is…
Well, the 3 horses that rank highest by taking an average of these measures are:
1. Caspar Netscher
2. Red Duke
3. Hermival
Red Duke’s average is skewed by high scores for improvement and going, but since there is a poor distance score we should exclude it from the list.
That still leaves us with a 25/1 shot and a 20/1 shot.
Preference is for Caspar Netscher, each way or on the spread index which pays out on fourth place.
Trainers with runners at Sandown
By colin on Saturday, April 28th, 2012Sandown today represents one of the more unusual meetings on the racing calendar, with its combination of top class jump racing mixed with top class flat racing. As such, we see Flat training giants of the like of Henry Cecil rubbing shoulders with their jumps equivalents, such as Paul Nicholls.
Using Smartform we can identify exactly which trainers have runners at Sandown and produce various statistics off the back of this. This sort of query is often a useful prerequisite to working out the relative strike rate of each trainer with runners, for example.
Here, however, we will get the trainer names and show a simple count of the number of runners for each by using the group function. We’re interested in a count from those trainers fielding the largest team to those trainers fielding only one runner.
This can be done as follows:
mysql> select count(trainer_id) AS ‘#Runners’, trainer_name AS “Trainer” from daily_runners join daily_races using (race_id) where meeting_date=CURDATE() and course=”Sandown” group by trainer_name order by count(trainer_id) DESC;
#Runners | Trainer |
---|---|
6 | P F Nicholls |
5 | N J Henderson |
5 | D Pipe |
4 | P J Hobbs |
3 | J H M Gosden |
3 | Sir H R A Cecil |
3 | S bin Suroor |
3 | Miss V Williams |
2 | W Greatrex |
2 | D T Hughes |
2 | N A Twiston-Davies |
2 | A M Balding |
2 | M J Attwater |
2 | G L Moore |
2 | D McCain Jnr |
2 | Evan Williams |
1 | C G Cox |
1 | N Quinlan |
1 | Ian Williams |
1 | R C Guest |
1 | S Gollings |
1 | John Berry |
1 | M H Tompkins |
1 | B G Powell |
1 | C J Mann |
1 | T T Clement |
1 | A W Carroll |
1 | R Hannon |
1 | W S Kittow |
1 | Simon Earle |
1 | E F Vaughan |
1 | Miss H C Knight |
1 | D K Ivory |
1 | A King |
1 | M Keighley |
1 | Mrs L Wadham |
1 | J P Ferguson |
1 | Dr R D P Newland |
1 | E J Alston |
1 | Nick Williams |
1 | George Baker |
1 | R Lee |
1 | S Kirk |
1 | N J Gifford |
1 | M Appleby |
1 | A P O’Brien |
1 | W Jarvis |
1 | J W Mullins |
1 | P Phelan |
1 | Jamie Snowden |
1 | Dr J D Scargill |
1 | Mrs Mary Hambro |
1 | Jonjo O’Neill |
1 | R Varian |
1 | B Ellison |
1 | R Charlton |
1 | J R Jenkins |
1 | G McPherson |
1 | E De Giles |
1 | M Scudamore |
1 | Miss E C Lavelle |
1 | M R Hoad |
1 | R H Buckler |
63 rows in set (0.09 sec)
So no surprise that the top stables in both flat and jumps are best represented today, and some testament to what a classy day’s racing Whitbread day is (though now appears to be bet365 day?).
As for the trainers mentioned, on the Flat Henry Cecil weighs in with an impressive 14 day strike rate (according to Smartform calculations) of 24%, whilst John Gosden and Saeed Bin Suroor are languishing on 8% and 7% respectively.
Over the jumps, Paul Nicholls’ strike rate is 18% in the last 14 days and Nicky Henderson’s is an impressive 26% from 38 runners.
2 year old racing by foaling date
By colin on Saturday, April 21st, 2012As the flat season gets into its swing we will start to see more and more two year old racing. At this time of year in particular there is very little form to go on. In order to predict outcomes, punters have to rely instead on stable whispers, the bloodlines and expense of the horses in question, and the records of their handlers in these type of races as well as their current overall form. We can add to this some signals from the market once the horses emerge into the paddock at the course for the first time.
However, there is an often ignored and occasionally hard-to-find form element that has great significance in the early part of the season – that is the actual foaling date (ie. birthday) of the horse in question, rather than their “official” birthday – ie. 1st Jan. As a proportion of age, the month or two differences you find in foaling dates are of course significantly greater early in the career of a two year old, though these will diminish in significance over time. Identifying foaling dates and ranking them can be a laborious process. Fortunately, 2 year old foaling dates are simple to identify and rank in Smartform from the earliest to the latest date. Moreover, we can automate the search of 2 year old races and subsequent ranking of each race by age of contender.
Below are the queries you need – applied to today’s racing.
First, let’s identify all the two year old races in the database for today’s racing:
mysql> select race_id, scheduled_time, course, age_range from daily_races where age_range LIKE “%2%” and meeting_date= CURDATE();
race_id | scheduled_time | course | age_range |
---|---|---|---|
397147 | 2012-04-21 18:00:00 | Nottingham | 2YO only |
1 row in set (0.10 sec)
Next, let’s use this race_id to retrieve basic details of all horses competing in it and at the same time rank them by age:
mysql> select trainer_name, jockey_name, name, foaling_date, forecast_price from daily_races join daily_runners using (race_id) where race_id=”397147″ order by foaling_date;
trainer_name | jockey_name | name | foaling_date | forecast_price |
---|---|---|---|---|
D Shaw | D Swift | Top Boy | 2010-02-02 | 20/1 |
M R Channon | Charles Bishop | Effie B | 2010-02-15 | 2/1 |
M Johnston | R Ffrench | Marshland | 2010-02-18 | 3/1 |
M R Channon | S Hitchcott | Golac | 2010-03-28 | 8/1 |
K A Ryan | Amy Ryan | Bapak Bangsawan | 2010-05-06 | 7/4 |
5 rows in set (0.00 sec)
Easy. We can also automate this with a simple script for all races on any given day – basically saving the race_ids from the first query, and looping over them with the second query. A script is available for Smartform members that does just this.
By the way, on the above evidence alone, the late foaling date of the favourite, Bapak Bangsawan, makes him look quite vulnerable, doesn’t it?