Greyhound Mystique

Any markets not covered in the other boards
Post Reply
User avatar
Bog
Posts: 198
Joined: Sat Aug 11, 2018 7:19 am

jimibt wrote:
Mon Jan 20, 2020 5:08 pm
a few comments that i'd make about the data (insofar as i've scanned it):

1. The last run time (in sportinglife) is literally the last run time, it doesn't take into account the fact that the race distance may be different (i.e. 480m vs 290m etc). Thus, you'd be advised to scan the Form list and choose the most appropriate matching *last run* based on this match

2. Run time can vary both by track and trap. It may be useful to take into account the amount of *necks* that a runner has been beaten by at each form item level and calculate a true time/speed based on the winning time of the winning runner at that event.

3. Averages across ALL form data is not as meaningful as taking an average across a fixed time period that is relevant to all runners (i.e. 6-9 months, rather than 2 years worth of averages). Too wide a window and you have times for inexperinced runs as well as dogs reaching their natural peak form.

So, in a nutshell, I'd make full use of the sportinglife data but would take time to analyse how best to use the raw data as the plain numbers only tell half the story...

Happy crunching!!
Point 1 confirmed for 11:16 Central Park - https://www.sportinglife.com/greyhounds ... ard/185485

Dog 1& 2 have last race data from D sprint race and best race from T trial race. So it's better to ignore races like these? Archery1969 do you look at details like that or you make the average anyway?
You do not have the required permissions to view the files attached to this post.
Archery1969
Posts: 4478
Joined: Thu Oct 24, 2019 8:25 am

Bog wrote:
Wed Jan 22, 2020 8:40 am
jimibt wrote:
Mon Jan 20, 2020 5:08 pm
a few comments that i'd make about the data (insofar as i've scanned it):

1. The last run time (in sportinglife) is literally the last run time, it doesn't take into account the fact that the race distance may be different (i.e. 480m vs 290m etc). Thus, you'd be advised to scan the Form list and choose the most appropriate matching *last run* based on this match

2. Run time can vary both by track and trap. It may be useful to take into account the amount of *necks* that a runner has been beaten by at each form item level and calculate a true time/speed based on the winning time of the winning runner at that event.

3. Averages across ALL form data is not as meaningful as taking an average across a fixed time period that is relevant to all runners (i.e. 6-9 months, rather than 2 years worth of averages). Too wide a window and you have times for inexperinced runs as well as dogs reaching their natural peak form.

So, in a nutshell, I'd make full use of the sportinglife data but would take time to analyse how best to use the raw data as the plain numbers only tell half the story...

Happy crunching!!
Point 1 confirmed for 11:16 Central Park - https://www.sportinglife.com/greyhounds ... ard/185485

Dog 1& 2 have last race data from D sprint race and best race from T trial race. So it's better to ignore races like these? Archery1969 do you look at details like that or you make the average anyway?
Yes plus i look at the following for confirmation:

- Forecast prices
- market amount matched
- VWAP

Then if the above confirms the selection based on original 0.10 rule then i will request a price, not accept the one being offered from 10 mins out.

In the race you highlighted, i have no BTL trade but i do have a LTB trade selected being the Dog in Trap 1.
User avatar
jimibt
Posts: 4193
Joined: Mon Nov 30, 2015 6:42 pm

Archery1969 wrote:
Wed Jan 22, 2020 9:14 am
Bog wrote:
Wed Jan 22, 2020 8:40 am
jimibt wrote:
Mon Jan 20, 2020 5:08 pm
a few comments that i'd make about the data (insofar as i've scanned it):

1. The last run time (in sportinglife) is literally the last run time, it doesn't take into account the fact that the race distance may be different (i.e. 480m vs 290m etc). Thus, you'd be advised to scan the Form list and choose the most appropriate matching *last run* based on this match

2. Run time can vary both by track and trap. It may be useful to take into account the amount of *necks* that a runner has been beaten by at each form item level and calculate a true time/speed based on the winning time of the winning runner at that event.

3. Averages across ALL form data is not as meaningful as taking an average across a fixed time period that is relevant to all runners (i.e. 6-9 months, rather than 2 years worth of averages). Too wide a window and you have times for inexperinced runs as well as dogs reaching their natural peak form.

So, in a nutshell, I'd make full use of the sportinglife data but would take time to analyse how best to use the raw data as the plain numbers only tell half the story...

