競馬予想を生成AI(ChatGPT)プロンプトの作り方・やり方【有料版以上を無料公開】
「ChatGPTで競馬予想を最大化する!最新オッズと調教情報をリアルタイムで詳細分析する方法」
当サイトリンクフリーなので興味がありましたら、SNSなどにリンクをお願いいたします。
あくまで予想を楽しむプロンプトです
競馬予想を本気で当てに行くなら、もう「感覚」や「勘」だけでは限界です。プロでも悩む難解な展開や馬場読みを、今やAIがリアルタイムで解析できる時代が来ました。特に注目すべきは、ChatGPTを使った競馬予想の自動化と最適化です。
この記事では、「ChatGPTを活用して競馬の勝率を最大化する」ための方法に迫ります。キーワードは、最新オッズの自動取得と、調教・展開・枠順の多変量解析。これまで職人芸とされてきた競馬の予想工程を、誰でも使える形に置き換えるのが目標です。
本稿では、2種類のプロンプトをご紹介します。ひとつは、ChatGPTのWebアクセス機能を使ってリアルタイムで最新情報を自動収集し、買い目を生成するプロンプト。もうひとつは、詳細に条件を入力しながら手作業で正確に制御できる精密な指示型プロンプトです。前者は即時性と省力化を、後者は予測制度とカスタマイズ性を重視します。
たとえば、開催場・距離・馬場状態・騎手・調教の追切タイム・過去戦績などを自動でChatGPTが取得・構造化し、各馬の勝率や期待値を即座に出力。その情報をもとに、単勝・馬連・三連複といった買い目を最適化する。これは、もはや「一部の人の秘術」ではなく、ツール次第で誰もが再現可能な世界です。
ChatGPT競馬予想:全レース対応 汎用プロンプト
Web参照機能を使って最新のJRA競馬データをリアルタイムで取得し、
# 出走馬の能力評価・勝率推定・展開予想・期待値計算を自動で実行するAIです。
# 以下の変数に値を入力すれば、どのレースでも自動対応できるようにしてください。
# ==============================================================
# 【レース基本情報】※入力値を差し替えて任意のレースで使用可能
# ==============================================================
race_info = {
"開催日": "2025-08-17",
"開催場": "新潟", # 例: 中山, 阪神, 小倉など
"レース番号": "11R",
"レース名": "(ここにレース名を記載)", # 例: 関屋記念、天皇賞(秋)など
"距離": "芝1600m", # 例: 芝1200m, ダート1800mなど
"馬場状態": "Webで取得", # 良・稍重・重・不良のいずれか
"出走時刻": "Webで取得",
"出走頭数": "Webで取得"
}
# ==============================================================
# 【各出走馬データ構造】※Web参照で自動取得
# ==============================================================
# 全出走馬に対し、以下のデータを収集して構造化してください。
# 騎手や馬場適性なども任意の条件に対応できるようにしてください。
horse_data_template = {
"馬名": "(ここに馬名)",
"騎手": "(ここに騎手を記載)",
"調教師": "(Webから取得)",
"性齢": "(Webから取得)", # 例: 牡4, 牝3など
"斤量": "(Webから取得)", # 例: 56.0kg
"枠順": "(Webから取得)",
"過去レース成績": "(芝/ダート/距離別の戦績)", # 例: 芝1600 3-1-0-2
"上がり3F実績": "(平均ラップ or 上がり最速数)",
"調教評価": "(CW/坂路などの時計+動き)",
"馬場適性": "(重馬場○など)",
"展開脚質": "(逃げ/先行/差し/追込)",
"オッズ": "(最新オッズ Web取得)",
"人気": "(現在の人気順位)",
"異常オッズ": "(あれば検出、なければ「なし」)"
}
# ==============================================================
# 【展開とペース予測】
# ==============================================================
def predict_race_pace(horse_data_list):
# 全馬の脚質を元にペースを判定(逃げ馬の数・先行の多寡)
# スロー/平均/ハイペースのいずれかを返す
return {
"予想ペース": "ハイペース", # 自動判定
"展開有利": "差し~追込", # ペースにより変化
"展開不利": "逃げ", # 例として出力
}
# ==============================================================
# 【スコアリングと勝率・期待値計算】
# ==============================================================
# 任意レースに対応できるよう、スコア計算式は汎用加重平均方式とする
def calculate_scores(horse_data_list):
for horse in horse_data_list:
horse["スコア"] = (
ability_index(horse) * 0.3 +
jockey_index(horse) * 0.15 +
training_index(horse) * 0.15 +
track_fit_index(horse) * 0.1 +
pace_suitability(horse) * 0.1 +
odds_value_index(horse) * 0.1 +
bias_advantage_index(horse) * 0.1
)
horse["予測勝率"] = convert_to_probability(horse["スコア"], horse_data_list)
horse["期待値"] = horse["予測勝率"] * float(horse["オッズ"])
# 各馬のスコア・勝率・期待値をリスト化し、買い目判定に使用
# ==============================================================
# 【買い目提案】(単勝/馬連/三連複)
# ==============================================================
def generate_bets(horse_data_list):
# 単勝:勝率トップの馬
# 馬連:勝率トップ3馬の組み合わせ
# 三連複:期待値が1.0を超える3頭のボックス
return {
"単勝": [(horse_data_list[0]["馬名"], horse_data_list[0]["期待値"])],
"馬連": [
(horse_data_list[0]["馬名"], horse_data_list[1]["馬名"]),
(horse_data_list[0]["馬名"], horse_data_list[2]["馬名"]),
(horse_data_list[1]["馬名"], horse_data_list[2]["馬名"]),
],
"三連複": [
(horse_data_list[0]["馬名"], horse_data_list[1]["馬名"], horse_data_list[2]["馬名"])
]
}
# ==============================================================
# 【出力指示】
# ==============================================================
# Webで取得した情報と計算結果を、以下の形式で出力してください:
# ・すべて記号や強調を使わず、整ったテキスト出力
# ・勝率や期待値は%や小数で示す
# ・根拠付きで予想を簡潔に説明
# ・Web未取得データは「未取得」と明記
# ==============================================================
# 【処理開始】
# ==============================================================
# Webから最新データを取得 → 展開・馬場解析 → スコア計算 → 買い目提案 → 出力
# 上記を全自動で実行してください。対象レースは race_info をもとに読み取ってください。
このプロンプトの特長
- 「ここにレース名」「ここに騎手」など自由に書き換え可能な構造
- 枠順、騎手、調教、ラップ、展開、馬場、オッズなど多要素統合型
- Web参照を前提に「未取得時の処理」も考慮済み
- どのレースでもそのまま使える完全汎用テンプレート
又は
以下の競馬レースについて、該当するすべての関連情報をインターネットから自動収集し、統計的・傾向的・過去実績に基づく精密な予想を行ってください。
レース名・開催日・開催地は後から入力される変数とします。
【対象レース情報】
レース名:〔レース名をここに記入〕
開催日:〔開催日をここに記入〕
開催場所:〔競馬場名をここに記入〕
※ユーザーが入れる情報はここまで、以下はGPTが情報を収集し回答する内容です
【収集・分析対象の詳細情報】
1. 馬ごとの基本情報
・馬名
・年齢
・性別
・所属厩舎(調教師)
・馬主・生産者
・血統(父・母・母父)
・種牡馬・牝系傾向
・生まれ月(早生まれ傾向分析)
2. 騎手情報
・騎手名
・直近騎乗成績(勝率・連対率・複勝率)
・競馬場別の得意不得意
・脚質との相性
・過去に同馬での騎乗成績
・同レースカテゴリでの過去実績
3. 過去のレース実績
・出走履歴(直近5~10走)
・着順・着差・相手関係
・レース条件(距離・馬場・枠順・ペース)との相性
・上がり3Fのタイム
・ラップタイム・先行位置の傾向
・出遅れ・不利の有無
4. 調教・仕上がり情報
・追い切り時計(1週前・最終)
・調教映像・動きの評価
・坂路/南W/CW等での内容
・併せ馬での内容と比較馬の格
5. 馬場・枠順・展開予想
・開催日の馬場傾向(内外・脚質・含水率)
・当日・前日天候と馬場の変化予測
・枠順別成績
・展開予想(逃げ先行差し追込の構成)
・ペース想定(スロー・ミドル・ハイ)
6. コース傾向・ラップ分析
・開催競馬場のコース形状と特徴
・過去3年分の同条件レースにおける脚質・枠順傾向
・過去ラップ比較と今年のペース予測
・有利/不利な脚質と馬場
7. オッズ・人気推移
・前日・直前のオッズ推移と異常値
・単勝・複勝・馬連・ワイド・三連複・三連単の売れ筋構成
・穴馬や過小評価されている馬の抽出
8. SNS・調教評価・専門紙情報
・Twitter、YouTube、noteなどの有力予想家の見解
・専門紙・競馬サイトの印(◎◯▲△×)と評価理由
・陣営のコメント(新聞・公式・現地取材)
【分析方針】
・各馬の能力を数値化し、相対評価(スコア)で順位付け
・スピード指数、展開予想、枠順補正、馬場適性を加味
・人気とのギャップから期待値の高い馬を抽出
・複数シナリオ(堅軸中心/波乱含み/大荒れ)の構成
・馬券構成の組み立て(単勝/ワイド/三連複等)
【出力形式】
・馬番順一覧+能力スコア
・本命、対抗、穴、危険な人気馬
・推奨馬券構成案(券種ごと)
・簡潔なまとめと根拠説明
なお、予想はあくまで参考であり、的中を保証するものではありません。
GⅠレース一覧(AIで競馬予想)
| 開催月 | レース名 | 馬場 | 条件 | 距離(目安) |
| 2月 | フェブラリーS | 東京 | 4歳以上 | ダ1,600 |
| 3月 | 高松宮記念 | 中京 | 4歳以上 | 芝1,200 |
| 3月 | 大阪杯 | 阪神 | 4歳以上 | 芝2,000 |
| 4月 | 桜花賞 | 阪神 | 3歳牝 | 芝1,600 |
| 4月 | [J] 中山グランドジャンプ | 中山 | 4歳以上 | 障4,250 |
| 4月 | 皐月賞 | 中山 | 3歳牡・牝 | 芝2,000 |
| 4月 | 天皇賞(春) | 京都 | 4歳以上 | 芝3,200 |
| 5月 | NHKマイルC | 東京 | 3歳牡・牝 | 芝1,600 |
| 5月 | ヴィクトリアマイル | 東京 | 4歳以上牝 | 芝1,600 |
| 5月 | オークス | 東京 | 3歳牝 | 芝2,400 |
| 5月 | 日本ダービー | 東京 | 3歳牡・牝 | 芝2,400 |
| 6月 | 安田記念 | 東京 | 3歳以上 | 芝1,600 |
| 6月 | 宝塚記念 | 阪神 | 3歳以上 | 芝2,200 |
| 9月 | スプリンターズS | 中山 | 3歳以上 | 芝1,200 |
| 10月 | 秋華賞 | 京都 | 3歳牝 | 芝2,000 |
| 10月 | 菊花賞 | 京都 | 3歳牡・牝 | 芝3,000 |
| 10月 | 天皇賞(秋) | 東京 | 3歳以上 | 芝2,000 |
| 11月 | エリザベス女王杯 | 京都 | 3歳以上牝 | 芝2,200 |
| 11月 | マイルチャンピオンシップ | 京都 | 3歳以上 | 芝1,600 |
| 11月 | ジャパンC | 東京 | 3歳以上 | 芝2,400 |
| 12月 | チャンピオンズC | 中京 | 3歳以上 | ダ1,800 |
| 12月 | 阪神ジュベナイルF | 阪神 | 2歳牝 | 芝1,600 |
| 12月 | 朝日杯フューチュリティS | 阪神 | 2歳牡・牝 | 芝1,600 |
| 12月 | [J] 中山大障害 | 中山 | 3歳以上 | 障4,100 |
| 12月 | 有馬記念 | 中山 | 3歳以上 | 芝2,500 |
| 12月 | ホープフルS | 中山 | 2歳牡・牝 | 芝2,000 |
GⅡ レース一覧(AIで競馬予想)
| 開催月 | レース名 | 馬場 | 条件 | 距離(目安) |
| 1月 | 日経新春杯 | 京都 | 4歳以上 | 芝2,400 |
| 1月 | アメリカJCC | 中山 | 4歳以上 | 芝2,200 |
| 1月 | 東海S | 中京 | 4歳以上 | ダ1,800 |
| 2月 | 京都記念 | 京都 | 4歳以上 | 芝2,200 |
| 2月 | 中山記念 | 中山 | 4歳以上 | 芝1,800 |
| 3月 | チューリップ賞 | 阪神 | 3歳牝 | 芝1,600 |
| 3月 | 弥生賞 | 中山 | 3歳 | 芝2,000 |
| 3月 | [J] 阪神スプリングジャンプ | 阪神 | 4歳以上 | 障3,900 |
| 3月 | フィリーズレビュー | 阪神 | 3歳牝 | 芝1,400 |
| 3月 | 金鯱賞 | 中京 | 4歳以上 | 芝2,000 |
| 3月 | スプリングS | 中山 | 3歳牡・牝 | 芝1,800 |
| 3月 | 阪神大賞典 | 阪神 | 4歳以上 | 芝3,000 |
| 3月 | 日経賞 | 中山 | 4歳以上 | 芝2,500 |
| 4月 | ニュージーランドT | 中山 | 3歳牡・牝 | 芝1,600 |
| 4月 | 阪神牝馬S | 阪神 | 4歳以上牝 | 芝1,600 |
| 4月 | フローラS | 東京 | 3歳牝 | 芝2,000 |
| 4月 | マイラーズC | 京都 | 4歳以上 | 芝1,600 |
| 4月 | 青葉賞 | 東京 | 3歳 | 芝2,400 |
| 5月 | 京都新聞杯 | 京都 | 3歳 | 芝2,200 |
| 5月 | 京王杯スプリングC | 東京 | 4歳以上 | 芝1,400 |
| 5月 | [J] 京都ハイジャンプ | 京都 | 4歳以上 | 障3,930 |
| 5月 | 目黒記念 | 東京 | 4歳以上 | 芝2,500 |
| 8月 | 札幌記念 | 札幌 | 3歳以上 | 芝2,000 |
| 9月 | セントウルS | 阪神 | 3歳以上 | 芝1,200 |
| 9月 | ローズS | 阪神 | 3歳牝 | 芝1,800 |
| 9月 | セントライト記念 | 中山 | 3歳 | 芝2,200 |
| 9月 | オールカマー | 中山 | 3歳以上 | 芝2,200 |
| 9月 | 神戸新聞杯 | 阪神 | 3歳牡・牝 | 芝2,400 |
| 10月 | 毎日王冠 | 東京 | 3歳以上 | 芝1,800 |
| 10月 | 京都大賞典 | 京都 | 3歳以上 | 芝2,400 |
| 10月 | [J] 東京ハイジャンプ | 東京 | 3歳以上 | 障3,110 |
| 10月 | 府中牝馬S | 東京 | 3歳以上牝 | 芝1,800 |
| 10月 | スワンS | 京都 | 3歳以上 | 芝1,400 |
| 11月 | 京王杯2歳S | 東京 | 2歳 | 芝1,400 |
| 11月 | アルゼンチン共和国杯 | 東京 | 3歳以上 | 芝2,500 |
| 11月 | デイリー杯2歳S | 京都 | 2歳 | 芝1,600 |
| 11月 | ステイヤーズS | 中山 | 3歳以上 | 芝3,600 |
| 12月 | 阪神C | 阪神 | 3歳以上 | 芝1,400 |
GⅢ レース一覧(AIで競馬予想)
| 開催月 | レース名 | 馬場 | 条件 | 距離(目安) |
| 1月 | 中山金杯 | 中山 | 4歳以上 | 芝2,000 |
| 1月 | 京都金杯 | 京都 | 4歳以上 | 芝1,600 |
| 1月 | シンザン記念 | 京都 | 3歳 | 芝1,600 |
| 1月 | フェアリーS | 中山 | 3歳牝 | 芝1,600 |
| 1月 | 京成杯 | 中山 | 3歳 | 芝2,000 |
| 1月 | 愛知杯 | 中京 | 4歳以上牝 | 芝2,000 |
| 1月 | 根岸S | 東京 | 4歳以上 | ダ1,400 |
| 1月 | シルクロードS | 京都 | 4歳以上 | 芝1,200 |
| 1月 | 東京新聞杯 | 東京 | 4歳以上 | 芝1,600 |
| 2月 | きさらぎ賞 | 京都 | 3歳 | 芝1,800 |
| 2月 | 共同通信杯 | 東京 | 3歳 | 芝1,800 |
| 2月 | クイーンC | 東京 | 3歳牝 | 芝1,600 |
| 2月 | ダイヤモンドS | 東京 | 4歳以上 | 芝3,400 |
| 2月 | 京都牝馬S | 京都 | 4歳以上牝 | 芝1,400 |
| 2月 | 小倉大賞典 | 小倉 | 4歳以上 | 芝1,800 |
| 2月 | 阪急杯 | 阪神 | 4歳以上 | 芝1,400 |
| 3月 | オーシャンS | 中山 | 4歳以上 | 芝1,200 |
| 3月 | 中山牝馬S | 中山 | 4歳以上牝 | 芝1,800 |
| 3月 | フラワーC | 中山 | 3歳牝 | 芝1,800 |
| 3月 | ファルコンS | 中京 | 3歳 | 芝1,400 |
| 3月 | 毎日杯 | 阪神 | 3歳 | 芝1,800 |
| 3月 | マーチS | 中山 | 4歳以上 | ダ1,800 |
| 3月 | ダービー卿チャレンジT | 中山 | 4歳以上 | 芝1,600 |
| 4月 | アーリントンC | 阪神 | 3歳 | 芝1,600 |
| 4月 | アンタレスS | 阪神 | 4歳以上 | ダ1,800 |
| 4月 | 福島牝馬S | 福島 | 4歳以上牝 | 芝1,800 |
| 4月 | 新潟大賞典 | 新潟 | 4歳以上 | 芝2,000 |
| 5月 | 平安S | 京都 | 4歳以上 | ダ1,900 |
| 6月 | 鳴尾記念 | 阪神 | 3歳以上 | 芝2,000 |
| 6月 | エプソムC | 東京 | 3歳以上 | 芝1,800 |
| 6月 | マーメイドS | 阪神 | 3歳以上牝 | 芝2,000 |
| 6月 | ユニコーンS | 東京 | 3歳 | ダ1,600 |
| 6月 | 函館スプリントS | 函館 | 3歳以上 | 芝1,200 |
| 6月 | [J] 東京ジャンプS | 東京 | 3歳以上 | 障3,110 |
| 6月 | ラジオNIKKEI賞 | 福島 | 3歳 | 芝1,800 |
| 6月 | CBC賞 | 中京 | 3歳以上 | 芝1,200 |
| 7月 | 七夕賞 | 福島 | 3歳以上 | 芝2,000 |
| 7月 | プロキオンS | 中京 | 3歳以上 | ダ1,400 |
| 7月 | 函館記念 | 函館 | 3歳以上 | 芝2,000 |
| 7月 | 中京記念 | 中京 | 3歳以上 | 芝1,600 |
| 7月 | 函館2歳S | 函館 | 2歳 | 芝1,200 |
| 7月 | [J] 小倉サマージャンプ | 小倉 | 3歳以上 | 障3,390 |
| 7月 | アイビスサマーダッシュ | 新潟 | 3歳以上 | 芝1,000 |
| 7月 | クイーンS | 札幌 | 3歳以上牝 | 芝1,800 |
| 8月 | レパードS | 新潟 | 3歳 | ダ1,800 |
| 8月 | 小倉記念 | 小倉 | 3歳以上 | 芝2,000 |
| 8月 | 関屋記念 | 新潟 | 3歳以上 | 芝1,600 |
| 8月 | エルムS | 札幌 | 3歳以上 | ダ1,700 |
| 8月 | 北九州記念 | 小倉 | 3歳以上 | 芝1,200 |
| 8月 | [J] 新潟ジャンプS | 新潟 | 3歳以上 | 障3,250 |
| 8月 | 新潟2歳S | 新潟 | 2歳 | 芝1,600 |
| 8月 | キーンランドC | 札幌 | 3歳以上 | 芝1,200 |
| 8月 | 札幌2歳S | 札幌 | 2歳 | 芝1,800 |
| 9月 | 新潟記念 | 新潟 | 3歳以上 | 芝2,000 |
| 9月 | 小倉2歳S | 小倉 | 2歳 | 芝1,200 |
| 9月 | 紫苑S | 中山 | 3歳牝 | 芝2,000 |
| 9月 | 京成杯オータムH | 中山 | 3歳以上 | 芝1,600 |
| 9月 | [J] 阪神ジャンプS | 阪神 | 3歳以上 | 障3,140 |
| 9月 | シリウスS | 阪神 | 3歳以上 | ダ2,000 |
| 10月 | サウジアラビアロイヤルC | 東京 | 2歳 | 芝1,600 |
| 10月 | 富士S | 東京 | 3歳以上 | 芝1,600 |
| 10月 | アルテミスS | 東京 | 2歳牝 | 芝1,600 |
| 11月 | ファンタジーS | 京都 | 2歳牝 | 芝1,400 |
| 11月 | みやこS | 京都 | 3歳以上 | ダ1,800 |
| 11月 | 武蔵野S | 東京 | 3歳以上 | ダ1,600 |
| 11月 | [J] 京都ジャンプS | 京都 | 3歳以上 | 障3,170 |
| 11月 | 福島記念 | 福島 | 3歳以上 | 芝2,000 |
| 11月 | 東スポ杯2歳S | 東京 | 2歳 | 芝1,800 |
| 11月 | 京都2歳S | 京都 | 2歳 | 芝2,000 |
| 11月 | 京阪杯 | 京都 | 3歳以上 | 芝1,200 |
| 11月 | チャレンジC | 阪神 | 3歳以上 | 芝2,000 |
| 12月 | 中日新聞杯 | 中京 | 3歳以上 | 芝2,000 |
| 12月 | カペラS | 中山 | 3歳以上 | ダ1,200 |
| 12月 | ターコイズS | 中山 | 3歳以上牝 | 芝1,600 |
競馬予想において、Webで自動収集(WebスクレイピングやAPI等)して最大限の精度を追求する場合に必要な情報は、単なる出走表やオッズだけではなく、馬・騎手・コース・天候・過去データの複合的な組み合わせが不可欠です。以下に、予測モデルで使うべき情報項目を、徹底的に分類・整理してご説明します。
【1】馬に関する情報(馬体・能力・傾向)
馬の素質や調子を把握する情報です。
● 馬名・年齢・性別・毛色
● 所属厩舎・生産牧場
● 父馬・母馬・兄弟馬の成績(血統情報)
● 過去の出走成績(距離・コース・着順・タイム)
● 馬体重・増減(過去との比較も)
● 調教タイム・坂路・CW・南Wなどのコース別内容
● パドック評価(動画解析含む)
● 走法・脚質(逃げ・先行・差し・追込)
● 脚元の故障歴・休養明けか否か
【2】騎手に関する情報
騎手の実力・調子・相性などを評価します。
● 騎手名・所属
● 重賞実績・年間勝利数
● 騎乗予定馬との相性(過去成績)
● 競馬場ごとの勝率
● 距離別・馬場別(芝・ダート)の成績
● 乗り替わりかどうか(乗替前後の比較)
【3】レース条件に関する情報
当日のレース条件に合わせて馬の得意不得意を見極めます。
● 競馬場名・コース(右回り/左回り・直線の長さなど)
● 距離(1200m~3200mなど)
● 芝・ダートの種類
● 馬場状態(良・稍重・重・不良)
● 天候(降雨・風速・気温)
● 出走頭数・枠順・発走順序
● ハンデ戦か別定戦か
● レースクラス(G1, G2, G3, OP, 3勝クラス etc)
【4】馬券動向・オッズ関連情報
人気や期待値、異常オッズなどを把握し投資判断に活用します。
● 単勝・複勝・馬連・ワイド・三連系オッズ
● オッズ変動(時間別・直前の急変など)
● 馬券購入金額(リアルタイムトレンド)
● 上位人気馬の信頼度(1番人気勝率等)
● 「妙味」ある穴馬(期待値が高い馬)
【5】調教・コメント・評価系の主観データ
見落としがちな主観情報ですが、熟練者は重要視します。
● 調教師コメント・関係者の談話(新聞・SNS)
● 地方からの転入情報(成績と環境差)
● 競馬新聞記者の◎○▲などの印
● 調教助手のSNS・インタビューなど
● 馬の気性(気分屋・集中力など)
【6】データソース例(自動取得に活用)
● JRA公式サイト(レース表・成績)
● netkeiba(出走馬・調教・オッズ・コメント)
● UMAJIN・競馬ラボ(騎手・厩舎分析)
● 競馬AI(SIVA, netkeiba AI予想など)
● Twitter・YouTube・競馬系インフルエンサー
● 天気予報API(tenki.jp, OpenWeatherMapなど)
● Googleトレンド(騎手・馬名などの検索急上昇)
【7】生成AI・機械学習モデルへ与える入力例(特徴量化)
● 馬の過去5走タイム平均・タイム差
● 同距離・同競馬場での勝率
● 騎手と馬の組み合わせ連対率
● 枠順ごとの成績(脚質との相性)
● 調教タイムの偏差値化
● パドック解析による馬体評価スコア
● オッズ差による期待値スコア(妙味の定量化)
● 脚質バイアス(差し有利などの天候・馬場補正)
【8】予想ロジック例(組み合わせ型)
- ロジスティック回帰で着順予測(1着確率)
- ランダムフォレストで複勝圏内の分類予測
- LSTMやTransformerで過去成績からの時系列パターン予測
- オッズと予測確率をかけ合わせて期待値フィルタリング
- 最終的に上位馬をピックアップして3連複候補を生成
精密な指示型競馬予想プロンプト
競馬予想AIシステムの構築と運用に関する全体像を、より詳細かつ実務的なレベルで拡張・補強した完全版仕様書として提示いたします。
これは中央競馬(JRA)向けに最適化された内容ですが、地方競馬にも応用可能な設計です。
システム全体構成と目的
● 目的
「機械学習 × ドメイン知識」を融合し、レース当日の実戦的予想を高精度・高再現性で出力する自律型AIシステムを構築する。
単なる過去分析ではなく、直前のオッズ・調教・馬場・パドックまで含めた「勝てる予想」を目指す。
● 想定ユーザー
- 競馬投資家(ロジックと収支を重視する層)
- データ分析を活用した馬券戦略を考える一般競馬ファン
- AI教育・データ活用事例としての学術・実務用途
● 概要システム構成図(概念)
[JRA / netkeiba などのデータソース]
↓(API / スクレイピング)
[データ収集・正規化モジュール]
↓
[統合データベース(PostgreSQL)]
↓
[特徴量抽出 / 分析エンジン(Pandas, NumPy)]
↓
[スコアリング関数 + 機械学習モデル(勝率推定)]
↓
[期待値算出・買い目生成モジュール]
↓
[可視化&出力:ダッシュボード / CSV / PDF / LINE通知]
2. データベース設計(RDBMS)
● 推奨:PostgreSQL + SQLAlchemy(Python連携)
| テーブル | 内容・目的 | 主なカラム |
|---|---|---|
horses | 馬のマスタ情報 | horse_id, name, age, sex, sire, dam, trainer_id |
jockeys | 騎手マスタ | jockey_id, name, birthdate, career_win_rate |
races | レース基本情報 | race_id, date, name, course, distance, surface, track_condition |
entries | 出走登録 | race_id, horse_id, jockey_id, frame_no, gate_no, weight |
results | レース結果 | race_id, horse_id, rank, time, margin, odds, popularity, last3f_time |
trainings | 調教情報 | horse_id, date, track, time_6f, time_1f, comment, evaluation |
odds | オッズ履歴 | race_id, horse_id, win_odds, place_odds, updated_at |
paddock | パドック情報(手入力も可能) | race_id, horse_id, walk_style, muscle_tone, mental_score |
※正規化済みでJOINも最適化しやすい構成。過去戦績や指数も別テーブルとして設計可。
3. 特徴量とスコアリング(馬ごとの評価ロジック)
● 最終スコア構成(例)
final_score = (
ability_score * 0.3 +
jockey_score * 0.15 +
course_fit_score * 0.1 +
training_score * 0.15 +
paddock_score * 0.05 +
pace_advantage_score * 0.1 +
bias_score * 0.05 +
odds_value_score * 0.1
)
● 各スコアの具体内容
- ability_score:過去5走の着順・ラップ・上がりを指数化(距離・馬場条件で正規化)
- jockey_score:そのコース・条件での勝率+馬との騎乗実績
- course_fit_score:コース適性(直線長、コーナー数、内外枠実績)
- training_score:追切タイム(併せ馬、終い重点、内容評価付き)
- paddock_score:毛ヅヤ、気配、歩様などの主観評価(自動化困難部分)
- pace_advantage_score:展開予想における脚質有利度(逃げ先行差し)
- bias_score:当該開催場の内外・脚質傾向を反映
- odds_value_score:AI評価に対してオッズが過小評価されている度合い
4. 機械学習モデル構築
● 目的
- 各馬の「勝率(1着確率)」および「連対率・複勝率」を確率値で予測
- モデル出力により買い目組み合わせを「確率論+期待値」で最適化
- 過去全レースから学習、当日パラメータで予測
● 推奨モデル構成
| モデル | 特長 |
|---|---|
| LightGBM | スピードと精度の両立、カテゴリ処理に強い |
| CatBoost | 少ないチューニングで高精度、カテゴリ変数自動処理 |
| XGBoost | 実績多数、回帰・分類に強い |
| ランダムフォレスト | 解釈性が高く、特徴量分析に最適 |
| DNN | 非線形性が高いが解釈性に欠ける(大量データ時のみ推奨) |
● 学習用特徴量例
- 馬の年齢、性別、レース間隔
- 前走タイム差、末脚(上がり順位)
- 騎手×コース勝率
- 枠順/枠順勝率
- オッズと人気順位の乖離
- ラップタイムの変動幅、位置取り傾向
5. 展開予測と隊列シミュレーション
- 出走馬全体の脚質(逃げ・先行・差し・追込)を分類
- 展開予想ルールベースまたはLSTM(時系列モデル)による
- 例:「逃げ馬2頭・先行5頭 ⇒ ハイペース濃厚 ⇒ 差し有利」と分類
6. 期待値分析と買い目自動生成
● 期待値(Expected Value)算出式
expected_value = predicted_win_rate * offered_odds
- 1.0以上は「プラス期待値=長期的には儲かる買い目」
- 単勝・馬連・ワイド・三連複など各式別で最適組合せを構築
- 過剰人気馬・過小評価馬を識別し、穴馬・妙味馬を発掘
● 買い目構築戦略(例)
- 単勝:期待値1.2以上かつスコア上位1頭
- 馬連:スコア上位3頭から期待値組合せ上位3点
- 三連複:勝率上位5頭から高期待値3点ボックス
- ワイド:スコア中位+異常オッズ馬のセット
7. 出力・可視化・ダッシュボード
● 出力形式の選択肢
| 種類 | 内容 |
|---|---|
| CSV出力 | 各馬のスコア・勝率・期待値を表形式で出力 |
| Streamlit/Dash | Webブラウザでグラフ・買い目・根拠付き表示 |
| レースごとの買い目レポートを出力 | |
| LINE通知 | 指定時刻に当日のおすすめ馬券を送信 |
| Jupyter | 分析・収支検証結果をインタラクティブに確認可能 |
8. 実装技術・構成
| 機能 | 推奨技術 |
|---|---|
| データ収集 | Python + BeautifulSoup / Selenium / requests |
| データ保存 | PostgreSQL / SQLite(ローカル) |
| 分析・前処理 | Pandas / NumPy / scikit-learn |
| 機械学習 | LightGBM / XGBoost / CatBoost |
| Web可視化 | Streamlit / Dash / Flask(軽量API) |
| 自動化 | cron + Bash / Airflow(スケジュール管理) |
| ログ管理 | Logging + Slack通知 or LINE通知 |
9. 収支・検証モジュール(推奨オプション)
- 予測買い目と実際の結果を突き合わせ、実収支を計算
- 年間・月間・式別の的中率 / 回収率グラフ可視化
- 「期待値1.0以上だけを買い続けた場合の仮想運用」も検証可
10. 拡張・応用設計
- 地方競馬対応版(SPAT4系データ連携/コース差分対応)
- JRA-VAN APIによる正規ライセンス活用(有料契約前提)
- LTV(生涯回収率)分析、育成世代の成長指数分析
- チャットインターフェースで買い目相談するBot構築
- スマホアプリ化・音声操作連携(例:音声で「おすすめ教えて」)
11. 次ステップに必要な情報
- 中央 or 地方競馬の範囲指定
- 有料APIを使用するか否か
- 出力手段(CSVのみ/Webダッシュボード含むか)
- 注力式別(単勝特化、三連複ボックス主軸など)
- 期待値を優先するか、的中率を重視するかの方針
1. アプリ構成の概要
● 目的
競馬予想を通じて、非エンジニアでもAIに慣れ親しむことを目指す。
簡単なインターフェースで、過去データから予測をし、ChatGPTとも連携する。
● 主な構成
- フロントエンド(GUI): Streamlit(PythonベースでGUI作成)
- バックエンド: ChatGPT API + 競馬予測ロジック
- データ取得: JRA-VANなどからのスクレイピング(非商用用途)
2. 実装コード(主要部分のサンプル)
A. main.py(StreamlitベースUI)
import streamlit as st
from backend import generate_prediction
from scraper import get_race_data
st.title("AI競馬予想 by ChatGPT")
race_name = st.text_input("レース名(例:菊花賞)")
jockey = st.text_input("注目騎手(例:川田将雅)")
if st.button("予想を生成"):
with st.spinner("ChatGPTが予想中です…"):
data = get_race_data(race_name)
result = generate_prediction(data, jockey)
st.markdown("### AIの予想結果")
st.write(result)
B. scraper.py(レース情報のスクレイピング)
import requests
from bs4 import BeautifulSoup
def get_race_data(race_name):
url = f"https://db.netkeiba.com/?pid=race_search_detail&word={race_name}"
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
# レースのリンクを取得(簡易版)
try:
link = soup.select_one(".race_top_data a")["href"]
detail_res = requests.get(f"https://db.netkeiba.com{link}")
detail_soup = BeautifulSoup(detail_res.text, 'html.parser')
table = detail_soup.select("table.race_table_01")[0]
rows = table.select("tr")[1:]
race_data = []
for row in rows:
cols = [col.text.strip() for col in row.select("td")]
race_data.append(cols)
return race_data
except Exception as e:
return f"スクレイピングエラー: {e}"
C. backend.py(ChatGPT連携・予想生成)
import openai
openai.api_key = "YOUR_OPENAI_KEY"
def generate_prediction(race_data, jockey):
prompt = f"""
以下の競馬レースの出走データと、注目騎手「{jockey}」に基づいて勝ち馬を予想してください。
前提として、過去の傾向・距離適性・騎手の相性を考慮してください。
出走データ:
{race_data}
あなたは、経験豊富な競馬評論家でありAI分析者です。
◎本命 ○対抗 ▲単穴 △連下 を1頭ずつ示し、その理由を簡潔に説明してください。
"""
try:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
return response["choices"][0]["message"]["content"]
except Exception as e:
return f"ChatGPT API エラー: {e}"
3. GUI設計(Streamlitベース)
UIコンポーネント一覧:
| 要素 | コンポーネント | 説明 |
|---|---|---|
| タイトル | st.title | アプリのメインタイトル表示 |
| 入力:レース名 | st.text_input | 予想対象のレース名を入力 |
| 入力:騎手名 | st.text_input | 注目する騎手の名前 |
| 実行ボタン | st.button | 予想処理を開始 |
| 結果表示 | st.markdown / st.write | ChatGPTの予想を表示 |
4. スクレイピング設計書
| 項目 | 内容 |
|---|---|
| 使用サイト | netkeiba.com(非商用・学習目的) |
| 使用ライブラリ | requests, BeautifulSoup4 |
| データ取得対象 | 出馬表、過去レース実績、騎手名 |
| 取得項目例 | 馬名、騎手、調教師、オッズ、タイム、馬体重など |
| 抽出方法 | CSSセレクタでrace_table_01をターゲットとし、各行をリスト化 |
| エラー対策 | 存在しないレース名・リンク切れに例外処理を追加 |
| 更新タイミング | 毎回実行時に都度取得(キャッシュなし) |
5. 使用想定と応用
- このアプリを通じて「ChatGPTとの対話型インターフェース」の使い方に慣れる
- 入力→ChatGPTプロンプト生成→予測→出力、という一連のビジネス的フローを学習
- 他業種(営業予測、在庫予測など)への応用イメージにもつながる
馬の能力に関する情報
● 過去のレース成績(戦績)
各馬の距離別、馬場別、ペース別、相手関係別の成績。特に同条件(芝・ダート/距離/馬場状態など)での勝率・連対率が重要です。
● 走破時計・ラップタイム
過去のレースにおける走破時計(全体)とラップ(区間ごとのスピード)。馬の持久力や瞬発力を判断する材料になります。
● 調教タイムとその内容
追い切りの内容(美浦/栗東、ウッド/坂路/南Wなど)、動きの良さ、併せた相手との比較。調子の良し悪しが推察できます。
● 血統背景
父系・母系ともにそのレース条件に合った適性があるか。芝/ダート、長距離/短距離、道悪の得手不得手など。
レースの条件と傾向
● 距離・馬場・コース形態
阪神外回り、東京1800、京都内回りなど、それぞれ得意とする馬が異なります。コーナーの数や直線の長さで脚質の有利不利も変わります。
● 馬場状態(良・稍重・重・不良)
時計が速い/遅い馬場、荒れている内外のトラックコンディションなども展開に大きく影響します。
● 枠順とスタート位置
内枠有利・外枠不利の傾向があるレースも多く、特に逃げ・先行馬にとって枠順は非常に重要です。
騎手・厩舎・陣営情報
● 騎手の技量と相性
騎手のそのコースでの成績、馬との相性、追い方の癖など。川田騎手は先行馬、ルメール騎手は差し馬などスタイルも重要。
● 調教師の得意条件
この厩舎は短距離が得意、この開催週は仕上げてくる等、データで裏付けられた傾向があります。
● 馬主やクラブの方針
「勝負がかり」「叩き台」など、どこで本気かを見極めるために、使い分けや意図も判断材料になります。
展開予想と隊列バランス
● 先行・差し・追込みの脚質分布
出走馬の脚質構成からペースを予想します。逃げ馬が多数いればハイペース、1頭ならスローの可能性も。
● 展開図の作成
ハナに行く馬、中団に控える馬、外を回される馬の位置取り予想。内外のロスや包まれる可能性を含めます。
現地情報とリアルタイムデータ
● パドックの気配
歩様の柔らかさ、毛ヅヤ、入れ込み、気合乗りなど直前の状態をチェックします。
● 馬体重の増減
過去との比較で「太い」「仕上がった」「成長分」などを判断。特に3歳馬の成長具合に注目。
● オッズの動きと異常投票
過剰人気・過小人気、急激なオッズ変動は陣営関係者の動きや大口投票の兆候と見なされる場合があります。
過去レースとの比較解析
● 同条件での過去の勝ち馬傾向
例えば「中山芝2000mの重馬場で強いのは内枠先行馬」など、過去5年程度のデータを見ます。
● タイム指数・スピード指数
他馬との相対的なパフォーマンス。タイムだけでは比較できないコースごとの差を指数で補正。
データ同士の交差チェック
● 各ファクターの整合性
調教が良くても血統が合わない、騎手が優秀でも展開が不向き、など、複数条件で矛盾がないかを検証します。
競馬場・開催状況
● 開催週と馬場傾向
開幕週は前残り、最終週は差しが届く、など季節や芝の傷みによって有利不利が変わります。
● 天候と当日気温・湿度
馬場悪化や熱中症の影響。暑さに弱い馬や雨に強い馬が存在します。
その他補足
● 乗り替わりの有無と背景
主戦から乗り替わった理由が何か、誰が降ろされたか、どの陣営が騎手を確保したかは勝負度合いの判断材料になります。
● 休養明け/連闘/間隔
長期休養明けの叩きかどうか、連闘で勝負に出てきたのか、使い詰めで疲れがあるかなども判断します。
競馬予想から始めるAI活用――ChatGPTと楽しみながら「AIアレルギー」を解消する方法
「AIは難しい」「使いこなせるのは一部の技術者だけ」——そんな印象をお持ちの方も多いかもしれません。ビジネスの現場でも、ChatGPTなどの生成AIが話題になる一方で、「自分に関係ない」「使える気がしない」と感じて距離を置いている方も少なくないのではないでしょうか。
しかし、もしAIの入り口がもっと身近で、しかもワクワクできるものだったら?
たとえば——競馬予想のような、「遊びながら学べる」テーマから入ってみるのはどうでしょう。
ChatGPT × 競馬予想=最高の“学び遊び”体験
競馬は、天候・馬場・距離・血統・枠順・騎手・オッズなど、非常に多くの変数が絡み合う予測ゲームです。プロですら読み切れないこの世界を、ChatGPTにサポートさせてみる。
「このレース、先行馬が多いから差しが有利?」「オッズと期待値のズレを計算したらどの馬を買うべき?」
こうした問いを、ChatGPTに投げかけ、回答をもらう——それだけでも、AIに“命令を出す”という感覚が自然と身につきます。
特別なIT知識は不要。聞きたいことを日本語で書けばいい。それだけでChatGPTは、オッズ・展開・騎手の情報を整理し、場合によってはWebで調べ、答えを返してくれます。
予想の確率、買い目の精度、理由づけの言葉。すべてに「なるほど」と感じる瞬間があるでしょう。
それこそが、「AIって意外と使えるかも」と感じる“最初の成功体験”になるのです。
遊び感覚が、AIの「苦手意識」を溶かす
ChatGPTは、競馬だけでなく、経営判断・業務効率化・アイデア出し・文章作成など、ビジネスの幅広い場面で使われています。ですが、いきなり「議事録を書かせて」「社内規程を要約して」と言われても、戸惑うのが自然です。
一方で、「自分が好きなことをテーマにしてChatGPTと会話する」ことには抵抗がありません。
競馬はその最たる例です。
当たり外れを楽しみながら、自然と「AIにどう聞けば答えがよくなるか」「どこまで任せて、どこから自分で考えるか」を学べます。
これは、ビジネスでAIを活用する際に必要なスキルそのもの。つまり競馬予想という遊びが、そのままAIコミュニケーションのトレーニングになっているのです。
競馬が教えてくれる「プロンプト設計力」
もうひとつ見逃せないのが、「質問の仕方(=プロンプト設計)」です。
ChatGPTは、こちらの質問の仕方で答えがまるで変わります。
「この馬は勝てますか?」よりも、「この馬は過去5戦のうち、重馬場で好走歴がありますか? 展開的に有利か判断してください」と聞いた方が、ずっと具体的で信頼できる答えが返ってきます。
この“聞き方の工夫”は、プレゼン資料の構成、営業メールの文面、ビジネスの文章作成にもそのまま応用できます。
競馬という題材を通して、「人がAIに伝える力=プロンプト力」が鍛えられていく——これも、競馬×ChatGPTの魅力のひとつです。
「AI=無機質」の時代は終わった
かつてAIは、何か冷たい・難しい・専門的というイメージがありました。ですが、いまのChatGPTは違います。
あなたの言葉で話しかければ、あなたのペースで応えてくれる。時には的外れでも、少し工夫して聞き直せばちゃんと立て直してくれる。
そうやって、AIを「パートナー」や「共同作業者」として使う感覚を自然と身につけられるのが、競馬予想というフィールドです。
「ChatGPTで勝ち馬を探す」——そんな遊びの中に、あなたのAIリテラシーを伸ばす最良のチャンスがあるのです。
まずは1レースから、気軽に始めてみませんか
もしあなたが「AIは難しそう」「自分には関係ない」と思っていたなら、まずは週末の1レースだけ、ChatGPTと一緒に予想してみてください。
好きな馬、気になる騎手、好走してほしい枠。そこに少しだけAIの知恵を借りてみる。
きっと、その手ごたえの中に「ビジネスにも使えるかも」という感覚が芽生えるはずです。
競馬という“知的エンタメ”をきっかけに、AIへの苦手意識を楽しみながら解きほぐしていく——。
それは、決して遠回りではありません。
むしろ「自分の得意・好きな世界」を起点にするからこそ、ChatGPTはあなたの最も頼れるツールになるのです。

