Categories: 最新レース予想

「俺プロ」のスコアリングを活用した自動購入システムの作り方

以前からnetkeibaさんの「俺プロ」の人のスコアリングをしながら予想をやっていたのですがそろそろ即patで自動で購入するところまで作ってみました。

どのように作ったか

作り方的には以下のようにつくりました。

  1. 俺プロから良い予想家を取ってくる
    1. (良いの定義は、直近1年の回収率の中央値&平均値が100%を超えていて、前月の回収率が100%を超えている)
  2. 対象の予想家の人が予想を更新したら、その予想を取得する
    1. 予想の内容は自前のSlackとスプレットシートにも連携をする
  3. 取得した情報の買い目を取得して、その内容を即Patに設定して購入する
    1. 予想内容と対象のレースを俺プロから取得する(プログラムを書きます)
      1. import csv
        import datetime
        import itertools
        import os
        import re
        import sys
        from time import sleep
        from selenium import webdriver
        from selenium.webdriver.chrome.options import Options
        from selenium.webdriver.chrome.service import Service
        from selenium.webdriver.common.alert import Alert
        from selenium.webdriver.common.by import By
        from selenium.webdriver.support.select import Select
        from webdriver_manager.chrome import ChromeDriverManager

        # セッションを起動する
        options = Options()
        options.headless = True
        options.add_experimental_option(‘excludeSwitches’, [‘enable-logging’])
        driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

        # レース情報ページにアクセスする
        yoso_id = sys.argv[1]
        url = f”https://orepro.netkeiba.com/mydata/yoso_detail.html?id={yoso_id}”
        driver.get(url)

        # 購入情報テーブルの要素を取得する
        table_element = driver.find_element(By.CSS_SELECTOR, ‘#capture > section.YosoDetailArea01.YosoDetailArea01_mydata > div.YosoDetailTableWrap’)

        # 購入情報を格納するリストを初期化する
        bidder_list = []

        # 購入情報テーブルの各要素を処理する
        for element in table_element.get_attribute(‘innerHTML’).split():

        # 購入者の名前を取得する
        bidder_name_match = re.search(r”<th>(.*?)<span”, element)
        if bidder_name_match:
        bidder_name = bidder_name_match.group(1)
        bidder_info = [bidder_name]

        # 購入方式を取得する
        bidding_system_match = re.search(r’class=”BakenSystemTxt”>(.+?)</span></th>’, element)
        if bidding_system_match:
        bidding_system = bidding_system_match.group(1)
        bidder_info.append(bidding_system)

        # 購入金額を取得する
        price_matches = re.findall(r'<span>(\d+)</span>’, element)
        if price_matches:
        prices = [int(price) for price in price_matches]
        bidder_info += prices

        # 単勝・複勝・枠連・馬連・ワイド・馬単・3連複・3連単の購入金額を取得する
        win_match = re.search(r'<strong>([\d,]+)円</strong>’, element)
        place_match = re.search(r'<strong>各(\d+)円</strong>’, element)
        quinella_match = re.search(r'<strong>各([\d,]+)円</strong>’, element)

        if win_match:
        win_price = int(win_match.group(1).replace(“,”, “”))
        bidder_info.insert(0, win_price)
        bidder_list.append(bidder_info)

        if place_match:
        place_price = int(place_match.group(1))
        bidder_info.insert(0, place_price)
        bidder_list.append(bidder_info)

        if quinella_match:
        quinella_price = int(quinella_match.group(1).replace(“,”, “”))
        bidder_info.insert(0, quinella_price)
        bidder_list.append(bidder_info)

        print(bidder_list)

    2. 取得した予想を即Patに入力する部分はhttps://www.utsuboublog.com/entry/keiba-purchase-programの記事に詳しく書いてあるのでこれを少し書き換えると動きます。

現状の課題

  1. 対象になる人の馬券を全部買おうとすると結構お金がかかる
    1. しっかりと計算すればわかるが、マイナスが立て込むと数十万単位でマイナスに触れることがあるのである程度の資金力を持っておく必要がある。
  2. 締め切りギリギリに入力するためにチューニングが今後必要になる
    1. 1点買うのに数秒かかることがあるので点数が増えると数分かかってしまうので締め切りを超えてしまう可能性がある。
    2. その一方でオッズなどを考えると可能な限りギリギリに入力したい

 

ヤナシ社長(旧:生成系競馬予想)

競馬予想家 (経験20年)

データ関連企業の社長であり、学生時代にはアルゴリズムコンテストで世界3位に入賞したAI技術者。20年以上にわたり統計解析を競馬予想に応用してきた競馬予測家でもあります。生成系AIを駆使した客観的で革新的な競馬予想を提供し、「生成AI競走馬評価」などのコンテンツを通じて、競馬をより深く楽しめるようサポートしています。

専門分野: AIを使った競馬予想。生成AIを使ったコンテンツ作成
実績・資格:

主な活動実績 AI競馬マスターズ2023: 3位入賞 俺プロ: 馬将認定 参考成績(中央): https://yoso.netkeiba.com/?pid=yosoka_profile&id=562 参考成績(地方): https://yoso.netkeiba.com/nar/?pid=yosoka_profile&id=562

ヤナシ社長(旧:生成系競馬予想)

データ関連企業の社長であり、学生時代にはアルゴリズムコンテストで世界3位に入賞したAI技術者。20年以上にわたり統計解析を競馬予想に応用してきた競馬予測家でもあります。生成系AIを駆使した客観的で革新的な競馬予想を提供し、「生成AI競走馬評価」などのコンテンツを通じて、競馬をより深く楽しめるようサポートしています。

Recent Posts

ラッキークラウン、タッカーバレット!地方競馬激戦を回顧

白熱の地方競馬!盛岡・笠松・園…

2分 ago

ジャンタルマンタルに暗雲?!G1戦線の行方

ジャンタルマンタルに暗雲が立ち…

23分 ago

ウマ娘「ブエナビスタ」実装で熱狂!

ウマ娘にブエナビスタ実装!競馬…

24分 ago

笠松3R:ウインマグノリアが鮮やかに勝利!

笠松3R C14組、ウインマグ…

1時間 ago