DarkDream
07-13-2005, 06:58 PM
I have a database of all the races in 2003, West Coast 2004 season and currently all races so far for the 2005 season.
I create my own pace and speed figures using the method outlined in Charles Carroll's "Handicapping Speed." One of the difficulties of this method is coming up with "track constants" or more familiarly known as track-to-track variants to equalize horses shipping from one track to another.
In Carroll's book, he recommends going ahead and deriving track constants for tracks that are slower if you are handicapping a fast track. As my main track is Emerald Downs (fastest track in North America), this is a necessity.
His recommendation of averaging times for distances over a couple of seasons at different tracks to get a track constant simply does not work. This rather naive approach has fatal flaws to it. Namely, it does not take into account the fact that different tracks on average have better or worse horses as a whole.
Adding the "track constants" this way actually lowered my win% on picking winners for both my pace and speed figures.
I did this over a year ago.
Since then, I've gone ahead and tried a projection method where I would simply look at some commercial par times (from Cythnia Publishing) at the 10,000 Claimer level (or 5,000 Claimer for minor tracks) for the tracks I wanted to compare. Subtracting the difference in time from the points of call, I used these time differences as a starting point. After doing so, I would go ahead and run my program using the new track constants to see if the win percentage changed for the better. I would then iterate manually via judgement calls, changing the times and testing the results.
This seemed to work ok, but it was vastly time consuming as one could imagine. I have since automated this process, yet the times are sometimes rather dubious (no automation can capture subtle judgements involved in this) and I fear that I am simply making track constants that simply fit the data I have thus far, instead of making a definitive track constant that will work for the future for a large sample of races.
My last approach of coming up with track constants may be the most promising so far. Instead of trying to worry about class at different tracks and so on, I taken the approach of simply seeing how faster or slower a shipper runs from the same distance from one track to another. I would thus track all the horses that ran a distance at one track (averaged the times) then would average all the times the horse ran at the same distance at another track. I would then take the difference between the averaged times and averaged this difference with all other horses who ran between the two tracks.
I understand that I am making some assumptions on doing this, namely:
1) Assuming horses run as well on their home track as a track shipped to
2) Horses are fairly consistent in the times they post
3) Horses are competing generally in the same class levels
4) The track variant on fast tracks does not deviate wildly
When calculating this, I only used male horses 3 year old and older. Also races on fast tracks were only used.
There are generally five tracks where shippers come from at Emerald Downs. The tracks are: Hastings, Golden Gate, Bay Meadows, Turf Paradise and Portland Meadows.
I have listed below the results of my research. Please note that the the "numRaces" is a misnomer. The "numRaces" denotes the number of horses that have shipped from EMD to any of the following tracks and ran at the designated distance below. Also not the the "avg=" is the time you add to the foreign track to make the time comparable to an Emerald Downs (EMD) race. For example, when comparing the 1st fraction GG time to an EMD time, add -0.12 to the first call time; if the first call time for a GG horse is 21.45, adding -0.12 you get 21.33.
I would ignore all my results where the "numRaces" is below 30 or so.
First Call Times (1st Fraction for both Sprints and Routes):
GG
Distance: 8f --numRaces=49, avg=0.5495910088312703]
Distance: 5.5f --numRaces=18, avg=0.10509711495259941]
Distance: 6f --numRaces=101, avg=-0.12846369603686575]
Distance: 8.5f --numRaces=13, avg=0.1689554721910809]
BM
Distance: 8f --numRaces=43, avg=0.14599613542381024]
Distance: 6f --numRaces=80, avg=-0.5752669919382571]
Distance: 5.5f -- numRaces=12, avg=-0.13006170539663398]
Distance: 8.5f -- numRaces=11, avg=0.43640219326093704]
TUP
Distance: 8f --numRaces=65, avg=0.08927274124759618]
Distance: 5.5f --numRaces=29, avg=-0.28056484284195754]
Distance: 6f --numRaces=83, avg=-0.21565520115702516]
Distance: 8.5f --numRaces=9, avg=-0.474596827817177]
Distance: 6.5f --numRaces=60, avg=-0.2191047351432448]
HST
Distance: 9f --numRaces=3, avg=0.01124688716657237]
Distance: 6f --numRaces=5, avg=-0.5244005415269826]
Distance: 8.5f --numRaces=3, avg=0.0335960108154166]
Distance: 6.5f --numRaces=27, avg=-0.013980735975257796]
PM
Distance: 9f --numRaces=2, avg=-0.5718418958656706]
Distance: 8f --numRaces=65, avg=-0.4629106730887801]
Distance: 5.5f --numRaces=58, avg=-1.0000118762822825]
Distance: 6f --numRaces=150, avg=-0.8319599547160648]
Distance: 8.5f --numRaces=19, avg=-0.34909640343000387]
Distance: 5f --numRaces=9, avg=-0.7237272655292794]
Here is for the second fraction (4f) for both sprints and routes:
GG
Distance: 8f --numRaces=49, avg=0.1958146441785118]
Distance: 5.5f --numRaces=18, avg=-0.24850721029463252]
Distance: 6f -- numRaces=101, avg=-0.09780908966856136]
Distance: 8.5f --numRaces=13, avg=-0.18430434669386989]
BM
Distance: 8f --numRaces=43, avg=-0.47423222106221447]
Distance: 6f --numRaces=80, avg=-0.5551420246407437]
Distance: 5.5f --numRaces=12, avg=-0.27537988353262816]
Distance: 8.5f --numRaces=11, avg=0.3036215323328639]
TUP
Distance: 8f --numRaces=65, avg=0.07001591358082034]
Distance: 5.5f --numRaces=29, avg=-0.02687397009179879]
Distance: 6f --numRaces=83, avg=-0.03446399151231054]
Distance: 8.5f --numRaces=9, avg=-0.520729236756486]
Distance: 5f --numRaces=1, avg=0.10318055540142979]
Distance: 6.5f --numRaces=60, avg=-0.15287023976928016]
HST
Distance: 9f --numRaces=3, avg=-0.014023159784559406]
Distance: 6f --numRaces=5, avg=-1.1447979384745977]
Distance: 8.5f --numRaces=3, avg=-0.2694785419768664]
Distance: 6.5f --numRaces=27, avg=-0.733275364033052]
PM
Distance: 9f --numRaces=2, avg=-1.305811595396559]
Distance: 8f --numRaces=65, avg=-1.29581240417243]
Distance: 5.5f --numRaces=58, avg=-1.5425400542279366]
Distance: 6f --numRaces=150, avg=-1.3206012793071449]
Distance: 8.5f --numRaces=19, avg=-1.300105716540547]
Distance: 5f --numRaces=9, avg=-1.6537818752704918]
Here is for the third fraction (6f only for route races):
GG
Distance: 8f -- numRaces=49, avg=-0.07094162331651026]
Distance: 8.5f -- numRaces=13, avg=-0.5463010442791723]
BM
Distance: 8f --numRaces=43, avg=-0.6932972501104998]
Distance: 8.5f --numRaces=11, avg=0.05000329434008289]
TUP
Distance: 8f --numRaces=65, avg=-0.13992718023404768]
Distance: 8.5f --numRaces=9, avg=-0.4927765533198425]
HST
Distance: 9f --numRaces=3, avg=-0.8438685613124856]
Distance: 8.5f --numRaces=3, avg=-0.5391901536615838]
PM
Distance: 9f --numRaces=2, avg=-1.757025496583033]
Distance: 8f --numRaces=65, avg=-2.1625006639027875]
Distance: 8.5f --numRaces=19, avg=-2.168117565102347]
Finally here is the final call for both sprints and routes:
GG
Distance: 8f --numRaces=49, avg=-0.6004568486300509]
Distance: 5.5f --numRaces=18, avg=-0.3736336674689136]
Distance: 6f --numRaces=101, avg=-0.3456089674526923]
Distance: 8.5f --numRaces=13, avg=-0.9920512954071632]
BM
Distance: 8f --numRaces=43, avg=-0.9937558488222237]
Distance: 6f --numRaces=80, avg=-0.9587026090651879]
Distance: 5.5f --numRaces=12, avg=-0.7686714291715612]
Distance: 8.5f --numRaces=11, avg=-0.6540655510843734]
TUP
Distance: 8f --numRaces=65, avg=-0.5929288746897783]
Distance: 5.5f --numRaces=29, avg=-0.10165330109897557]
Distance: 6f --numRaces=83, avg=-0.022548251285014993]
Distance: 8.5f --numRaces=9, avg=-0.6578239998410204]
Distance: 5f --numRaces=1, avg=-0.23513832018303304]
Distance: 6.5f --numRaces=60, avg=-0.4367673781946396]
HST
Distance: 9f --numRaces=3, avg=-2.1938767821584926]
Distance: 6f --numRaces=5, avg=-2.7164174377369137]
Distance: 8.5f --numRaces=3, avg=-1.2209141597415822]
Distance: 6.5f --numRaces=27, avg=-1.995260458705693]
PM
Distance: 9f --numRaces=2, avg=-2.6583250895798827]
Distance: 8f --numRaces=65, avg=-3.9796263664841973]
Distance: 5.5f --numRaces=58, avg=-2.547515051304541]
Distance: 6f --numRaces=150, avg=-2.6678946683051987]
Distance: 8.5f --numRaces=19, avg=-3.5501268888160205]
Distance: 5f --numRaces=9, avg=-1.936127423093346]
Does any of these values seem to be on target? Is this a valid approach?
I was wondering if anyone else has tackled this thorny problem. It seems to me that only with accurate track-to-track variants can one assess shippers appropriately.
Maybe Mr. Dave Schwartz could lend some insight into this, and anyone else. Any suggestions, advice and/or ideas would be greatly appreciated.
Thanks,
DarkDream
I create my own pace and speed figures using the method outlined in Charles Carroll's "Handicapping Speed." One of the difficulties of this method is coming up with "track constants" or more familiarly known as track-to-track variants to equalize horses shipping from one track to another.
In Carroll's book, he recommends going ahead and deriving track constants for tracks that are slower if you are handicapping a fast track. As my main track is Emerald Downs (fastest track in North America), this is a necessity.
His recommendation of averaging times for distances over a couple of seasons at different tracks to get a track constant simply does not work. This rather naive approach has fatal flaws to it. Namely, it does not take into account the fact that different tracks on average have better or worse horses as a whole.
Adding the "track constants" this way actually lowered my win% on picking winners for both my pace and speed figures.
I did this over a year ago.
Since then, I've gone ahead and tried a projection method where I would simply look at some commercial par times (from Cythnia Publishing) at the 10,000 Claimer level (or 5,000 Claimer for minor tracks) for the tracks I wanted to compare. Subtracting the difference in time from the points of call, I used these time differences as a starting point. After doing so, I would go ahead and run my program using the new track constants to see if the win percentage changed for the better. I would then iterate manually via judgement calls, changing the times and testing the results.
This seemed to work ok, but it was vastly time consuming as one could imagine. I have since automated this process, yet the times are sometimes rather dubious (no automation can capture subtle judgements involved in this) and I fear that I am simply making track constants that simply fit the data I have thus far, instead of making a definitive track constant that will work for the future for a large sample of races.
My last approach of coming up with track constants may be the most promising so far. Instead of trying to worry about class at different tracks and so on, I taken the approach of simply seeing how faster or slower a shipper runs from the same distance from one track to another. I would thus track all the horses that ran a distance at one track (averaged the times) then would average all the times the horse ran at the same distance at another track. I would then take the difference between the averaged times and averaged this difference with all other horses who ran between the two tracks.
I understand that I am making some assumptions on doing this, namely:
1) Assuming horses run as well on their home track as a track shipped to
2) Horses are fairly consistent in the times they post
3) Horses are competing generally in the same class levels
4) The track variant on fast tracks does not deviate wildly
When calculating this, I only used male horses 3 year old and older. Also races on fast tracks were only used.
There are generally five tracks where shippers come from at Emerald Downs. The tracks are: Hastings, Golden Gate, Bay Meadows, Turf Paradise and Portland Meadows.
I have listed below the results of my research. Please note that the the "numRaces" is a misnomer. The "numRaces" denotes the number of horses that have shipped from EMD to any of the following tracks and ran at the designated distance below. Also not the the "avg=" is the time you add to the foreign track to make the time comparable to an Emerald Downs (EMD) race. For example, when comparing the 1st fraction GG time to an EMD time, add -0.12 to the first call time; if the first call time for a GG horse is 21.45, adding -0.12 you get 21.33.
I would ignore all my results where the "numRaces" is below 30 or so.
First Call Times (1st Fraction for both Sprints and Routes):
GG
Distance: 8f --numRaces=49, avg=0.5495910088312703]
Distance: 5.5f --numRaces=18, avg=0.10509711495259941]
Distance: 6f --numRaces=101, avg=-0.12846369603686575]
Distance: 8.5f --numRaces=13, avg=0.1689554721910809]
BM
Distance: 8f --numRaces=43, avg=0.14599613542381024]
Distance: 6f --numRaces=80, avg=-0.5752669919382571]
Distance: 5.5f -- numRaces=12, avg=-0.13006170539663398]
Distance: 8.5f -- numRaces=11, avg=0.43640219326093704]
TUP
Distance: 8f --numRaces=65, avg=0.08927274124759618]
Distance: 5.5f --numRaces=29, avg=-0.28056484284195754]
Distance: 6f --numRaces=83, avg=-0.21565520115702516]
Distance: 8.5f --numRaces=9, avg=-0.474596827817177]
Distance: 6.5f --numRaces=60, avg=-0.2191047351432448]
HST
Distance: 9f --numRaces=3, avg=0.01124688716657237]
Distance: 6f --numRaces=5, avg=-0.5244005415269826]
Distance: 8.5f --numRaces=3, avg=0.0335960108154166]
Distance: 6.5f --numRaces=27, avg=-0.013980735975257796]
PM
Distance: 9f --numRaces=2, avg=-0.5718418958656706]
Distance: 8f --numRaces=65, avg=-0.4629106730887801]
Distance: 5.5f --numRaces=58, avg=-1.0000118762822825]
Distance: 6f --numRaces=150, avg=-0.8319599547160648]
Distance: 8.5f --numRaces=19, avg=-0.34909640343000387]
Distance: 5f --numRaces=9, avg=-0.7237272655292794]
Here is for the second fraction (4f) for both sprints and routes:
GG
Distance: 8f --numRaces=49, avg=0.1958146441785118]
Distance: 5.5f --numRaces=18, avg=-0.24850721029463252]
Distance: 6f -- numRaces=101, avg=-0.09780908966856136]
Distance: 8.5f --numRaces=13, avg=-0.18430434669386989]
BM
Distance: 8f --numRaces=43, avg=-0.47423222106221447]
Distance: 6f --numRaces=80, avg=-0.5551420246407437]
Distance: 5.5f --numRaces=12, avg=-0.27537988353262816]
Distance: 8.5f --numRaces=11, avg=0.3036215323328639]
TUP
Distance: 8f --numRaces=65, avg=0.07001591358082034]
Distance: 5.5f --numRaces=29, avg=-0.02687397009179879]
Distance: 6f --numRaces=83, avg=-0.03446399151231054]
Distance: 8.5f --numRaces=9, avg=-0.520729236756486]
Distance: 5f --numRaces=1, avg=0.10318055540142979]
Distance: 6.5f --numRaces=60, avg=-0.15287023976928016]
HST
Distance: 9f --numRaces=3, avg=-0.014023159784559406]
Distance: 6f --numRaces=5, avg=-1.1447979384745977]
Distance: 8.5f --numRaces=3, avg=-0.2694785419768664]
Distance: 6.5f --numRaces=27, avg=-0.733275364033052]
PM
Distance: 9f --numRaces=2, avg=-1.305811595396559]
Distance: 8f --numRaces=65, avg=-1.29581240417243]
Distance: 5.5f --numRaces=58, avg=-1.5425400542279366]
Distance: 6f --numRaces=150, avg=-1.3206012793071449]
Distance: 8.5f --numRaces=19, avg=-1.300105716540547]
Distance: 5f --numRaces=9, avg=-1.6537818752704918]
Here is for the third fraction (6f only for route races):
GG
Distance: 8f -- numRaces=49, avg=-0.07094162331651026]
Distance: 8.5f -- numRaces=13, avg=-0.5463010442791723]
BM
Distance: 8f --numRaces=43, avg=-0.6932972501104998]
Distance: 8.5f --numRaces=11, avg=0.05000329434008289]
TUP
Distance: 8f --numRaces=65, avg=-0.13992718023404768]
Distance: 8.5f --numRaces=9, avg=-0.4927765533198425]
HST
Distance: 9f --numRaces=3, avg=-0.8438685613124856]
Distance: 8.5f --numRaces=3, avg=-0.5391901536615838]
PM
Distance: 9f --numRaces=2, avg=-1.757025496583033]
Distance: 8f --numRaces=65, avg=-2.1625006639027875]
Distance: 8.5f --numRaces=19, avg=-2.168117565102347]
Finally here is the final call for both sprints and routes:
GG
Distance: 8f --numRaces=49, avg=-0.6004568486300509]
Distance: 5.5f --numRaces=18, avg=-0.3736336674689136]
Distance: 6f --numRaces=101, avg=-0.3456089674526923]
Distance: 8.5f --numRaces=13, avg=-0.9920512954071632]
BM
Distance: 8f --numRaces=43, avg=-0.9937558488222237]
Distance: 6f --numRaces=80, avg=-0.9587026090651879]
Distance: 5.5f --numRaces=12, avg=-0.7686714291715612]
Distance: 8.5f --numRaces=11, avg=-0.6540655510843734]
TUP
Distance: 8f --numRaces=65, avg=-0.5929288746897783]
Distance: 5.5f --numRaces=29, avg=-0.10165330109897557]
Distance: 6f --numRaces=83, avg=-0.022548251285014993]
Distance: 8.5f --numRaces=9, avg=-0.6578239998410204]
Distance: 5f --numRaces=1, avg=-0.23513832018303304]
Distance: 6.5f --numRaces=60, avg=-0.4367673781946396]
HST
Distance: 9f --numRaces=3, avg=-2.1938767821584926]
Distance: 6f --numRaces=5, avg=-2.7164174377369137]
Distance: 8.5f --numRaces=3, avg=-1.2209141597415822]
Distance: 6.5f --numRaces=27, avg=-1.995260458705693]
PM
Distance: 9f --numRaces=2, avg=-2.6583250895798827]
Distance: 8f --numRaces=65, avg=-3.9796263664841973]
Distance: 5.5f --numRaces=58, avg=-2.547515051304541]
Distance: 6f --numRaces=150, avg=-2.6678946683051987]
Distance: 8.5f --numRaces=19, avg=-3.5501268888160205]
Distance: 5f --numRaces=9, avg=-1.936127423093346]
Does any of these values seem to be on target? Is this a valid approach?
I was wondering if anyone else has tackled this thorny problem. It seems to me that only with accurate track-to-track variants can one assess shippers appropriately.
Maybe Mr. Dave Schwartz could lend some insight into this, and anyone else. Any suggestions, advice and/or ideas would be greatly appreciated.
Thanks,
DarkDream