Dies ist eine Fortsetzung des vorherigen Beitrags [Python & SQLite] Ich habe versucht, den erwarteten Wert eines Rennens mit Pferden im 1x-Gewinnbereich zu analysieren (. Letztes Mal habe ich die Daten in SQL zusammengefasst und den erwarteten Gewinnwert mit Python (Jupiter Notebook) berechnet.
Das Thema des letzten Males lautet "Wie kaufe ich ein Rennen, bei dem Pferde mit 1x Siegen laufen".
Ich konnte keinen Weg finden, ein Gewinn-Wettschein zu kaufen, das den erwarteten Wert von 100 überschreitet, weil ich es berechnet habe, ohne die Bedingungen wie Rennstrecke und Distanz einzugrenzen. Lassen Sie uns diesmal die Rennstrecke, die Entfernung, den Rasen / Schmutz und den Ticket-Typ eingrenzen und detailliert analysieren.
Dieses Mal werde ich die Ergebnisse mit dem Schwerpunkt "Tokyo Racecourse" schreiben. Andere Rennstrecken sind in Ordnung, aber ich habe mich für die Tokyo Racecourse entschieden, weil es sich um eine historische Rennstrecke handelt und ich denke, dass es für starke Pferde einfach ist, ihre Fähigkeiten unter Beweis zu stellen.
Zusätzlich wird der Ticket-Typ von Maren analysiert (gewinnen, wenn zwei der ersten oder zweiten Plätze enthalten sind). Wie Sie im vorherigen Beitrag sehen können, haben die beliebtesten Gewinne im 1x-Gewinnbereich eine Gewinnchance von fast 50%. Wir stellten die Hypothese auf, dass Maren ein gutes Gleichgewicht zwischen Leichtigkeit und guten Dividenden hat. (Es gibt auch einen Grund, warum es Geräusche von Pferden geben kann, die im Triple-System nicht beliebt sind.)
TokyoRacecource
#Shiba Kurs Suche nach leckeren Wettkarten bei Maren
#Finden Sie die Solidaritätsrate der beliebtesten Pferde mit einem Gewinn von 1x heraus
cur.execute("SELECT i.distance, count(r.race_id) FROM race_result r \
INNER JOIN race_info i on r.race_id=i.id \
WHERE r.odds<2.0 AND r.order_of_finish IN ('1','2') AND i.surface like 'Shiba%' AND i.place_detail like '%Tokio%' \
AND r.race_id IN (SELECT race_id from race_result WHERE odds<2.0 AND popularity='1') \
GROUP BY i.distance ORDER BY i.distance")
rows = cur.fetchall()
print('Anzahl der Solidarität(Shiba)')
for row in rows:
print(row)
cur.execute("SELECT i.distance, count(r.race_id) FROM race_result r \
INNER JOIN race_info i on r.race_id=i.id \
WHERE r.odds<2.0 AND r.order_of_finish NOT IN ('1', '2') AND i.surface like 'Shiba%' AND i.place_detail like '%Tokio%'\
AND r.race_id IN (SELECT race_id from race_result WHERE odds<2.0 AND popularity='1') \
GROUP BY i.distance ORDER BY i.distance")
rows2 = cur.fetchall()
print('Anzahl 3 oder weniger(Shiba)')
for row2 in rows2:
print(row2)
rentai1800 = round(rows[2][1] / (rows[2][1] + rows2[2][1]) * 100, 2)
print('1800m Solidaritätsrate: %f Prozent' %rentai1800)
rentai2000 = round(rows[3][1] / (rows[3][1] + rows2[3][1]) * 100, 2)
print('2000m Solidaritätsrate: %f Prozent' %rentai2000)
----------Ergebnis----------
Anzahl der Solidarität(Shiba)
(1400, 66)
(1600, 89)
(1800, 90)
(2000, 84)
(2300, 2)
(2400, 40)
(3400, 1)
Anzahl 3 oder weniger(Shiba)
(1400, 31)
(1600, 59)
(1800, 38)
(2000, 31)
(2300, 2)
(2400, 22)
1800m Solidaritätsrate: 70.310000 Prozent
2000m Solidaritätsrate: 73.040000%
Die Ergebnisse von 1800 m und 2000 m sind besonders gut. Die 2400 m, auf denen das Japan Derby, die Oaks und der Japan Cup stattfinden, sind mit etwa 64% empfindlich.
Lassen Sie uns tiefer in die Bedingungen des 2000 m hohen Rasens eintauchen, der die höchste Solidaritätsrate aufweist.
Ein weiteres Solidaritätspferd
#Versuchen Sie, auf 2000 m zu drücken
#1 Eine weitere Popularität, wenn Popularität Solidarität ist
cur.execute("SELECT r.popularity, count(r.race_id) FROM race_result r \
INNER JOIN race_info i on r.race_id=i.id \
WHERE r.order_of_finish IN ('1','2') AND r.popularity != '1' \
AND r.race_id IN (SELECT race_id from race_result r INNER JOIN race_info i on r.race_id=i.id WHERE odds<2.0 AND popularity='1' \
AND order_of_finish IN ('1','2') AND i.surface like 'Shiba%' AND i.place_detail like '%Tokio%' AND i.distance=2000) \
GROUP BY r.popularity ORDER BY r.popularity")
rows = cur.fetchall()
print('(Beliebt,Anzahl)')
for row in rows:
print(row)
----------Ergebnis----------
(Beliebt,Anzahl)
(2, 21)
(3, 31)
(4, 12)
(5, 6)
(6, 7)
(7, 4)
(8, 2)
(11, 1)
Überraschenderweise gab es mehr Solidaritäten der 1. und 3. Popularität als Solidarität der 1. und 2. Popularität. Ist es das Ergebnis anderer Pferde, die das zweitbeliebteste markieren, das wahrscheinlich sogar ein wenig gewinnt, und nicht das beliebteste?
Übrigens, [wenn das beliebteste Pferd mit einem Sieg von 1x keine Solidarität war] und [die Anzahl der Solidaritäten war am größten] auch das drittbeliebteste. Ob die beliebtesten Gewinne oder Moos, der Kauf von den zweitmeisten scheint weniger interessant zu sein.
4cornerPosition
cur.execute("SELECT substr(r.pass, -2), count(r.race_id) FROM race_result r \
INNER JOIN race_info i on r.race_id=i.id \
WHERE r.order_of_finish IN ('1','2') AND r.popularity != '1' \
AND r.race_id IN (SELECT race_id from race_result r INNER JOIN race_info i on r.race_id=i.id WHERE odds<2.0 AND popularity='1' \
AND order_of_finish IN ('1','2') AND i.surface like 'Shiba%' AND i.place_detail like '%Tokio%' AND i.distance=2000) \
GROUP BY substr(r.pass, -2) ORDER BY substr(r.pass, -2)")
rows = cur.fetchall()
print('(Anzahl,Anzahl)')
for row in rows:
print(row)
----------Ergebnis----------
(Anzahl,Anzahl)
('-1', 14)
('-2', 15)
('-3', 14)
('-4', 4)
('-5', 10)
('-6', 6)
('-7', 4)
('-8', 4)
('-9', 2)
('10', 3)
('11', 3)
('12', 2)
('13', 3)
Am letzten geraden Eingang scheinen Pferde, die auf dem 5. Platz waren, solidarisch zu sein. Es ist möglich, dass dies daran liegt, dass das Pferd mit dem Vorderbein klebrig ist und dass es in erster Linie freie Kapazität gab, es vorne liegt.
Ein beliebtes Pferd mit einem Sieg von 1x läuft in Tokyo Shiba 2000 m, und wenn das drittbeliebteste Pferd das führende Bein ist, scheint der erwartete Wert hoch zu sein. Es erinnert mich an den Emperor's Award Herbst 2019 ...!
Von hier aus werden wir drei Tabellen verwenden, die von Netkeiba-Scraper erhalten wurden. Aus diesem Grund habe ich beschlossen, [die Bedingungen durch Verschachteln von Unterabfragen einzugrenzen].
Zuallererst ist es der erwartete Wert beim Kauf der [1. beliebtesten-2. beliebtesten] Maren, die einen niedrigen erwarteten Wert zu haben scheint.
1-2 Beliebte Maren Erwarteter Wert
# race_Ergebnis Rennen_ID und Auszahlungsrennen_Berechnen Sie den erwarteten Wert, indem Sie die ID zuordnen
# ticket_Geben Sie win 0 ein,Doppelsieg 1,Rahmen Ren 2,Maren 3,Breit 4,Pferdesingle 5,Triple 6,Triple Single 7
#Unter Verwendung von doppelten Unterabfragen werden die aufeinanderfolgenden Rückerstattungen des Pferdes für [das Rennen, bei dem ein Pferd solidarisch war] und [das Rennen, bei dem das andere Pferd das zweitbeliebteste war] summiert.
cur.execute("SELECT DISTINCT p.race_id, p.payoff FROM payoff p \
INNER JOIN race_result r ON p.race_id=r.race_id INNER JOIN race_info i on p.race_id=i.id \
WHERE p.ticket_type=3 AND p.race_id IN \
(SELECT r.race_id FROM race_result r \
INNER JOIN race_info i on r.race_id=i.id \
WHERE r.order_of_finish IN ('1','2') AND r.popularity='2' \
AND r.race_id IN (SELECT race_id from race_result r INNER JOIN race_info i on r.race_id=i.id \
WHERE odds<2.0 AND popularity='1' AND order_of_finish IN ('1','2') AND i.surface like 'Shiba%' \
AND i.place_detail like '%Tokio%' AND i.distance=2000))")
rows = cur.fetchall()
umaren_sum = 0
for row in rows:
umaren_sum += row[1]
#Finden Sie heraus, wie viele Rennen Pferde im 1x gewinnen
cur.execute("SELECT count(race_id) from race_result r INNER JOIN race_info i on r.race_id=i.id \
WHERE odds<2.0 AND popularity='1' AND i.surface like 'Shiba%' AND i.place_detail like '%Tokio%' \
AND i.distance=2000")
rows2 = cur.fetchall()
print('Die Gesamtzahl der Pferde in einem Rennen, in dem Pferde im 1x gewinnen:')
print(umaren_sum)
print('Die Anzahl der Rennen, bei denen Pferde mit einem Sieg von 1x in den Tokyo Shiba 2000m kamen:')
print(rows2[0][0])
print('Maren erwarteter Wert')
print(round(umaren_sum / rows2[0][0], 2))
-----Ergebnis-----
Die Gesamtzahl der Pferde in einem Rennen, in dem Pferde im 1x gewinnen:
6740.0
Die Anzahl der Rennen, bei denen Pferde mit einem Sieg von 1x in den Tokyo Shiba 2000m kamen:
115
Maren erwarteter Wert
58.61
Immerhin ist es niedrig. Es macht keinen Sinn, ein anderes beliebtes Pferd zu kaufen, da eines stark zu sein scheint. In diesem Fall ist es besser, den beliebtesten Gewinn zu kaufen.
Als nächstes ist es der erwartete Wert beim Kauf der [1. beliebtesten-3. beliebtesten] Maren, von dem erwartet werden kann, dass er den höchsten erwarteten Wert hat.
1-3 Beliebter Maren Erwarteter Wert
# race_Ergebnis Rennen_ID und Auszahlungsrennen_Berechnen Sie den erwarteten Wert, indem Sie die ID zuordnen
# ticket_Geben Sie win 0 ein,Doppelsieg 1,Rahmen Ren 2,Maren 3,Breit 4,Pferdesingle 5,Triple 6,Triple Single 7
#Unter Verwendung doppelter Unterabfragen werden die aufeinanderfolgenden Rückerstattungen des Pferdes für [das Rennen, bei dem ein Pferd solidarisch war] und [das Rennen, bei dem ein anderes Pferd das drittbeliebteste war] summiert.
cur.execute("SELECT DISTINCT p.race_id, p.payoff FROM payoff p \
INNER JOIN race_result r ON p.race_id=r.race_id INNER JOIN race_info i on p.race_id=i.id \
WHERE p.ticket_type=3 AND p.race_id IN \
(SELECT r.race_id FROM race_result r \
INNER JOIN race_info i on r.race_id=i.id \
WHERE r.order_of_finish IN ('1','2') AND r.popularity='3' \
AND r.race_id IN (SELECT race_id from race_result r INNER JOIN race_info i on r.race_id=i.id \
WHERE odds<2.0 AND popularity='1' AND order_of_finish IN ('1','2') AND i.surface like 'Shiba%' \
AND i.place_detail like '%Tokio%' AND i.distance=2000))")
rows = cur.fetchall()
umaren_sum = 0
for row in rows:
umaren_sum += row[1]
#Finden Sie heraus, wie viele Rennen Pferde im 1x gewinnen
cur.execute("SELECT count(race_id) from race_result r INNER JOIN race_info i on r.race_id=i.id \
WHERE odds<2.0 AND popularity='1' AND i.surface like 'Shiba%' AND i.place_detail like '%Tokio%' \
AND i.distance=2000")
rows2 = cur.fetchall()
print('Die Gesamtzahl der Pferde in einem Rennen, in dem Pferde im 1x gewinnen:')
print(umaren_sum)
print('Die Anzahl der Rennen, bei denen Pferde mit einem Sieg von 1x in den Tokyo Shiba 2000m kamen:')
print(rows2[0][0])
print('Maren erwarteter Wert')
print(round(umaren_sum / rows2[0][0], 2))
-----Ergebnis-----
Die Gesamtzahl der Pferde in einem Rennen, in dem Pferde im 1x gewinnen:
18460.0
Die Anzahl der Rennen, bei denen Pferde mit einem Sieg von 1x in den Tokyo Shiba 2000m kamen:
115
Maren erwarteter Wert
160.52
Der erwartete Wert hat endlich 100 überschritten! Wenn Sie diese Daten kennen würden, hätten Sie [Almond Eye und Danon Premium Maren] im Herbst des Emperor's Award 2019 gekauft.
Für alle Fälle werfen wir einen Blick auf den erwarteten Wert beim Kauf der [1. beliebtesten - 4. beliebtesten] Maren.
1-4 Beliebter Maren Erwarteter Wert
# race_Ergebnis Rennen_ID und Auszahlungsrennen_Berechnen Sie den erwarteten Wert, indem Sie die ID zuordnen
# ticket_Geben Sie win 0 ein,Doppelsieg 1,Rahmen Ren 2,Maren 3,Breit 4,Pferdesingle 5,Triple 6,Triple Single 7
#Unter Verwendung von doppelten Unterabfragen werden die aufeinanderfolgenden Rückerstattungen des Pferdes für [das Rennen, bei dem ein Pferd solidarisch war] und [das Rennen, bei dem ein anderes Pferd das viertbeliebteste war] summiert.
cur.execute("SELECT DISTINCT p.race_id, p.payoff FROM payoff p \
INNER JOIN race_result r ON p.race_id=r.race_id INNER JOIN race_info i on p.race_id=i.id \
WHERE p.ticket_type=3 AND p.race_id IN \
(SELECT r.race_id FROM race_result r \
INNER JOIN race_info i on r.race_id=i.id \
WHERE r.order_of_finish IN ('1','2') AND r.popularity='4' \
AND r.race_id IN (SELECT race_id from race_result r INNER JOIN race_info i on r.race_id=i.id \
WHERE odds<2.0 AND popularity='1' AND order_of_finish IN ('1','2') AND i.surface like 'Shiba%' \
AND i.place_detail like '%Tokio%' AND i.distance=2000))")
rows = cur.fetchall()
umaren_sum = 0
for row in rows:
umaren_sum += row[1]
#Finden Sie heraus, wie viele Rennen 1x Pferde gelaufen sind
cur.execute("SELECT count(race_id) from race_result r INNER JOIN race_info i on r.race_id=i.id \
WHERE odds<2.0 AND popularity='1' AND i.surface like 'Shiba%' AND i.place_detail like '%Tokio%' \
AND i.distance=2000")
rows2 = cur.fetchall()
print('Die Gesamtzahl der Pferde in einem Rennen, in dem Pferde im 1x gewinnen:')
print(umaren_sum)
print('Die Anzahl der Rennen, bei denen Pferde mit einem Sieg von 1x in den Tokyo Shiba 2000m kamen:')
print(rows2[0][0])
print('Maren erwarteter Wert')
print(round(umaren_sum / rows2[0][0], 2))
-----Ergebnis-----
Die Gesamtzahl der Pferde in einem Rennen, in dem Pferde im 1x gewinnen:
10030.0
Die Anzahl der Rennen, bei denen Pferde mit einem Sieg von 1x in den Tokyo Shiba 2000m kamen:
115
Maren erwarteter Wert
87.22
Obwohl dies 100 nicht überschreitet, wurde festgestellt, dass der erwartete Wert höher als [1-2 Popular Maren] ist.
Durch die Eingrenzung der Rennstrecken, Strecken und Ticketarten wurde die Erwartungswertberechnung vertieft. Ich gewöhne mich an den Umgang mit SQL. Wenn Sie die Bedingungen ändern, können Sie sie auf anderen Rennstrecken analysieren. Warum also nicht versuchen, den erwarteten Wert der Rennbahn in der Nähe Ihres Wohnortes zu berechnen?
Das nächste Ziel ist es, WIN5 zu gewinnen (ein Wettschein, der alle Siegerpferde in den 5 Rennen mit einer maximalen Dividende von Hunderten von Millionen Yen gewinnt)! Es wird schwieriger, weil es notwendig ist, das Reiten und Lesen der Entwicklung von Pferderennen zu analysieren, aber ich werde es versuchen!
Vielen Dank, dass Sie so weit gelesen haben.
Recommended Posts