競馬予想を自動化する方法|AIにTARGETを操作させる6つの鉄則

AIにTARGETを操作させて競馬の予想作業を自動化する6つの鉄則を解説する、横けんのAI競馬予想の記事アイキャッチ画像 target錬金術

毎週150万円の実弾を馬券に突っ込む男、横けんです。

今回は予想そのものの話ではなく、「予想を作るまでの作業」の話をします。

私はTARGET frontier JVという競馬ソフトを20年近く使っています。データを引っ張り、集計し、印を入れ、また集計する。この繰り返しが予想の土台です。ただ正直に言うと、この作業に週で何時間も溶けていました。

そこで、この操作そのものをAIにやらせてみることにしました。結論から言うと、データのダウンロードから印の生成、TARGETへの書き戻しまで、ほぼ全部が自動で回るようになりました。ただし、ここに辿り着くまでに何度も事故りました。その過程で分かった「守らないと必ず壊れる6つのこと」を、包み隠さず書きます。

▶ 私が毎週150万円を賭けながら3年かけて作った競馬予想AIの全体像は、「競馬予想AIの作り方・完全ガイド」に最初から順にまとめています。

なぜ予想そのものではなく「作業」を自動化したのか

予想の精度を上げる話は、みんなやりたがります。でも私が本当に困っていたのは、精度以前の部分でした。

木曜にデータを落とし、印を作り、それをソフトに戻す。土日には結果を集計する。この一連の作業は、頭を使っているようで実はほとんど使っていません。決まった手順を、決まった順番で繰り返しているだけです。

それなのに時間だけは確実に持っていかれる。しかも疲れます。疲れた状態でレースを見ても、いい判断はできません。

競馬ソフトTARGET frontier JVのメイン画面。出馬表・成績・競走馬・種牡馬・騎手などのメニューが並んでいる
これがTARGETのメイン画面。ここから目的の機能を選んでいきます。AIにはこのメニューを「項目の名前」で辿らせています。

作業時間が空けば、その分だけレースを考える時間に回せます。私が自動化に手を出した理由はこれだけです。AIに予想させたかったわけではなく、AIに雑用をさせたかった。

実際にどこまで自動化できたのか

今の時点で、次のことがコマンド一発で回ります。

  • 木曜:出馬表や馬データをソフトから書き出す
  • そのデータで印とコメントを生成する
  • 生成した印を、ソフトの「馬印」欄に書き戻す
  • 土日:週末の回収率を集計して、画像として切り出す
  • その画像を使ってブログの下書きまで作る

数字で言うと、ある日曜の32レース分をまとめて書き戻したとき、ソフト側の完了表示は「新規32件/上書き0/結合0/同一0/パス0」でした。生成したレース数とぴったり一致しています。取りこぼしもダブりもゼロということです。

別のコマンドでは、6種類のファイルを一括で書き出す処理を通しでテストして、それぞれ95行・124行・101行・133行と想定どおりの件数が出ました。未勝利戦の絞り込みでは484頭から181頭まで正しく落とせています。

この記事の元になった週次レポートに載せている回収率の表も、私は一切触っていません。AIがソフトを開いて、条件を設定して、表を切り抜いて、画像として保存しています。

鉄則その一:画面の位置を覚えさせてはいけない

これが最大の落とし穴です。

「画面の左から500ドット、上から300ドットの場所を押せ」という指示は、一見いちばん簡単です。実際に最初はそう書きました。そしてモニターを変えた瞬間に全部壊れました。

ノートパソコンと外付けモニターでは画面の細かさが違います。文字の拡大率が違うだけでもズレます。座標を覚えさせた自動化は、必ずいつか壊れます。しかも壊れたときに「押したつもりで別の場所を押している」ので、気づくのが遅れます。これがいちばん怖い。

TARGETのレース検索条件設定ダイアログ。クラス・場所・月・馬場など20個の一覧から条件を選ぶ画面
AIが実際に操作している条件設定の画面。この小さな一覧が20個あります。座標ではなく「その行に書かれている文字」で選ばせています。閉じるときは右下のキャンセルボタンを押します。

今は座標を一切使っていません。メニューは「項目の名前」で指し、リストは「その行の文字」で選び、押すべきボタンは「ボタンとしての正体」で掴んでいます。どのパソコンで動かしても同じ結果になります。

鉄則その二:マウスで押しても反応しないボタンがある

これは意外でした。人間と同じようにマウスカーソルを動かしてクリックさせても、TARGETのボタンは反応しないことがあります。

ソフトの作りによって、「マウスが動いた」という信号を見ているものと、「ボタンが押された」という信号を見ているものがあるからです。TARGETは後者でした。だからマウスを動かす方式ではなく、ボタンに直接「押されたぞ」と伝える方式にしています。

鉄則その三:エスケープキーで閉じてはいけない

開いた画面を閉じるとき、エスケープキーを叩いたり、ウィンドウの×を押したりするのがいちばん手軽です。これをやると、TARGETは中途半端な状態のまま残ります。

次の処理を始めたときに「前の画面がまだ生きている」状態になり、そこから連鎖的におかしくなります。面倒でも、画面に出ている「キャンセル」ボタンをきちんと押す。これだけで安定性がまるで変わりました。

鉄則その四:ダイアログを見た目で判断してはいけない