Happy crunching!!
Point 1 confirmed for 11:16 Central Park - https://www.sportinglife.com/greyhounds ... ard/185485

Dog 1& 2 have last race data from D sprint race and best race from T trial race. So it's better to ignore races like these? Archery1969 do you look at details like that or you make the average anyway?
Yes plus i look at the following for confirmation:

- Forecast prices
- market amount matched
- VWAP

Then if the above confirms the selection based on original 0.10 rule then i will request a price, not accept the one being offered from 10 mins out.

In the race you highlighted, i have no BTL trade but i do have a LTB trade selected being the Dog in Trap 1.
do you find the VWAP has much credence when there is still a large gap between the back and lay prices?? I tend to checkpoint the VWAP (on the horses anyway), once a certain market volume has been breached vis a vis the spread has settled and thus VWAP has a consistancy within the market now that it's fully formed.
spreadbetting
Posts: 3140
Joined: Sun Jan 31, 2010 8:06 pm

Here's the bare ratings today from my scraper

11:03 Swindon Wed 22 January 2020,1. Stables Dash, class A8, time difference 0.12
11:09 Romford Wed 22 January 2020,1. Adageo Blue, class A6, time difference 0.15
11:11 Newcastle Wed 22 January 2020,1. Shellam Rafi, class A7, time difference 0.13
11:16 Central Park Wed 22 January 2020,2. Hollyoak Paul, class A6, time difference 0.16
11:39 Romford Wed 22 January 2020,6. Kovac Bailey, class A1, time difference 0.16
12:04 Swindon Wed 22 January 2020,6. Listen Jane, class A5, time difference 0.33
12:46 Central Park Wed 22 January 2020,2. Seriously Stella, class A5, time difference 0.11
13:12 Newcastle Wed 22 January 2020,3. Annas Secret, class A3, time difference 0.12
13:16 Central Park Wed 22 January 2020,4. Fawkham Pernod, class A4, time difference 0.19
13:57 Romford Wed 22 January 2020,4. Curragh Express, class A3, time difference 0.19
14:32 Hove Wed 22 January 2020,5. Kerrs Dilemma, class A3, time difference 0.18
14:47 Belle Vue Wed 22 January 2020,5. Dark As Night, class A5, time difference 0.24
15:02 Monmore Wed 22 January 2020,1. Holte End Olivia, class A7, time difference 0.27
15:11 Hove Wed 22 January 2020,4. Come On Lily, class A3, time difference 0.27
15:39 Monmore Wed 22 January 2020,6. Sugar And Ice, class A7, time difference 0.42
15:59 Monmore Wed 22 January 2020,1. Chauffeur Pulsus, class A8, time difference 0.26
16:07 Belle Vue Wed 22 January 2020,6. Tracys Low Low, class A8, time difference 0.23
16:39 Monmore Wed 22 January 2020,6. Rattling Ollie, class A6, time difference 0.19
18:02 Hove Wed 22 January 2020,1. Fletchwood Jade, class A9, time difference 0.13
18:09 Monmore Wed 22 January 2020,6. Tommys Wonder, class A4, time difference 0.11
18:19 Hove Wed 22 January 2020,6. Ballyregan Socks, class A3, time difference 0.12
18:27 Doncaster Wed 22 January 2020,6. Nolas Aoife, class A7, time difference 0.54
18:55 Sunderland Wed 22 January 2020,1. Drumcrow Nicky, class A4, time difference 0.18
19:03 Doncaster Wed 22 January 2020,1. Proper Pam, class A4, time difference 0.17
19:09 Sunderland Wed 22 January 2020,5. Yacht Star, class A7, time difference 0.17
19:17 Doncaster Wed 22 January 2020,5. Snakes N Ladders, class A3, time difference 0.2
19:23 Harlow Wed 22 January 2020,4. Moaning Merrick, class A6, time difference 0.2
19:38 Harlow Wed 22 January 2020,6. Philfen Diva, class OR, time difference 0.17
19:52 Peterborough Wed 22 January 2020,6. Herecomesdanny, class A5, time difference 0.13
20:27 Harlow Wed 22 January 2020,5. Moors Top Dollar, class OR, time difference 0.51
20:37 Peterborough Wed 22 January 2020,2. Geelo Mazzy, class A8, time difference 0.21
20:42 Harlow Wed 22 January 2020,3. Acton Sam, class OR, time difference 0.31
20:57 Harlow Wed 22 January 2020,6. Bolshoi Blast, class OR, time difference 0.42
21:16 Harlow Wed 22 January 2020,4. Automatic Stay, class OR, time difference 0.14
21:22 Peterborough Wed 22 January 2020,3. Iron Mike, class A9, time difference 0.25
spreadbetting
Posts: 3140
Joined: Sun Jan 31, 2010 8:06 pm

