ボートレースAIの手動テストを実施|予想から結果評価まで確認しました

ボートレースAIがバックテストから実戦形式のForward Testへ進むことを表したアイキャッチ画像 ボートレースAI開発

ボートレースAIでは、停止しているForward Testを安全に再開するため、段階的な動作確認を進めています。

2026年8月2日には、実際のレースを使った「Stage 4D」の手動テストを実施しました。

今回確認したのは、レース前にAI予想を保存し、レース終了後に公式結果と払戻を取得して、予想結果を正しく評価できるかという一連の流れです。

ただし、今回は正式なForward Testの再開ではありません。

すべて動作確認用のテストとして扱い、的中率や回収率などの正式な成績には含めていません。

正式再開前に確認したかったこと

AI予想を正式に再開するには、単に予想を出せるだけでは不十分です。

今回の手動テストでは、主に次の点を確認しました。

  • レースの締切前にAI判定を保存できるか
  • 結果が分かる前に予想を固定できるか
  • レース終了後に公式結果を取得できるか
  • 3連複の払戻情報を保存できるか
  • 事前予想と公式結果を照合できるか
  • テスト結果を正式成績から除外できるか
  • 開発用の処理が正本データベースを変更しないか

結果を見た後に予想を作ることがないよう、締切前の判定と結果取得を明確に分けています。

今回も固定戦略を使用

今回のテストでも、これまでのForward Testと同じ戦略を使用しました。

  • 券種:3連複
  • 買い目:AI予想上位3艇
  • 信頼度:1位と2位のスコア差
  • 購入基準:スコア差11.02以上
  • 戦略名:trio_top3_top1_gap_fixed_v1
  • スコア:explainable-score-v1

検証の途中で、予想条件や購入基準は変更していません。

結果を見ながら都合よく条件を変えてしまうと、Forward Testとして正しく比較できなくなるためです。

2レースで手動予想を保存

今回、23場の9Rと11Rで、締切前の手動判定を保存しました。

結果は次のとおりです。

レース AI判定 AI想定買い目 実際の3連複 評価
23場9R SKIP 1=2=4 2=3=5 SKIPPED
23場11R SKIP 1=2=4 1=2=3 SKIPPED

2レースとも、AIは購入条件を満たさない「SKIP」と判定しました。

そのため、実際の購入金額、払戻、収支はいずれも0円です。

AIが想定した買い目を仮に購入していた場合は、どちらのレースも不的中でした。

今回は、購入を見送る判定によって損失を回避した形になります。

23場9Rの結果

23場9Rの公式結果は、2号艇、3号艇、5号艇でした。

  • 公式着順:2-3-5
  • 3連複:2=3=5
  • 3連複払戻:5,370円
  • AI想定買い目:1=2=4
  • AI判定:SKIP
  • 購入金額:0円
  • 評価:SKIPPED
  • 収支:0円

実際の3連複は高配当でしたが、AIの想定買い目とは一致していません。

仮に購入していた場合は不的中です。

なお、このレースを処理した時点では、取得した元データをどのように保存するかというルールがまだ完全に決まっていませんでした。

そのため、結果と評価は保存されていますが、当時の総合判定はINCOMPLETEのままとしています。

23場11Rの結果

23場11Rでは、修正後の処理を使い、事前判定から結果評価までの一連の流れを確認しました。

  • 公式着順:1-3-2
  • 3連複:1=2=3
  • 3連複払戻:310円
  • AI想定買い目:1=2=4
  • AI判定:SKIP
  • 購入金額:0円
  • 評価:SKIPPED
  • 収支:0円

AIの想定買い目は1=2=4でしたが、実際の3連複は1=2=3でした。

このレースも、仮に購入していた場合は不的中です。

ただし、AIは事前にSKIPと判定していたため、実際には購入していません。

23場11Rでは、修正版を使って次の流れを完了できました。

  • 締切前のAI判定
  • 判定内容の保存
  • 公式結果の取得
  • 払戻情報の保存
  • 予想と結果の照合
  • SKIPPED評価の保存
  • 正式成績からの除外

テスト中に見つかった問題

今回のStage 4Dでは、最初からすべてが正常に動いたわけではありません。

実際にレース時刻に合わせて動かすことで、いくつかの問題が見つかりました。

判定時刻が数秒ずれる問題

締切前の安全な時間帯に予想を保存する設計でしたが、子処理を起動するまでの時間によって、判定時刻が数秒ずれるケースがありました。

処理の起動時間を考慮して、判定タイミングを補正しました。

手動テスト情報が途中で失われる問題

