JCapper UDMs for Two Horse Win Betting
OVERVIEW
Someone recently asked me: "Is it possible to set up JCapper UDMs for two horse win betting?"
He went on to explain he had a Sartin background and had always been intrigued by the idea of backing a primary contender
seen as +EV (positive expected value) sometimes at high odds albeit with a low win rate - and offsetting that by making a
second win bet on another horse seen as having a (small) minus EV at lower odds - and therefore a higher win rate.
The idea behind this is that the higher win percent of the second horse helps to smooth out the inevitable volatility and bankroll swings
that arise from betting the first type of horse alone.
I told him that's not how I use JCapper. Analysis of records from my own WagerHistory table tells me that negative roi from betting the second type of horse results in reduced overall profit compared to betting the first type of horse alone.
However, I'll be the first to admit that betting the first type of horse alone does come with quite a bit of volatility.
After giving the concept some thought I told him: "Yes, it's possible to set up JCapper UDMs for two horse win betting."
And from there I decided to write this article.
In my opinion, in order to make two horse win betting work for you:
- Two horse win betting needs to fit your temperament. (Imo, not everyone can say this.)
- From a strategy standpoint, you need to map things out ahead of time so that losses from betting the second type of horse doesn't erode too much of your profits from betting the first type of horse.
If you can satisfy the above two bullet points, it's possible two horse win beting can work for you.
STRATEGY
The strategy I'm going to illustrate in this article is pretty simple.
Create two UDMs:
- The first UDM will be for the first type of horse: A primary contender seen as having +EV (positive expected value) sometimes at high odds albeit with a low win rate.
- The second UDM will be for the second type of horse: A logical contender seen as having a (small) minus EV at lower odds - and therefore a higher win rate.
Each UDM should generate approximately the same number of plays.
Both UDMs combined should generate +EV (positive expected value.)
And towards the bottom of this article, I'll show you how to combine both UDMs into a single sql expression you can execute in the JCapper Data Window - so that you can test out this last part with actual data.
THE FIRST UDM
In my opinion, every UDM should be based on a concept you can express with a single sentence.
The first UDM is based on a simple concept:
- Horses that rank strongly for two significant factors in races with decent field size.
Expanding on that one step further, let's define rank strongly for two significant factors to mean the following:
- Rank equals one for the first factor.
- Ranks very close to the top of the field for the second factor.
Expanding on that one step further, let's define ranks very close to the top of the field for the second factor as:
- Rank for the second factor must be less than or equal to field size divided by 5 rounded to the nearest whole number.
In a 5 horse field, this works out as rank for the second factor must be less than or equal to one.
In a 10 horse field, rank for the second factor must be less than or equal to two, etc.
In the sql expression below I can accomplish this by using "<= CLng(Fieldsize/5)" (without the quotes.)
This is what the sql expression for the factor pairing looks like:
SELECT * FROM STARTERHISTORY
WHERE RANKF01=1
and rankf02 <= CLng(Fieldsize/5)
AND [DATE] >= #01-01-2020#
AND [DATE] <= #09-06-2020#
ORDER BY [DATE], TRACK, RACE
Working through that one line at a time, "SELECT * FROM STARTERHISTORY" (without the quotes) means
select all columns from the StarterHistory table in the connected to database.
Next, we have "WHERE RANKF01=1" (without the quotes) which means only where rank for the first factor "F01" (without the quotes) is equal to one.
Next, we have "and rankf02 <= CLng(Fieldsize/5)" (without the quotes) which means only if rank for the second factor "F02" (without the quotes) is less than or equal to field size divided by five rounded to the nearest whole number.
Next, we have "AND [DATE] >= #01-01-2020#" (without the quotes) and "AND [DATE] <= #09-06-2020#" (again without the quotes) which means
from start date January 01, 2020 to end date September 06, 2020 inclusive.
Note that I decided to use those dates because I wanted the data to reflect calendar year 2020 year to date.
Right now as I type this it's Monday September 07, 2020 and the data in the query results below reflect every thoroughbred race at all tracks for calendar year 2020 current through yesterday using data from HDW (Handicappers Data Warehouse.)
Below is a cut and paste of the actual query results after running the above sql expression through the JCapper Data Window with the output further broken out by field size:
query start: 9/7/2020 4:58:18 PM
query end: 9/7/2020 4:58:32 PM
elapsed time: 14 seconds
Data Window Settings:
Connected to: C:\JCapper\exe\JCapper2.mdb
999 Divisor Odds Cap: None
SQL UDM Plays Report: Hide
SQL: SELECT * FROM STARTERHISTORY
WHERE RANKF01=1
and rankf02 <= CLng(Fieldsize/5)
AND [DATE] >= #01-01-2020#
AND [DATE] <= #09-06-2020#
ORDER BY [DATE], TRACK, RACE
Data Summary Win Place Show
-----------------------------------------------------
Mutuel Totals 8938.90 8043.50 7779.30
Bet -8918.00 -8918.00 -8918.00
-----------------------------------------------------
P/L 20.90 -874.50 -1138.70
Wins 969 1716 2245
Plays 4459 4459 4459
PCT .2173 .3848 .5035
ROI 1.0023 0.9019 0.8723
Avg Mut 9.22 4.69 3.47
By: FieldSize
Value P/L Bet Roi Wins Plays Pct Impact AvgMut
----------------------------------------------------------------------------------
1 0.00 0.00 0.0000 0 0 .0000 0.0000 0.00
2 0.00 0.00 0.0000 0 0 .0000 0.0000 0.00
3 -8.40 30.00 0.7200 6 15 .4000 1.8407 3.60
4 -36.90 170.00 0.7829 28 85 .3294 1.5158 4.75
5 -104.20 682.00 0.8472 104 341 .3050 1.4034 5.56
6 -235.00 1372.00 0.8287 168 686 .2449 1.1269 6.77
7 170.70 1388.00 1.1230 164 694 .2363 1.0874 9.50
8 147.90 2178.00 1.0679 228 1089 .2094 0.9634 10.20
9 -27.40 1332.00 0.9794 126 666 .1892 0.8706 10.35
10 -147.10 1004.00 0.8535 76 502 .1514 0.6967 11.28
11 146.00 400.00 1.3650 37 200 .1850 0.8513 14.76
12 106.70 330.00 1.3233 30 165 .1818 0.8367 14.56
13 -21.60 28.00 0.2286 1 14 .0714 0.3287 6.40
14 32.20 2.00 17.1000 1 1 1.0000 4.6017 34.20
15 -2.00 2.00 0.0000 0 1 .0000 0.0000 0.00
16 0.00 0.00 0.0000 0 0 .0000 0.0000 0.00
17 0.00 0.00 0.0000 0 0 .0000 0.0000 0.00
18 0.00 0.00 0.0000 0 0 .0000 0.0000 0.00
19 0.00 0.00 0.0000 0 0 .0000 0.0000 0.00
Ending BankRoll: $56.95
Starting BankRoll: $300.00
High BankRoll: $985.25
Low BankRoll: $56.95
Longest Losing Streak: 30.00
Bet Percentage: 0.0175
Max Bet: 999999999.00
Note that the above query results for the factor pairing I used resulted in near break even play.
Note that the above query results for the factor pairing shows +EV (positive expectation) play when field size is seven or greater.
Keep in mind that horse race betting is competition that pits players against each other in parimutuel pools.
For that reason, I am not going to reveal the names of the factors in the factor pairing used in the above query results.
But I can assure you both factors are readily available to anyone using HDW data in JCapper Platinum.
Next is a cut and paste of the query results after adding a minimum field size constraint of seven and running the revised sql
expression through the JCapper Data Window with the output further broken out by MLOR3 and eUPRZScoreProb:
query start: 9/7/2020 5:02:36 PM
query end: 9/7/2020 5:02:43 PM
elapsed time: 7 seconds
Data Window Settings:
Connected to: C:\JCapper\exe\JCapper2.mdb
999 Divisor Odds Cap: None
SQL UDM Plays Report: Hide
SQL: SELECT * FROM STARTERHISTORY
WHERE RANKF01=1
and rankf02 <= CLng(Fieldsize/5)
and fieldsize >= 7
AND [DATE] >= #01-01-2020#
AND [DATE] <= #09-06-2020#
ORDER BY [DATE], TRACK, RACE
Data Summary Win Place Show
-----------------------------------------------------
Mutuel Totals 7069.40 6145.70 5983.00
Bet -6664.00 -6664.00 -6664.00
-----------------------------------------------------
P/L 405.40 -518.30 -681.00
Wins 663 1173 1599
Plays 3332 3332 3332
PCT .1990 .3520 .4799
ROI 1.0608 0.9222 0.8978
Avg Mut 10.66 5.24 3.74
By: MLOR3
>=Min < Max P/L Bet Roi Wins Plays Pct Impact
--------------------------------------------------------------------------------------
-999.0000 0.7500 -167.50 3810.00 0.9560 324 1905 .1701 0.8548
0.7500 0.7750 -34.00 130.00 0.7385 13 65 .2000 1.0051
0.7750 0.8000 43.90 126.00 1.3484 18 63 .2857 1.4359
0.8000 0.8250 -23.00 112.00 0.7946 11 56 .1964 0.9872
0.8250 0.8500 -52.00 118.00 0.5593 10 59 .1695 0.8518
0.8500 0.8750 57.20 114.00 1.5018 18 57 .3158 1.5870
0.8750 0.9000 -7.60 108.00 0.9296 13 54 .2407 1.2099
0.9000 0.9250 6.90 86.00 1.0802 12 43 .2791 1.4025
0.9250 0.9500 -45.10 102.00 0.5578 8 51 .1569 0.7883
0.9500 0.9750 28.70 102.00 1.2814 8 51 .1569 0.7883
0.9750 1.0000 7.60 98.00 1.0776 10 49 .2041 1.0256
1.0000 1.0250 4.60 108.00 1.0426 14 54 .2593 1.3029
1.0250 1.0500 -2.80 70.00 0.9600 8 35 .2286 1.1487
1.0500 1.0750 -8.80 80.00 0.8900 13 40 .3250 1.6333
1.0750 1.1000 -27.30 58.00 0.5293 6 29 .2069 1.0398
1.1000 1.1250 27.80 44.00 1.6318 4 22 .1818 0.9138
1.1250 1.1500 -22.00 70.00 0.6857 8 35 .2286 1.1487
1.1500 1.1750 146.40 60.00 3.4400 7 30 .2333 1.1726
1.1750 1.2000 -33.40 70.00 0.5229 3 35 .0857 0.4308
1.2000 9999.0000 505.80 1198.00 1.4222 155 599 .2588 1.3005
By: eUPRZScoreProb
>=Min < Max P/L Bet Roi Wins Plays Pct Impact
--------------------------------------------------------------------------------------
-999.0000 0.7500 -241.60 4310.00 0.9439 517 2155 .2399 1.2057
0.7500 0.7750 -0.20 104.00 0.9981 8 52 .1538 0.7732
0.7750 0.8000 -1.00 92.00 0.9891 5 46 .1087 0.5463
0.8000 0.8250 -17.00 84.00 0.7976 7 42 .1667 0.8376
0.8250 0.8500 35.40 82.00 1.4317 8 41 .1951 0.9806
0.8500 0.8750 -53.60 88.00 0.3909 4 44 .0909 0.4569
0.8750 0.9000 11.60 76.00 1.1526 7 38 .1842 0.9258
0.9000 0.9250 22.20 72.00 1.3083 7 36 .1944 0.9772
0.9250 0.9500 3.00 60.00 1.0500 6 30 .2000 1.0051
0.9500 0.9750 55.30 64.00 1.8641 8 32 .2500 1.2564
0.9750 1.0000 32.00 60.00 1.5333 6 30 .2000 1.0051
1.0000 1.0250 4.80 58.00 1.0828 4 29 .1379 0.6932
1.0250 1.0500 -37.60 62.00 0.3935 2 31 .0645 0.3242
1.0500 1.0750 -31.20 56.00 0.4429 3 28 .1071 0.5385
1.0750 1.1000 35.00 62.00 1.5645 6 31 .1935 0.9727
1.1000 1.1250 -2.60 52.00 0.9500 2 26 .0769 0.3866
1.1250 1.1500 -8.90 56.00 0.8411 3 28 .1071 0.5385
1.1500 1.1750 -25.60 42.00 0.3905 2 21 .0952 0.4786
1.1750 1.2000 34.20 36.00 1.9500 3 18 .1667 0.8376
1.2000 9999.0000 591.20 1148.00 1.5150 55 574 .0958 0.4816
Ending BankRoll: $56.50
Starting BankRoll: $300.00
High BankRoll: $1,377.45
Low BankRoll: $56.50
Longest Losing Streak: 23.00
Bet Percentage: 0.0175
Max Bet: 999999999.00
For me, the ability to separate likely +EV horses from likely -EV horses is central to play or pass decision making.
JCapper has a number of value ratios. There are times when a value ratio can be useful for play or pass
decision making. There are also times that same value ratio is useless for play or pass decision making.
Whether or not the breakout data for an individual value ratio suggests a good cutoff for +EV play depends on the following:
The makeup of the factor constraints in the sql expression you are testing.
Public betting trends as they existed for the date-range of your query results.
Effective use of value ratios depends on the situation. A given value ratio may work in some situations and not in others.
The only way to know is to test. And to keep testing.
The first factor breakout table (above) shows the query results broken out by a JCapper factor called MLOR3.
MLOR3 is a value ratio based on the ratio between Morning Line Odds and a JCapper Odds Line factor called JPRMLProb.
JPRMLProb is a factor in JCapper generated by an algorithm that uses JPR (or JCapper Power Rating)
and Morning Line Odds as inputs. JPRMLProb is a probability estimate that exists as a decimal value between 0 and 1.
The odds line part is based on the following formula:
JPRMLProb_OL = (1/JPRMLProb) - 1
From there, MLOR3 can be calculated using the following formula:
MLOR3 = (Morning_Line_Odds / JPRMLProb_OL)
In the above table where the query results are broken out by MLOR3, each row shows what
happened for a specific range of MLOR3, and historical break even for the query results
occurred at MLOR3 just above 0.85.
JPR, JPRMLProb, and MLOR3 (as delivered in the program download) are seen by all registered owners of JCapper Platinum.
The second factor breakout table (above) shows the query results broken out by a JCapper factor called eUPRZScoreProb.
eUPRZScoreProb is an expected value calculation based on final odds divided by an odds line probability estimate in
JCapper Platinum called UPRZScoreProb.
UPRZScoreProb is generated by a JCapper algorithm that uses UPR (or User Defined Power Rating) as an input.
The odds line part is based on the following formula:
UPRZScoreProb_OL = (1/UPRZScoreProb) - 1
eUPRZScoreProb is an acronym. The "e" (without the quotes) stands for expected value.
The "e" or expected value part is based on the following formula:
eUPRZScoreProb = (Odds / UPRZScoreProb_OL)
In a perfect world, theoretical break even occurs at e = 1.0
In the above table where the query results are broken out by eUPRZScoreProb, each row shows what
happened for a specific range of eUPRZScoreProb, and historical break even for the query results
occurred at eUPRZScoreProb just below 0.90.
UPR is an acronym that stands for User Defined Power Rating.
In JCapper Platinum, the user has the ability to create their own UPR.
Unless you share it with somebody, you are the only player who ever sees your UPR.
The JCapper user who hasn't taken the time to create their own UPR could use an MLOR3 value cuttoff suggested by the data.
The JCapper user who has taken the time to create a good UPR could use an eUPRZScoreProb cuttoff as suggested by the data.
Or alternately: a combination of value cuttoffs involving eUPRZScoreProb, eMLine, MLOR3, MLOR5, and PScore_HDW, etc.
THE SECOND UDM
The second UDM is also based on a simple concept:
- Horses that rank strongly for two significant factors, rank reasonably well for two logical factors, and are not selected by the first UDM - in races with decent field size.
Expanding on that, let's define rank strongly for two significant factors to mean the following:
- Rank one for a final time speed fig.
- And rank one for a late pace fig.
Let's define rank reasonably well for two logical factors to mean the following:
- Rank for Morning Line Odds is less than or equal to four.
- Rank for a Prob Expression that scores Trainer Stats is less than or equal to five.
Then, let's define are not selected by the first UDM to mean the following:
- Are not rank one for the first factor in the first UDM - and therefore cannot be selected by the first UDM.
Below is a cut and paste of the query results after running the sql expression for the second UDM through the JCapper Data Window
with the data further broken out by a value ratio called PScore_HDW:
query start: 9/7/2020 10:04:50 AM
query end: 9/7/2020 10:04:55 AM
elapsed time: 5 seconds
Data Window Settings:
Connected to: C:\JCapper\exe\JCapper2.mdb
999 Divisor Odds Cap: None
SQL UDM Plays Report: Hide
SQL: SELECT * FROM STARTERHISTORY
WHERE RANKF17=1
AND RANKF23=1
AND RANKMLINE <= 4
AND RANKF06 <= 5
AND NOT RANKF01=1
AND FIELDSIZE >= 7
AND [DATE] >= #01-01-2020#
AND [DATE] <= #09-06-2020#
ORDER BY [DATE], TRACK, RACE
Data Summary Win Place Show
-----------------------------------------------------
Mutuel Totals 5952.00 5769.60 5899.80
Bet -6334.00 -6334.00 -6334.00
-----------------------------------------------------
P/L -382.00 -564.40 -434.20
Wins 967 1622 2112
Plays 3167 3167 3167
PCT .3053 .5122 .6669
ROI 0.9397 0.9109 0.9314
Avg Mut 6.16 3.56 2.79
By: PScore_HDW
>=Min < Max P/L Bet Roi Wins Plays Pct Impact
--------------------------------------------------------------------------------------
-999.0000 40.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
40.0000 45.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
45.0000 50.0000 -118.20 422.00 0.7199 32 211 .1517 0.4967
50.0000 55.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
55.0000 60.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
60.0000 65.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
65.0000 70.0000 -2.00 2.00 0.0000 0 1 .0000 0.0000
70.0000 75.0000 7.50 94.00 1.0798 14 47 .2979 0.9756
75.0000 80.0000 -40.20 754.00 0.9467 105 377 .2785 0.9122
80.0000 85.0000 -44.40 2490.00 0.9822 416 1245 .3341 1.0943
85.0000 90.0000 -168.20 1806.00 0.9069 286 903 .3167 1.0373
90.0000 95.0000 -28.90 580.00 0.9502 81 290 .2793 0.9148
95.0000 100.0000 1.10 148.00 1.0074 25 74 .3378 1.1064
100.0000 105.0000 6.70 32.00 1.2094 6 16 .3750 1.2282
105.0000 110.0000 6.60 4.00 2.6500 2 2 1.0000 3.2751
110.0000 115.0000 -2.00 2.00 0.0000 0 1 .0000 0.0000
115.0000 120.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
120.0000 125.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
125.0000 130.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
130.0000 9999.0000 0.00 0.00 0.0000 0 0 .0000 0.0000
Ending BankRoll: $56.90
Starting BankRoll: $300.00
High BankRoll: $330.40
Low BankRoll: $56.90
Longest Losing Streak: 23.00
Bet Percentage: 0.0175
Max Bet: 999999999.00
PScore_HDW is based on a number of inputs created from HDW data - including speed and pace figs,
Form, PSR, JPR, Field Size, Race Volatility, and the user's UPR (or User Defined Power Rating.)
For some "ideas" PScore_HDW can be really useful. For other "ideas" not so much. In my opinion,
it depends largely on the factor mix of the user's UPR along with current public betting trends.
The above factor breakout for the above query results shows a significant drop for win rate and roi when PScore_HDW is below 70.
After adding a factor constraint of "AND PSCORE >= 70" (without the quotes) this is what the revised query results look like:
query start: 9/7/2020 10:21:21 AM
query end: 9/7/2020 10:21:48 AM
elapsed time: 27 seconds
Data Window Settings:
Connected to: C:\JCapper\exe\JCapper2.mdb
999 Divisor Odds Cap: None
SQL UDM Plays Report: Hide
SQL: SELECT * FROM STARTERHISTORY
WHERE RANKF17=1
AND RANKF23=1
AND RANKMLINE <= 4
AND RANKF06 <= 5
AND NOT RANKF01=1
AND PSCORE >= 70
AND FIELDSIZE >= 7
AND [DATE] >= #01-01-2020#
AND [DATE] <= #09-06-2020#
ORDER BY [DATE], TRACK, RACE
Data Summary Win Place Show
-----------------------------------------------------
Mutuel Totals 5648.20 5434.70 5575.50
Bet -5910.00 -5910.00 -5910.00
-----------------------------------------------------
P/L -261.80 -475.30 -334.50
Wins 935 1554 2015
Plays 2955 2955 2955
PCT .3164 .5259 .6819
ROI 0.9557 0.9196 0.9434
Avg Mut 6.04 3.50 2.77
Ending BankRoll: $56.80
Starting BankRoll: $300.00
High BankRoll: $330.40
Low BankRoll: $56.80
Longest Losing Streak: 21.00
Bet Percentage: 0.0175
Max Bet: 999999999.00
Combining both UDMs into a single SQL Expression
Combining both UDMs into a single sql expression allows both UDMs to be tested in the JCapper Data Window.
The basic structure for combining two sql expressions (call them A and B) into a single sql expression looks like this:
SELECT * FROM STARTERHISTORY
WHERE ((A)
OR (B))
Note that in the sql programming language:
- Placement of parentheses characters (such as those in the above sql expression) is crucial.
- You can enclose multiple lines of sql inside of parentheses characters.
- Everything inside of parentheses characters gets evaluated as a single expression.
For further info about combining multiple ideas into a single sql expression, see the following thread on the JCapper Message Board:
Combining SQL UDMs
Instructions for working the factor pairings from our two UDMs into the above sql expression:
- Let A be equal to the factor pairing sql from the First UDM.
- Using substitution, insert the factor pairing sql from the First UDM into the above sql expression.
- Let B be equal to the factor pairing sql from the Second UDM.
- Using substitution, insert the factor pairing sql from the Second UDM into the above sql expression.
After doing that for the First UDM, our new sql expression looks like this:
SELECT * FROM STARTERHISTORY
WHERE ((RANKF01=1
and rankf02 <= CLng(Fieldsize/5))
OR (B))
And after doing that for the Second UDM, the new sql expression now looks like this:
SELECT * FROM STARTERHISTORY
WHERE ((RANKF01=1
and rankf02 <= CLng(Fieldsize/5))
OR (RANKF17=1
AND RANKF23=1
AND RANKMLINE <= 4
AND RANKF06 <= 5
AND NOT RANKF01=1
AND PSCORE >= 70))
To complete the new sql expression just add Field Size and Date Range constraints like this:
SELECT * FROM STARTERHISTORY
WHERE ((RANKF01=1
and rankf02 <= CLng(Fieldsize/5))
OR (RANKF17=1
AND RANKF23=1
AND RANKMLINE <= 4
AND RANKF06 <= 5
AND NOT RANKF01=1
AND PSCORE >= 70))
AND FIELDSIZE >= 7
AND [DATE] >= #01-01-2020#
AND [DATE] <= #09-06-2020#
ORDER BY [DATE], TRACK, RACE
That's it!
At this point, by executing the above sql expression in the Data Window, we can test both UDMs at the same time.
This is what the query results for both UDMs looks like with the data further broken out by MLOR3 and eUPRZScoreProb:
query start: 9/8/2020 3:22:00 PM
query end: 9/8/2020 3:22:03 PM
elapsed time: 3 seconds
Data Window Settings:
Connected to: C:\JCapper\exe\JCapper2.mdb
999 Divisor Odds Cap: None
SQL UDM Plays Report: Hide
SQL: SELECT * FROM STARTERHISTORY
WHERE ((RANKF01=1
and rankf02 <= CLng(Fieldsize/5))
OR (RANKF17=1
AND RANKF23=1
AND RANKMLINE <= 4
AND RANKF06 <= 5
AND NOT RANKF01=1
AND PSCORE >= 70))
AND FIELDSIZE >= 7
AND [DATE] >= #01-01-2020#
AND [DATE] <= #09-06-2020#
ORDER BY [DATE], TRACK, RACE
Data Summary Win Place Show
-----------------------------------------------------
Mutuel Totals 12717.60 11580.40 11558.50
Bet -12574.00 -12574.00 -12574.00
-----------------------------------------------------
P/L 143.60 -993.60 -1015.50
Wins 1598 2727 3614
Plays 6287 6287 6287
PCT .2542 .4338 .5748
ROI 1.0114 0.9210 0.9192
Avg Mut 7.96 4.25 3.20
By: MLOR3
>=Min < Max P/L Bet Roi Wins Plays Pct Impact
--------------------------------------------------------------------------------------
-999.0000 0.7500 -274.70 7326.00 0.9625 852 3663 .2326 0.9151
0.7500 0.7750 -34.90 252.00 0.8615 36 126 .2857 1.1241
0.7750 0.8000 19.40 270.00 1.0719 44 135 .3259 1.2823
0.8000 0.8250 -46.90 246.00 0.8093 33 123 .2683 1.0555
0.8250 0.8500 -64.70 292.00 0.7784 41 146 .2808 1.1048
0.8500 0.8750 61.80 254.00 1.2433 46 127 .3622 1.4250
0.8750 0.9000 -36.40 222.00 0.8360 32 111 .2883 1.1342
0.9000 0.9250 51.60 196.00 1.2633 36 98 .3673 1.4453
0.9250 0.9500 -37.30 200.00 0.8135 27 100 .2700 1.0623
0.9500 0.9750 -14.00 190.00 0.9263 19 95 .2000 0.7869
0.9750 1.0000 41.70 184.00 1.2266 30 92 .3261 1.2829
1.0000 1.0250 -6.60 208.00 0.9683 30 104 .2885 1.1349
1.0250 1.0500 -32.00 120.00 0.7333 13 60 .2167 0.8524
1.0500 1.0750 -17.80 128.00 0.8609 21 64 .3281 1.2909
1.0750 1.1000 -71.10 154.00 0.5383 15 77 .1948 0.7664
1.1000 1.1250 34.00 96.00 1.3542 15 48 .3125 1.2295
1.1250 1.1500 -33.60 116.00 0.7103 15 58 .2586 1.0175
1.1500 1.1750 163.00 114.00 2.4298 19 57 .3333 1.3114
1.1750 1.2000 -6.60 150.00 0.9560 16 75 .2133 0.8393
1.2000 9999.0000 448.70 1856.00 1.2418 258 928 .2780 1.0938
By: eUPRZScoreProb
>=Min < Max P/L Bet Roi Wins Plays Pct Impact
--------------------------------------------------------------------------------------
-999.0000 0.7500 -436.00 6820.00 0.9361 1060 3410 .3109 1.2230
0.7500 0.7750 -0.10 294.00 0.9997 42 147 .2857 1.1241
0.7750 0.8000 71.80 240.00 1.2992 35 120 .2917 1.1475
0.8000 0.8250 -2.50 198.00 0.9874 28 99 .2828 1.1127
0.8250 0.8500 7.20 232.00 1.0310 30 116 .2586 1.0175
0.8500 0.8750 -62.40 198.00 0.6848 20 99 .2020 0.7948
0.8750 0.9000 -19.20 210.00 0.9086 24 105 .2286 0.8993
0.9000 0.9250 12.40 164.00 1.0756 19 82 .2317 0.9116
0.9250 0.9500 7.10 180.00 1.0394 22 90 .2444 0.9617
0.9500 0.9750 47.30 192.00 1.2464 26 96 .2708 1.0655
0.9750 1.0000 39.00 172.00 1.2267 22 86 .2558 1.0064
1.0000 1.0250 24.20 140.00 1.1729 16 70 .2286 0.8993
1.0250 1.0500 -0.50 164.00 0.9970 20 82 .2439 0.9596
1.0500 1.0750 -18.10 156.00 0.8840 17 78 .2179 0.8575
1.0750 1.1000 42.60 146.00 1.2918 18 73 .2466 0.9701
1.1000 1.1250 -37.00 116.00 0.6810 5 58 .0862 0.3392
1.1250 1.1500 -46.50 122.00 0.6189 7 61 .1148 0.4515
1.1500 1.1750 -44.40 118.00 0.6237 10 59 .1695 0.6668
1.1750 1.2000 46.20 124.00 1.3726 16 62 .2581 1.0153
1.2000 9999.0000 512.50 2588.00 1.1980 161 1294 .1244 0.4895
Ending BankRoll: $56.95
Starting BankRoll: $300.00
High BankRoll: $393.40
Low BankRoll: $56.95
Longest Losing Streak: 24.00
Bet Percentage: 0.0175
Max Bet: 999999999.00
SUMMARY
Looking at the above query results I see several possibilities. In this section I'll summarize each possibility and add any thoughts that come to mind.
Betting the First UDM:
Flat win betting the First UDM without a rebate:
Data Summary Win
----------------------------
Mutuel Totals 7069.40
Rebate 0.00
----------------------------
Subtotal 7069.40
Amount Wagered -6664.00
----------------------------
P/L 405.40
Wins 663
Plays 3332
PCT .1990
ROI 1.0608
Avg Mut 10.66
Longest Losing Streak: 23.00
Flat win betting the First UDM with a 5 percent rebate:
Data Summary Win
----------------------------
Mutuel Totals 7069.40
Rebate 333.20
----------------------------
Subtotal 7402.60
Amount Wagered -6664.00
----------------------------
P/L 738.60
Wins 663
Plays 3332
PCT .1990
ROI 1.1108
Avg Mut 10.66
Longest Losing Streak: 23.00
Win betting the First UDM without a rebate and an MLOR3 cutoff of 0.85 for play or pass decision making:
Data Summary Win
----------------------------
Mutuel Totals 3006.00
Rebate 0.00
----------------------------
Subtotal 3006.00
Amount Wagered -2368.00
----------------------------
P/L 638.00
Wins 287
Plays 1184
PCT .2424
ROI 1.2694
Avg Mut 10.47
Longest Losing Streak: 21.00
Win betting the First UDM with a 5 percent rebate and an MLOR3 cutoff of 0.85 for play or pass decision making:
Data Summary Win
----------------------------
Mutuel Totals 3006.00
Rebate 118.40
----------------------------
Subtotal 3124.40
Amount Wagered -2368.00
----------------------------
P/L 756.40
Wins 287
Plays 1184
PCT .2424
ROI 1.3194
Avg Mut 10.47
Longest Losing Streak: 21.00
If I were betting the First UDM:
- My choice would be doing so with a healthy rebate.
- There is a value ratio price point in the data that maximizes total return.
- The lower the rebate the higher the min required value ratio cutoff.
- The higher the rebate the lower the min required value ratio cutoff.
- I'd forward test the data and make incremental adjustments to my value ratio cutoffs as data for fresh races beomes available.
- My objective would be to zero in on the value ratio price point that maximizes total return given the rebate.
Two Horse Win Betting - both UDMs combined:
Flat win betting both UDMs without a rebate:
Data Summary Win
----------------------------
Mutuel Totals 12717.60
Rebate 0.00
----------------------------
Subtotal 12717.60
Amount Wagered -12576.00
----------------------------
P/L 141.60
Wins 1598
Plays 6288
PCT .2541
ROI 1.0113
Avg Mut 7.96
Longest Losing Streak: 24.00
Flat win betting both UDMs with a 5 percent rebate:
Data Summary Win
----------------------------
Mutuel Totals 12717.60
Rebate 637.80
----------------------------
Subtotal 13355.40
Amount Wagered -12576.00
----------------------------
P/L 779.40
Wins 1598
Plays 6288
PCT .2541
ROI 1.0620
Avg Mut 7.96
Longest Losing Streak: 24.00
Win betting both UDMs without a rebate and an MLOR3 cutoff of 1.10 for play or pass decision making:
Data Summary Win
----------------------------
Mutuel Totals 2937.50
Rebate 0.00
----------------------------
Subtotal 2937.50
Amount Wagered -2332.00
----------------------------
P/L 605.50
Wins 323
Plays 1166
PCT .2770
ROI 1.2596
Avg Mut 9.09
Longest Losing Streak: 17.00
Win betting both UDMs with a 5 percent rebate and an MLOR3 cutoff of 1.10 for play or pass decision making:
Data Summary Win
----------------------------
Mutuel Totals 2937.50
Rebate 116.60
----------------------------
Subtotal 3054.10
Amount Wagered -2332.00
----------------------------
P/L 722.10
Wins 323
Plays 1166
PCT .2770
ROI 1.3096
Avg Mut 9.09
Longest Losing Streak: 17.00
If I were betting both UDMs combined:
- My choice would be doing so with a healthy rebate.
- There is a value ratio price point in the data that maximizes total return.
- The lower the rebate the higher the min required value ratio cutoff.
- The higher the rebate the lower the min required value ratio cutoff.
- I'd forward test the data and make incremental adjustments to my value ratio cutoffs as data for fresh races beomes available.
- My objective would be to zero in on the value ratio price point that maximizes total return given the rebate.
Notes and Final Thoughts:
The above query results were generated from a JCapper Platinum database using HDW data for every thoroughbred race that was run in the US and Canada from 01-01-2020 through 09-06-2020.
The above query results reflect what actually happened.
That said, the above query results are driven in part by public betting trends that existed between 01-01-2020 and 09-06-2020.
Keep in mind that public betting trends in thoroughbred horse racing do have a tendency to change over time.
Also keep in mind that the above query results came from a JCapper database using HDW data. I have no idea what query results from identical sql expressions and value ratio data breakouts would look like had they been generated by JCapper from Brisnet data.
The type of UDMs I used for this article will have you passing a lot of races.
The date ranges of the sql expressions in this article are from 01-01-2020 to 09-06-2020 inclusive.
There are 19,883 thoroughbred races in my database during that timespan.
The first UDM by itself produced 3,332 plays. The second UDM by itself produced 2,955 plays.
Between 01-01-2020 and 09-06-2020 both UDMs combined produced a total of 6,288 plays. That means both UDMs combined produced a potential play in just under 32 percent of the available races.
Put another way: Using the UDMs presented in this article, two thirds of the time the race in front of you will not have a potential play. In which case you should pass the race.
There will be times when the race in front of you will have a potential play generated by the first UDM only. In which case you should use a value cutoff based on your own r&d or record keeping for that situation only.
There will be times when the race in front of you will have a potential play generated by the second UDM only. In which case you should pass unless you've discovered a value cuttoff based on your own r&d or record keeping for that situation only.
There will also be times when the race in front of you will have a potential plays generated by both UDMs combined. In which case you should use a value cutoff based on your own r&d or record keeping for that situation only.
Of the possibilities recapped in the Summary section above: Flat win betting both UDMs with a 5 percent rebate generated the highest total return.
Imo, this is no accident. Of the possibilities recapped in the Summary section above: Flat win betting both UDMs with a 5 percent rebate most closely mimics the way the whale computer teams operate. They maximize total return by leveraging rebates to the fullest extent possible. Had I used a 7 percent rebate instead of five, the difference between Flat win betting both UDMs with a rebate and any other strategy would have stuck out even more.
I hope I managed to type most of that out in a way that makes sense,
-jp
.
No write up like this is complete without the following disclaimer:
No Guaranty of Future Results
Tabulations of past results are just that: reporting of past results. There can be no assurance that future positive financial results will be achieved.
Actual results could differ materially from past results, forecasts, estimates and summary information presented on the JCapper website and in the JCapper Software.
|