Bog wrote:
Wed Jan 22, 2020 8:40 am

Point 1 confirmed for 11:16 Central Park - https://www.sportinglife.com/greyhounds ... ard/185485

Dog 1& 2 have last race data from D sprint race and best race from T trial race. So it's better to ignore races like these? Archery1969 do you look at details like that or you make the average anyway?
I'd coded my scraper to take the best in situations like that as they put the best time for the distance.
Archery1969
Posts: 4478
Joined: Thu Oct 24, 2019 8:25 am

spreadbetting wrote:
Wed Jan 22, 2020 10:22 am
Here's the bare ratings today from my scraper

11:03 Swindon Wed 22 January 2020,1. Stables Dash, class A8, time difference 0.12
11:09 Romford Wed 22 January 2020,1. Adageo Blue, class A6, time difference 0.15
11:11 Newcastle Wed 22 January 2020,1. Shellam Rafi, class A7, time difference 0.13
11:16 Central Park Wed 22 January 2020,2. Hollyoak Paul, class A6, time difference 0.16
11:39 Romford Wed 22 January 2020,6. Kovac Bailey, class A1, time difference 0.16
12:04 Swindon Wed 22 January 2020,6. Listen Jane, class A5, time difference 0.33
12:46 Central Park Wed 22 January 2020,2. Seriously Stella, class A5, time difference 0.11
13:12 Newcastle Wed 22 January 2020,3. Annas Secret, class A3, time difference 0.12
13:16 Central Park Wed 22 January 2020,4. Fawkham Pernod, class A4, time difference 0.19
13:57 Romford Wed 22 January 2020,4. Curragh Express, class A3, time difference 0.19
14:32 Hove Wed 22 January 2020,5. Kerrs Dilemma, class A3, time difference 0.18
14:47 Belle Vue Wed 22 January 2020,5. Dark As Night, class A5, time difference 0.24
15:02 Monmore Wed 22 January 2020,1. Holte End Olivia, class A7, time difference 0.27
15:11 Hove Wed 22 January 2020,4. Come On Lily, class A3, time difference 0.27
15:39 Monmore Wed 22 January 2020,6. Sugar And Ice, class A7, time difference 0.42
15:59 Monmore Wed 22 January 2020,1. Chauffeur Pulsus, class A8, time difference 0.26
16:07 Belle Vue Wed 22 January 2020,6. Tracys Low Low, class A8, time difference 0.23
16:39 Monmore Wed 22 January 2020,6. Rattling Ollie, class A6, time difference 0.19
18:02 Hove Wed 22 January 2020,1. Fletchwood Jade, class A9, time difference 0.13
18:09 Monmore Wed 22 January 2020,6. Tommys Wonder, class A4, time difference 0.11
18:19 Hove Wed 22 January 2020,6. Ballyregan Socks, class A3, time difference 0.12
18:27 Doncaster Wed 22 January 2020,6. Nolas Aoife, class A7, time difference 0.54
18:55 Sunderland Wed 22 January 2020,1. Drumcrow Nicky, class A4, time difference 0.18
19:03 Doncaster Wed 22 January 2020,1. Proper Pam, class A4, time difference 0.17
19:09 Sunderland Wed 22 January 2020,5. Yacht Star, class A7, time difference 0.17
19:17 Doncaster Wed 22 January 2020,5. Snakes N Ladders, class A3, time difference 0.2
19:23 Harlow Wed 22 January 2020,4. Moaning Merrick, class A6, time difference 0.2
19:38 Harlow Wed 22 January 2020,6. Philfen Diva, class OR, time difference 0.17
19:52 Peterborough Wed 22 January 2020,6. Herecomesdanny, class A5, time difference 0.13
20:27 Harlow Wed 22 January 2020,5. Moors Top Dollar, class OR, time difference 0.51
20:37 Peterborough Wed 22 January 2020,2. Geelo Mazzy, class A8, time difference 0.21
20:42 Harlow Wed 22 January 2020,3. Acton Sam, class OR, time difference 0.31
20:57 Harlow Wed 22 January 2020,6. Bolshoi Blast, class OR, time difference 0.42
21:16 Harlow Wed 22 January 2020,4. Automatic Stay, class OR, time difference 0.14
21:22 Peterborough Wed 22 January 2020,3. Iron Mike, class A9, time difference 0.25
This is not the fastest dog in the race based on the original rules:

"11:09 Romford Wed 22 January 2020,1. Adageo Blue, class A6, time difference 0.15"

Plus TF doesnt rate it at all:

"Youngster making debut. Unproven at this distance. Favourite to be trailing early."

And its forecast odds are 7/1 decimal with 4 other dogs in front of it betting wise. Therefore in theory it's price should drift. Cant see punters backing it when looking at SL, RP and TF.

My pick in that race is Trap 6:

"Fair amount to recommend it in this field."
spreadbetting
Posts: 3140
Joined: Sun Jan 31, 2010 8:06 pm

My scraper is doing nothing other than getting the data it's not looking at comments and neither am I. Unfortunately that race has now finished so can't see the best and last data as the page shows results now.

From the logs best back price at 1:30 out was 3.6 and best lay at the off time was 3.4 so it came in slightly and was ranked 2nd favourite
User avatar
Bog
Posts: 198
Joined: Sat Aug 11, 2018 7:19 am

spreadbetting wrote:
Wed Jan 22, 2020 10:22 am
Here's the bare ratings today from my scraper


15:02 Monmore Wed 22 January 2020,1. Holte End Olivia, class A7, time difference 0.27
Good pick Spreadbetting for a straight bet :D Selection instead of being backed, drifted from ~6 to ~11 and won the race :o
Last edited by Bog on Wed Jan 22, 2020 3:17 pm, edited 3 times in total.
User avatar
Bog
Posts: 198
Joined: Sat Aug 11, 2018 7:19 am

spreadbetting wrote:
Wed Jan 22, 2020 10:24 am
Bog wrote:
Wed Jan 22, 2020 8:40 am

Point 1 confirmed for 11:16 Central Park - https://www.sportinglife.com/greyhounds ... ard/185485

Dog 1& 2 have last race data from D sprint race and best race from T trial race. So it's better to ignore races like these? Archery1969 do you look at details like that or you make the average anyway?
I'd coded my scraper to take the best in situations like that as they put the best time for the distance.
How much time it took to learn that? I started to watch Python tutorials on YT, total newbie, never coded, but looks interesting. So much info. Any advice? :mrgreen:
spreadbetting
Posts: 3140
Joined: Sun Jan 31, 2010 8:06 pm

Bog wrote:
Wed Jan 22, 2020 3:13 pm

How much time it took to learn that? I started to watch Python tutorials on YT, total newbie, never coded, but looks interesting. So much info. Any advice? :mrgreen:
Probably not as long as you'd think , I bought the £9 udemy python course that was recommended on this thread viewtopic.php?f=55&t=19959

It's about 30 hours but most of that is exercises or tests which I skipped as they were a bit boring plus some of the SQL stuff isn't needed to start but not hard either. I finished watching it around xmas time so needed to test my new found skills on something and scraping with python isn't too hard. I had coded previously with php but mainly just look on google when I need to do something still . But doing a course does give you that structured learning and the course, even though it gets boring, is quite good and well done. I probably managed around an hour most days, can't imagine I'd be able to write anything without google though :) But for me coding is a means to an end so once I have something working I never bother coding or trying to code.

Only had dealings so far with VBA for excel, php for old web stuff and python but got to say python is definetly the easiest and , being a newer language, seems to have learnt alot from the failings of other coding languages.

Here's the code I wrote, I imagine most pro coders would spot so many areas it could be made more efficient but as a first attempt at a scraper I was happy it actually kicked out what I needed.

Code: Select all

import re
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession


def extract_times(input):
    times_regex = re.compile(r'Best: (.....)sLast: (.....)s')
    best_times_regex = re.compile(r'Best: (.....)s')
    match = times_regex.search(input)
    best_match = best_times_regex.search(input)
             
    if match:
        if float(match.group(2)) < float(match.group(1)):
            return float(match.group(1))
        else:        
            return round((float(match.group(1))+float(match.group(2)))/2,2)
            
    if best_match:
        return float(best_match.group(1))
    
    return 100

session = HTMLSession()
baseUrl = "https://www.sportinglife.com"
str="/greyhounds/racecards/20"

res = requests.get("https://www.sportinglife.com/greyhounds/racecards")
soup=BeautifulSoup(res.text,"html.parser")
summary=soup.find_all("a", class_="")

x=0
for link in soup.find_all('a'):
    link = link.get('href')
    
    if str in link:
        res = session.get(baseUrl+link)
        soup=BeautifulSoup(res.text,"html.parser")
        race = soup.find_all('h1')[1].get_text()
        distance =soup.find(class_='gh-racecard-summary-race-class gh-racecard-summary-always-open').get_text()
        summary=soup.find_all(class_="gh-racing-runner-key-info-container")
        Runners = dict()

        for link in summary:
            Trap= link.find(class_="gh-racing-runner-cloth").get_text()
            Name =re.sub(r'\(.*\)', '',link.find(class_="gh-racing-runner-greyhound-name").get_text())
            Average_time = extract_times(link.find(class_="gh-racing-runner-greyhound-sub-info").get_text())
            Runners[Average_time]= Trap+'. '+Name


        if bool(Runners) == True and ('OR' in distance or 'A' in distance):

            x = sorted(((k,v) for k,v in Runners.items()))

            if (x[1][0]-x[0][0]) >=0.1:
                
                timeDiff =round((x[1][0]-x[0][0]),2)
                print(f"{race},{x[0][1]}, class {distance}, time difference {timeDiff}")
                
User avatar
Bog
Posts: 198
Joined: Sat Aug 11, 2018 7:19 am

spreadbetting wrote:
Wed Jan 22, 2020 3:42 pm


Probably not as long as you'd think , I bought the £9 udemy python course that was recommended on this thread viewtopic.php?f=55&t=19959

It's about 30 hours but most of that is exercises or tests which I skipped as they were a bit boring plus some of the SQL stuff isn't needed to start but not hard either. I finished watching it around xmas time so needed to test my new found skills on something and scraping with python isn't too hard. I had coded previously with php but mainly just look on google when I need to do something still . But doing a course does give you that structured learning and the course, even though it gets boring, is quite good and well done. I probably managed around an hour most days, can't imagine I'd be able to write anything without google though :) But for me coding is a means to an end so once I have something working I never bother coding or trying to code.

Only had dealings so far with VBA for excel, php for old web stuff and python but got to say python is definetly the easiest and , being a newer language, seems to have learnt alot from the failings of other coding languages.

Here's the code I wrote, I imagine most pro coders would spot so many areas it could be made more efficient but as a first attempt at a scraper I was happy it actually kicked out what I needed.

Code: Select all

import re
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession


def extract_times(input):
    times_regex = re.compile(r'Best: (.....)sLast: (.....)s')
    best_times_regex = re.compile(r'Best: (.....)s')
    match = times_regex.search(input)
    best_match = best_times_regex.search(input)
             
    if match:
        if float(match.group(2)) < float(match.group(1)):
            return float(match.group(1))
        else:        
            return round((float(match.group(1))+float(match.group(2)))/2,2)
            
    if best_match:
        return float(best_match.group(1))
    
    return 100

session = HTMLSession()
baseUrl = "https://www.sportinglife.com"
str="/greyhounds/racecards/20"

res = requests.get("https://www.sportinglife.com/greyhounds/racecards")
soup=BeautifulSoup(res.text,"html.parser")
summary=soup.find_all("a", class_="")