手動テストとして実行していることを示す情報が、保存処理の途中で途切れる問題がありました。

そのため、安全機能によってデータベースへの書き込みが停止するケースがありました。

修正後は、結果、払戻、評価を保存するところまで、手動テスト用の情報を維持できるようにしました。

結果公開前にデータを保存する問題

公式結果がまだ公開されていない状態でも、一部の記録が保存されるケースがありました。

現在は結果未公開の場合、次のデータを保存しないように変更しています。

  • 取得ページの記録
  • 元データ
  • レース結果
  • 払戻
  • 評価

結果が公開されていない場合は、処理を停止した記録だけを残します。

異なるPythonで起動する問題

一部の処理を直接実行した際、専用のPython環境ではなく、Macに付属する別のPythonで起動する問題がありました。

必要なライブラリが見つからず、処理が停止しました。

修正後は、ボートレースAI用のPython環境から必ず実行するように固定しています。

テスト結果は正式成績に含めていません

今回の2レースは、正式なForward Testではなく、動作確認のためのテストです。

そのため、次の成績には含めていません。

  • 購入件数
  • 的中件数
  • 投資額
  • 払戻額
  • 収支
  • 回収率
  • 連敗数
  • ドローダウン

テスト用の実行と正式運用のデータが混ざらないことも確認しました。

今回保存されたStage 4D用の実行記録は3件あります。

これは、修正前を含む複数回の検証実行が記録されているためです。

正式な事前判定と評価の対象となったレースは、23場9Rと11Rの2件です。

正本データベースへの影響もありません

作業後には、データの隔離状態も確認しました。

  • 正本データベース:変更なし
  • テスト用データベース:整合性確認済み
  • 外部キーエラー:0件
  • ロックファイル残存:なし
  • 一時ファイル残存:なし
  • 自動実行設定:未登録
  • 共有フォルダへの書き込み:なし
  • WordPress接続:なし
  • ブログ用予想データ作成:なし

今回の検証によって、正式な予想データや過去のForward Test成績が変更されることはありませんでした。

まだ正式再開ではありません

今回、手動でのSKIP判定と結果評価の流れは確認できました。

しかし、まだ確認できていない処理があります。

  • PURCHASE判定が出た場合の評価
  • 結果未公開時の停止処理
  • 毎日の自動実行
  • Macのスリープ復帰後の動作
  • 複数日にわたる連続運用
  • 自動起動設定
  • 正式Forward Testの再開

今回のテストが成功したからといって、すぐに自動運用を開始する予定はありません。

次は別日に最大2レースを検証

次の段階では、別の開催日を対象に、もう1日だけ手動テストを行う予定です。

対象を広げすぎないよう、次の条件に制限します。

  • 対象日:1日だけ
  • 対象レース:最大2レース
  • 事前判定:最大2件
  • 結果評価:事前判定に成功したレースだけ
  • 正式成績には含めない
  • 自動実行は行わない
  • WordPressとの自動連携は行わない

別の日でも同じ処理が安定して動くことを確認してから、自動実行の設計へ進みます。

まとめ

今回のStage 4Dでは、実際のレースを使って次の流れを確認しました。

  • 締切前の手動予想
  • AI判定の保存
  • 公式結果の取得
  • 払戻の保存
  • 予想と結果の照合
  • SKIP評価の作成
  • 正式成績からの除外
  • 正本データベースが変更されていないこと

途中では、判定時刻、手動実行情報、結果未公開時の保存、Python実行環境などの問題も見つかりました。

これらを修正し、23場11Rでは予想から結果評価までの一連の処理を完了できました。

正式Forward Test再開に向けて、安全性は一段高まりました。

ただし、購入判定が出た場合の処理や自動実行は、まだ確認できていません。

もう1日だけ手動テストを行い、問題がないことを確認してから、正式な自動運用へ進む予定です。

開発メモ

今回の主な技術記録は次のとおりです。

  • 実施日:2026年8月2日
  • run_class:STAGE4D_TEST
  • 固定戦略:trio_top3_top1_gap_fixed_v1
  • confidence:top1_gap
  • threshold:11.02
  • score:explainable-score-v1
  • テスト実行記録:3件
  • 事前判定:2件
  • 評価:2件
  • 判定結果:2件ともSKIP
  • forward_kpi_enabled:false
  • formal_kpi_included:false
  • 正式KPIへの混入:0件
  • 正本DB:不変
  • テスト用DBのforeign_key_check:0件
  • LaunchAgent:未登録
  • cron:未登録
  • shared書き込み:なし
  • WordPress接続:なし

コメント

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