前置き:ついに50件を超えた
前回(#27)、累計49件、チェックポイントまであと1件というところで記事を終えた。
その後、9月19日・20日・21日の3日間で9件の推奨が出た。
9月19日(中山):3件推奨 的中0
9月20日(阪神):4件推奨 的中0
9月21日(阪神):2件推奨 的中0
9件とも、着外。
累計は58件。的中は、依然としてゼロ。
以前決めた「累計50件で再確認する」という基準を、超えた。約束通り、ここで一度きちんと棚卸しする。
まず、正直に書いておきたいこと
今回、検証の過程で一つ、恥ずかしい話がある。
作業環境(サンドボックス)の不具合がまだ続いており、結果CSVを直接読み込めなかったため、着順を手作業で申告してもらう形で記録した。最初の申告では、実は2件(レイピカケ、ゴルディアス)が「1着」と伝わっていた。「ついに初的中か」と一瞬色めき立ったのだが、すぐに訂正が入り、正しくはどちらも着外(6着・8着)だった。
自動検証を手作業に置き換えると、こういう人的ミスのリスクが乗ってくる。 これは、環境トラブルへの対応として仕方なかった部分はあるが、今後もし同じ状況が続くなら、二重チェックの仕組みを考えた方が良さそうだ。この記事の数字は、訂正後の正しい着順に基づいている。
58件全ハズレを、どう評価するか
いつも通り、感情ではなく数字で確認する。今回は、二つの角度から見てみた。
角度1:件数ベース
バックテストの全体的な的中率9.6%を前提に、58件が独立した試行だとすると:
(1 - 0.096)^58 ≈ 0.29%
約350回に1回。 さすがに、これはもう「よくあること」では済ませられない水準だ。
角度2:日数ベース
推奨があった13営業日、すべてが「ゼロ的中の日」だった。1日あたりゼロ的中率68.3%を前提にすると:
0.683^13 ≈ 0.70%
こちらも、1%を切っている。
どちらの角度で見ても、単なる偶然という説明はもう苦しい。
だが、話はそう単純でもない:札幌除外の「前」と「後」
ここで、前回・前々回の記事を思い出してほしい。8月30日の時点で、43件全ハズレの原因を点検し、「札幌開催がバックテストでほとんど検証されていなかった」ことを突き止め、札幌を推奨対象から除外した。
58件のうち、その札幌除外前後で分けて見ると、様子が変わってくる。
札幌除外前(8/8〜8/30):43件 的中0(うち札幌が22件=51%)
札幌除外後(9/5〜9/21):15件 的中0(中山5件・阪神10件、札幌なし)
札幌除外後の15件だけを、単独の試行として評価し直すとどうなるか。
15件全ハズレの確率(p=9.6%想定):約22.0%
5回に1回は、普通に起こりうる範囲。
つまり、「札幌を除外しても直っていない」と結論づけるには、まだ15件では材料が足りない。同時に、「札幌除外前の43件」は、そもそも検証不足だった札幌が過半数を占めていたデータであり、これをそのまま「モデルの実力」として58件に混ぜて評価するのも、正確ではない。
判断:条件はまだ変えない。ただし「数え方」を変える
ここで、基準3(累計回収率が明確に50%を下回る状態が続く場合は、条件の見直しを検討する)に、形の上では該当している。
だが、上記の分解を踏まえると、今この時点でEVの閾値や開催場の条件をさらにいじるのは、時期尚早だと判断した。理由は二つある。
1. 43件は「札幌問題」という既知の原因で説明できる、いわば別集団のデータ
2. 現行設計(札幌除外後)の「本当のサンプル」は、まだ15件しかない
15件という少なさで、22%という「まだ普通にありうる」数字に対して条件を変更すれば、これまで何度も繰り返してきた「少ないサンプルの偶然を実力だと勘違いする」過ちを、また犯すことになる。
そこで、今後の集計方法を、次のように改める。
✓ 8/8〜8/30の43件は「札幌問題が判明する前のデータ」として区切って記録する
✓ 今後のチェックポイントは、9/5以降の「札幌除外後」の件数を基準に数える
✓ 札幌除外後の累計が30件に達した時点で、あらためて的中率・回収率を確認する
(現在15件、あと15件)
✓ その時点でも大きく崩れているようであれば、初めてEVの閾値や
他の条件の見直しに着手する
Data Scientistとしての振り返り
今回、一番大事な学びは、**「一つの数字に、すべてを語らせないこと」**だった。
58件・0.29%という数字だけを見れば、「今すぐ何か手を打つべきだ」という結論に飛びつきたくなる。だが、その58件の中には、原因がすでに分かっている「札幌問題」の43件と、まだ何も判断できない「現行設計」の15件が、無自覚に混ざっていた。
同じ「0件」でも、その中身を分解しなければ、正しい意思決定はできない。これは、これまでの記事で何度も書いてきた「分解してから判断する」という原則の、また別の側面だった。
正直、58件連続ハズレという事実を前にして、平静でいるのは簡単ではない。だが、混ぜてはいけないデータを混ぜないこと。これだけは、最後まで譲らずにいたい。
技術ノート
実運用累計成績(2026年9月21日時点)
全期間累計:58件 的中0 回収率0%
札幌除外前(8/8〜8/30):43件 的中0
札幌除外後(9/5〜9/21) :15件 的中0
次のチェックポイント:札幌除外後の累計30件到達時(あと15件)
統計的評価
58件全ハズレの確率(p=9.6%想定) :約0.29%
13営業日連続ゼロの確率(p=68.3%想定):約0.70%
札幌除外後15件のみの全ハズレ確率 :約22.0%(正常範囲内)
運用上の注意点(今回の教訓)
サンドボックス障害により、結果CSVを直接読めない期間が続いている。
手作業での着順申告に切り替えたところ、1件誤りが発生(訂正済み)。
今後、環境が復旧するまでは二重確認を徹底する。
次回の予定
札幌除外後の累計が30件に到達するまで、条件は変更せず記録を続ける。
その時点で、的中率・回収率がバックテストの水準(的中率9.6%、回収率122.2%)にどれだけ近づいているか、あるいは乖離しているかを、あらためて報告する。
【競馬AI開発記】次回予定:
- Day 29:札幌除外後累計30件到達時点での棚卸し報告
- Day 30:サンドボックス障害が復旧した場合の、過去データ再検証