「処理が終わりました」という小窓が出たかどうかで、次に進むかを決めたい場面がよくあります。

ところがTARGETでは、この小窓のタイトルが本体の画面とまったく同じでした。タイトルで探すと、本体を「小窓だ」と勘違いします。そのまま次に進んで、当然のように失敗します。

今は「そこにOKボタンがあるかどうか」で判定しています。名前ではなく中身で見る。人間の目でやっている判断を、そのまま言葉にしてやる必要がありました。

鉄則その五:終わり方が2種類あることを知っておく

ファイルの書き出しには、終わったときに完了の小窓が出るものと、何も出ずに黙って終わるものの2種類があります。

これを取り違えると悲惨です。出ない方を「出るはずだ」と思って待つと、永遠に待ち続けてタイムアウトします。逆も同じで、出る方を無視して先に進むと、書き出し途中のファイルを読みにいって壊れたデータを掴みます。

どの処理がどちらの型なのかは、実際に一つずつ動かして確かめるしかありませんでした。ここはショートカットがありません。

鉄則その六:書き出されるのは「今映っている画面」だ

TARGETには画面の内容をそのままファイルに落とす機能があります。便利なのですが、落ちてくるのはそのとき表示していたレイアウトそのままです。

別のタブを開いた状態で書き出すと、列の並びも列の数も変わったファイルが出てきます。見た目は正常なので気づきません。そのまま集計に流すと、まったく違う数字が出ます。

今は書き出す前に必ず決まったタブへ切り替えるようにして、列の数まで検査しています。データが正しいかどうかは、中身を見るまで分からない。ここは自動化とは関係なく、競馬のデータを扱う人全員に言えることだと思います。

画像の切り抜きは「罫線」を頼りにした

週次レポートに載せている回収率の表は、AIが画面から切り抜いています。ここでも座標は使っていません。

TARGETの集計結果ウィンドウ全体。勝率や回収率など約40列の項目が横に長く並んでいる
集計した直後の画面。横に40列ほど並んでいて、このままでは記事に載せられません。

やり方はこうです。まず画面の中から緑色の見出し行を探します。次に横の罫線の間隔を測って1行の高さを割り出します。最後に縦の罫線を数えて、必要な列の右端を決めます。そこで初めて切り抜きます。

回りくどいようですが、この方式なら画面の大きさが変わっても、行数が増えても、正しい場所で切れます。人間が目でやっていることを、そのまま手順にする。これが結局いちばん壊れにくいという結論になりました。

罫線を頼りに切り抜いた、印ごとの勝率・複勝率・単勝回収率・複勝回収率の表
切り抜いたあと。左から8列だけを、罫線の位置を測って取り出しています。毎週この形で出てきます。

日付を固定で書かない、という地味だけど大事な話

最初に作ったときは、対象の日付を直接書き込んでいました。動きます。その週は。

翌週になると、先週のデータを一生懸命処理してしまいます。しかもエラーは出ません。正常に終わったように見えて、中身が先週のものになっている。これは危ないパターンです。

今は「今週の土曜と日曜」を毎回その場で計算させています。3日間開催の週でも取りこぼさないよう、画面の見出しを実際に読んで確かめる作りにしました。毎週動かすものに、その週だけの値を書き込んではいけません。

自動化して、結局なにが変わったか

いちばん大きいのは、やる気に左右されなくなったことです。

手作業でやっていた頃は、負けた週の集計が本当につらかった。数字を直視したくないので後回しにする。後回しにすると次の週の準備が押す。押すと雑になる。この悪循環がありました。

今は勝っても負けても同じように集計が回ります。感情が入らないので、負けた週のデータほど冷静に見られるようになりました。自動化の一番の効果は時短ではなく、記録が途切れなくなったことかもしれません。

もう一つは、失敗の記録が残るようになったことです。手でやっていると「あれ、先週どうやったんだっけ」が積み重なりますが、手順を書いた時点でそれが記録になります。今回書いた6つの鉄則も、全部そこから出てきたものです。

これから自動化しようとしている人へ

私はプログラマーではありません。40年競馬をやってきただけの人間です。それでもここまで来られたので、やり方さえ間違えなければ誰でもできると思っています。

ただ、順番だけは間違えないでください。いきなり全部を自動化しようとすると、必ず途中で壊れて心が折れます。私は「回収率の表を1枚切り抜く」ところから始めました。それが安定してから次に進みました。

そして何より、自動化したものは必ず検算してください。「エラーが出ていない」と「正しい」はまったく別のことです。件数が合っているか、先週のデータを掴んでいないか、列の数は想定どおりか。ここを飛ばすと、静かに間違えたまま何週間も走り続けます。馬券を買う人間にとって、これは致命傷です。

作業が減った分は、ぜひレースを考える時間に回してください。私はそのために自動化しました。

この内容を実際に使った週の実戦記録(買い目と収支つき)はこちらです。→ 【競馬AI】AIがTARGETを操作|地方競馬の本命ロジックを中央式に進化

▶ あわせて読みたい:【TARGET設定】「馬印」は8つ使い分けろ! 記憶に頼らず穴馬を自動で炙り出す、プロの分類ルール完全公開

▶ あわせて読みたい:【TARGET活用】レース回顧は記憶するな! 気づきを「備考欄」に入力して、自分だけの「検索できるデータベース」を作る手順

コメント

タイトルとURLをコピーしました