x=0
for link in soup.find_all('a'):
    link = link.get('href')
    
    if str in link:
        res = session.get(baseUrl+link)
        soup=BeautifulSoup(res.text,"html.parser")
        race = soup.find_all('h1')[1].get_text()
        distance =soup.find(class_='gh-racecard-summary-race-class gh-racecard-summary-always-open').get_text()
        summary=soup.find_all(class_="gh-racing-runner-key-info-container")
        Runners = dict()

        for link in summary:
            Trap= link.find(class_="gh-racing-runner-cloth").get_text()
            Name =re.sub(r'\(.*\)', '',link.find(class_="gh-racing-runner-greyhound-name").get_text())
            Average_time = extract_times(link.find(class_="gh-racing-runner-greyhound-sub-info").get_text())
            Runners[Average_time]= Trap+'. '+Name


        if bool(Runners) == True and ('OR' in distance or 'A' in distance):

            x = sorted(((k,v) for k,v in Runners.items()))

            if (x[1][0]-x[0][0]) >=0.1:
                
                timeDiff =round((x[1][0]-x[0][0]),2)
                print(f"{race},{x[0][1]}, class {distance}, time difference {timeDiff}")
                
I'll take a look at the £9 udemy python course, that's a very good price. Cheers for the code, it's time to learn new things :)
User avatar
ilovepizza82
Posts: 537
Joined: Thu Nov 02, 2017 3:41 pm
Contact:

spreadbetting wrote:
Wed Jan 22, 2020 3:42 pm
Bog wrote:
Wed Jan 22, 2020 3:13 pm

How much time it took to learn that? I started to watch Python tutorials on YT, total newbie, never coded, but looks interesting. So much info. Any advice? :mrgreen:
Probably not as long as you'd think , I bought the £9 udemy python course that was recommended on this thread viewtopic.php?f=55&t=19959

It's about 30 hours but most of that is exercises or tests which I skipped as they were a bit boring plus some of the SQL stuff isn't needed to start but not hard either. I finished watching it around xmas time so needed to test my new found skills on something and scraping with python isn't too hard. I had coded previously with php but mainly just look on google when I need to do something still . But doing a course does give you that structured learning and the course, even though it gets boring, is quite good and well done. I probably managed around an hour most days, can't imagine I'd be able to write anything without google though :) But for me coding is a means to an end so once I have something working I never bother coding or trying to code.

Only had dealings so far with VBA for excel, php for old web stuff and python but got to say python is definetly the easiest and , being a newer language, seems to have learnt alot from the failings of other coding languages.

Here's the code I wrote, I imagine most pro coders would spot so many areas it could be made more efficient but as a first attempt at a scraper I was happy it actually kicked out what I needed.

Code: Select all

import re
import requests
from bs4 import BeautifulSoup
from requests_html import HTMLSession


def extract_times(input):
    times_regex = re.compile(r'Best: (.....)sLast: (.....)s')
    best_times_regex = re.compile(r'Best: (.....)s')
    match = times_regex.search(input)
    best_match = best_times_regex.search(input)
             
    if match:
        if float(match.group(2)) < float(match.group(1)):
            return float(match.group(1))
        else:        
            return round((float(match.group(1))+float(match.group(2)))/2,2)
            
    if best_match:
        return float(best_match.group(1))
    
    return 100

session = HTMLSession()
baseUrl = "https://www.sportinglife.com"
str="/greyhounds/racecards/20"

res = requests.get("https://www.sportinglife.com/greyhounds/racecards")
soup=BeautifulSoup(res.text,"html.parser")
summary=soup.find_all("a", class_="")

x=0
for link in soup.find_all('a'):
    link = link.get('href')
    
    if str in link:
        res = session.get(baseUrl+link)
        soup=BeautifulSoup(res.text,"html.parser")
        race = soup.find_all('h1')[1].get_text()
        distance =soup.find(class_='gh-racecard-summary-race-class gh-racecard-summary-always-open').get_text()
        summary=soup.find_all(class_="gh-racing-runner-key-info-container")
        Runners = dict()

        for link in summary:
            Trap= link.find(class_="gh-racing-runner-cloth").get_text()
            Name =re.sub(r'\(.*\)', '',link.find(class_="gh-racing-runner-greyhound-name").get_text())
            Average_time = extract_times(link.find(class_="gh-racing-runner-greyhound-sub-info").get_text())
            Runners[Average_time]= Trap+'. '+Name


        if bool(Runners) == True and ('OR' in distance or 'A' in distance):

            x = sorted(((k,v) for k,v in Runners.items()))

            if (x[1][0]-x[0][0]) >=0.1:
                
                timeDiff =round((x[1][0]-x[0][0]),2)
                print(f"{race},{x[0][1]}, class {distance}, time difference {timeDiff}")
                
