---
13件、すべて着外
前回(#32)は、累計91件・的中0の原因が、訓練時のデータリークだったという話を書いた。その後の週末(10月24日・25日)の結果を報告する。
```
10月24日(京都・新潟・東京):5件推奨 的中0
10月25日(京都・東京) :8件推奨 的中0
```
```
最高着順:5着(メッエフアパラ)、6着(ショウナンハヤナミ・ペイシャプル・アウルムレガリア)
13件すべてがオッズ28〜60倍台、人気は8〜12番人気
```
累計は**104件、的中0**になった。
```
全期間累計:104件 的中0 回収率0%
札幌除外前(8/8〜8/30):43件 的中0
札幌除外後(9/5〜10/25):61件 的中0
全ハズレ確率(バックテスト的中率9.6%想定)
104件すべて :約0.003%
札幌除外後61件 :約0.2%
記録の抜け:10/24・10/25のシャドー記録がなかった
結果を集計する段階で、全出走馬の予測確率を残す `shadow_logs` に、この週末の分が保存されていないことに気づいた。
買い目リストは出ているのに、シャドー記録だけがない。原因を調べたところ、実行ログの最後(STEP 13)に、記録の保存処理が置かれていた。実行を途中でやめると、買い目は出ても、この記録だけが残らない。10/25の実行は途中で止めていた可能性が高い。10/24については、断定できていない。
出馬表が残っていたので、同じコマンドを最後まで実行し直して、記録を作り直した。
```
✓ 再実行で出た推奨馬は、当日の買い目リストと完全に一致した(10/24:5頭、10/25:8頭)
✓ 2日分とも、現行モデルとPhase 4の両方の確率が、正しく保存された
```
再発防止として、実行は必ず `COMPLETE` の表示まで待つことにした。
---
新しい発見:確率が「段差」になっていた
作り直した記録を含め、10/10〜10/18の実際の記録(1,902頭)を調べ直すと、現行モデルの出力に、おかしな偏りがあった。
```
現行モデルの出力(raw_score)
異なる値の数 :122種類(1,902頭に対して)
最も多い同一の値(0.119028):1,109頭(58%)
```
**58%の馬が、まったく同じ確率を付けられていた。**
しかも、この偏りが、推奨馬の選ばれ方に直結していた。
```
推奨された24頭のうち
同じ値(0.119028)の馬:16頭(67%)
推奨馬のオッズ :25.6〜58.7倍
```
何が起きているのか。確率がほぼ同じ馬が大量にいる中で、レース内の正規化を経ても、確率の差は小さいままになる。すると、EV(確率 × オッズ)は、オッズの高さでほぼ決まる。EVが3.50〜5.00の条件を満たす馬は、結局、「オッズの高い馬」になる。
つまり、推奨の多くは、モデルが馬を見分けた結果というより、**同じ確率の馬の中から、オッズが高い馬を拾っていた**ことになる。
原因は、リークのあるデータで確率を補正する処理(Isotonic Regression)が、確率を粗い段差にしてしまうことだと考えている。これは#32で書いた構造的な問題の、別の側面だ。
---
更新した評価:現行モデルは市場より有意に悪い
シャドー記録が7日分、2,824頭・216レースになったので、評価を更新した。
```
レース単位の対数損失(小さいほど良い)
市場 :2.0167
現行モデル :2.4814 (市場との差 +0.4647、95%区間 +0.3672〜+0.5623)
```
現行モデルは、市場より**有意に悪い**。市場に少しでも混ぜると、混ぜた分だけ悪化する傾向も、前回と変わらない。
---
Phase 4:2日分・72レースの初期評価
訓練の最終日(10/18)より後の日、10/24と10/25の2日分(72レース・929頭)で、Phase 4 を評価した。
```
レース単位の対数損失
市場 :2.0190
Phase 4 :1.9956 (差 -0.0233、95%区間 -0.0504〜+0.0037)
現行モデル :2.4651 (差 +0.4461、95%区間 +0.2968〜+0.5955)
```
Phase 4 は市場との差が0を跨いでおり、**市場と同等か、まだ判断できない**。72レースでは、結論を出せない。
ただ、同じ72レースで比べると、Phase 4 は現行モデルより大きく良い。確率の校正も、引き続きおおむね良好だった。
```
Phase 4の確率帯 予測平均 実際の勝率
8〜12% 9.6% 9.9%
12〜20% 14.8% 16.2%
30%以上 38.3% 37.5%
```
Phase 4 の評価件数(929頭)は、目安の約3,000頭には、まだ届いていない。
---
購入方針について
現行ルール(EV3.50〜5.00)の購入をどうするかは、まだ決めていない。決めるための材料は、揃ってきた。
```
・実運用:104件・的中0(全ハズレ確率 約0.003%)
・時間分割の検証:同じ方式の再現で、回収率が48〜58%
・シャドー記録:市場より有意に悪い(差 +0.46)
・推奨の3分の2が、「同じ確率」の馬から、オッズの高さで選ばれていた
・Phase 4:市場と同等かもしれないが、まだ72レース分しかない
```
この材料をもとに、次回までに方針を決めて、報告する。
---
Data Scientistとしての振り返り
今回の学びは、二つある。
一つ目。**出力の「分布」を、一度は自分の目で見ること。** 今回の偏りは、記録を作り直す過程で、たまたま気づいた。122種類しか値がないという事実は、最初から見ていれば、すぐに分かることだった。平均や回収率だけを見ていると、こうした偏りが隠れる。
二つ目。**記録の抜けは、静かに起きる。** 買い目は普通に出てくるので、別の処理が止まっていても気づきにくい。毎週の確認事項として、実行ログの最後の `COMPLETE` と、`shadow_logs` のファイルの有無を、見ることにした。
---
## 技術ノート
### 実運用累計成績(2026年10月26日時点)
```
全期間累計:104件 的中0 回収率0%
札幌除外前(8/8〜8/30):43件 的中0
札幌除外後(9/5〜10/25):61件 的中0
```
### 統計的評価(的中率9.6%想定)
```
104件すべてハズレ :約0.003%
札幌除外後61件すべてハズレ:約0.2%
```
### シャドー記録の評価(2026年10月10日〜25日)
```
現行モデル(7日分・2,824頭・216レース)
市場との対数損失の差:+0.4647(95%区間 +0.3672〜+0.5623)
Phase 4(訓練最終日10/18より後の2日分・72レース)
市場との対数損失の差:-0.0233(95%区間 -0.0504〜+0.0037)→ 判断できない
```
---
## 次回の予定
Phase 4 の記録を、毎週積み上げる。購入方針も、次回までに決めて報告する。
---
**【競馬AI開発記】次回予定:**
- Day 34:購入方針の決定と、Phase 4 の追加データ