LOL reminds me of my old, good C-64 :) Good old times, Syntax error:
https://imgur.com/SUaVo1x
spreadbetting
Posts: 3140
Joined: Sun Jan 31, 2010 8:06 pm

I think print f is in the newer version of python, I only just started on python so got the latest version which was 3.8 I think. Think F strings were introduced in python 3 so time you updated.

It's a pain because most python snippets on the net are for python 2 not 3 :( I always have to limit my Google searches to the last year now
Archery1969
Posts: 4478
Joined: Thu Oct 24, 2019 8:25 am

Hi,

Think i have spotted where using the Best/Last from Sporting Life is not always very accurate.

Based on my original rules then T4 below is the one to BTL.

Perry Barr (A6) - 12:26

Trap Dog Best Last Avg (TRUE) Avg (BELA) Action
1 Final Star 29.29 29.62 29.62 29.46
2 Floral Print 29.24 29.85 29.55 29.55
3 Rosden Charm 29.33 29.66 29.73 29.50
4 Flyhigh Blondie 29.29 29.19 29.80 29.24 ** BTL **
5 Phoenix Quietly 29.24 29.73 29.67 29.49
6 Shortwood Elle 29.37 29.37 29.76 29.37

However, looking at the last 5 runs for each dog (same distance) using other data then you end up with very different results:

T1 T2 T3 T4 T5 T6
29.58 29.27 29.33 29.19 29.27 29.29
29.33 29.34 29.43 29.72 29.00 29.45
29.32 29.27 29.54 29.41 29.18 29.38
28.79 29.02 29.47 29.21 29.46 29.61
29.85 29.25 29.88 29.47 29.97 29.21

29.37 29.23 29.53 29.40 29.38 29.39

The above strongly indicates that T2 is the fastest dog with a time difference of 0.14. Our original selection is the 5th slowest!!!!

Be interesting to see which one actually shortens in price, will it be T4 or T2.

Looking on TF, T2 has 5 stars and 9/4 forecast odds, T4 has 1 star, not in the top 3 pick with 19/2 forecast odds.

So, there looks like there is an obvious flaw just using SL data.

Loving all this number crunching stuff. :D
User avatar
jimibt
Posts: 4193
Joined: Mon Nov 30, 2015 6:42 pm

Archery1969 wrote:
Thu Jan 23, 2020 9:30 am
Hi,

Think i have spotted where using the Best/Last from Sporting Life is not always very accurate.

Based on my original rules then T4 below is the one to BTL.

Perry Barr (A6) - 12:26

Trap Dog Best Last Avg (TRUE) Avg (BELA) Action
1 Final Star 29.29 29.62 29.62 29.46
2 Floral Print 29.24 29.85 29.55 29.55
3 Rosden Charm 29.33 29.66 29.73 29.50
4 Flyhigh Blondie 29.29 29.19 29.80 29.24 ** BTL **
5 Phoenix Quietly 29.24 29.73 29.67 29.49
6 Shortwood Elle 29.37 29.37 29.76 29.37

However, looking at the last 5 runs for each dog (same distance) using other data then you end up with very different results:

T1 T2 T3 T4 T5 T6
29.58 29.27 29.33 29.19 29.27 29.29
29.33 29.34 29.43 29.72 29.00 29.45
29.32 29.27 29.54 29.41 29.18 29.38
28.79 29.02 29.47 29.21 29.46 29.61
29.85 29.25 29.88 29.47 29.97 29.21

29.37 29.23 29.53 29.40 29.38 29.39

The above strongly indicates that T2 is the fastest dog with a time difference of 0.14. Our original selection is the 5th slowest!!!!

Be interesting to see which one actually shortens in price, will it be T4 or T2.

Looking on TF, T2 has 5 stars and 9/4 forecast odds, T4 has 1 star, not in the top 3 pick with 19/2 forecast odds.

So, there looks like there is an obvious flaw just using SL data.

Loving all this number crunching stuff. :D
morning... yes, it looks like the Avg (TRUE) in your data is doing a similar more detailed average. I'd imagine that that column may be looking at the average across the runner, for the distance over a 6 month period. Perhaps when you further investigate how the last 5 times average out, you could change the value of Avg(TRUE) to reflect the best fit. That way, you've still got the original concept in place (Avg (BELA)), plus the new better!?! informed approach.
Post Reply

Return to “Other Betfair Sports Trading markets”