AIでJRAの回収率110%を目指す検証(第9回)|惜しい数字で、決めた線を動かさない

惜しい数字で、決めた線を動かさない 実験ログ

前回の分析で、ひとつだけ意味のありそうな傾向が残りました。出走頭数が多いレースほど、自作モデルが市場に上積みできているように見える、というものです。ただしこれは結果を見たあとに気づいた傾向でした。今回は、それを未使用のデータで一度だけ検定します。

前回の宿題

第8回の検証で、モデルの上積み(市場のオッズに自作モデルをどれだけ足せるかを表す重み)をレースの区分ごとに測りました。ほとんどの区分でこの重みは負でした。モデルを足すと予測はむしろ悪くなる、という意味です。

そのなかで、出走頭数だけが規則的に並んでいました。

出走頭数 モデルの上積み t値
〜10頭 −0.150 −2.88
11-14頭 −0.059 −1.58
15頭〜 +0.047 +1.54

頭数が増えるほど改善し、15頭以上で初めて正に転じています。機構としても筋は通ります。出走馬が多いほど検討すべき馬が増え、多くの人の注意は上位人気に集まります。注目の薄い馬の評価が甘くなるなら、機械的に全馬を同じ手順で評価するモデルの相対的な立場は良くなるはずです。

問題は、これが結果を見たあとに気づいた傾向だったことです。

事後に気づいた傾向を、そのまま信じてはいけない理由

区分を20通り見れば、そのうち1つか2つが偶然良く見えるのは当たり前です。20通りのうち最も良かったものを取り出して「発見した」と言うのは、サイコロを20回振って6が出た回だけを報告するのと変わりません。

さらに悪いのは、そこから条件を足していく手順です。「多頭数が良いなら、多頭数のダートはどうか」「多頭数のダートの長距離は」と掛け合わせれば、数字はいくらでも良くなります。件数が減って偶然の幅が広がるだけなのですが、表面上は精度が上がったように見えます。

この検証では、有望に見えた数字が消える経験を既に3度しています。

回 見かけ 正しく測ると 原因
第2回 回収率98.2%(107件) 74.5%(1,788件) 標本不足
第7回 上積み +0.371 +0.042 学習データ上の予測を使っていた
第8回 複勝率 14.6%→25.6% 消滅 32.7%のレースに欠損値が混入

3度とも、原因は分析手法そのものより判定基準を結果のあとに決めていたことにあります。だから今回は、順序を逆にしました。

事前登録

スクリプトを書く前に、以下を文書として確定しました。実行後にこの文面は一切変更していません。

項目 内容
仮説 15頭以上のレースで、モデルの上積みが正である
帰無仮説 モデルの上積みは0以下である
検定 片側z検定、有意水準5% → 棄却域 z > 1.645
データ 2026年1月以降のみ。上積みの推定に一度も使っていない期間
モデル仕様 前回と完全に同一。学習は2025年末まで
最小件数 5,000頭。下回れば「検定不能」として終了
掛け合わせ 行わない。他の区分の数値は出力もしない
やり直し なし。検定は1回限り

結果の解釈も先に決めました。基準を満たせば回収率ベースの検証に進む。満たさなければこの方向を閉じる。それだけです。

実装面でも、誘惑を断つ工夫を入れました。検証用のスクリプトは、他の区分の数値を計算はしても表示しないようにしています。頭数の境界も引数で変更できません。数字が見えれば必ず解釈したくなるので、見えないようにするのが確実です。

結果

項目 値
対象 15,608頭 / 972レース(最小件数はクリア)
モデルの上積み +0.0775(標準誤差 0.0550)
市場の重み +1.1240
z値 +1.409(片側 p = 0.079)
95%信頼区間 −0.030 〜 +0.185

棄却域は z > 1.645 でした。1.409 は届いていません。

事前登録どおり、この仮説は棄却します。閾値の変更も、条件の掛け合わせも、再検定も行いません。

歯切れの悪さについて

正直に書くと、これは気持ちの良い否定ではありません。

符号は再現しました。 前回の +0.047 に対し、まったく期間の重ならないデータで +0.0775 です。点推定はむしろ大きくなっています。「多頭数では群衆の注意が分散する」という説明の筋も通ったままで、これが偶然だと断定できる材料もありません。

p値は0.079です。よく使われる0.05という区切りとの差は、大きくありません。

それでも棄却するのは、次の2つの理由からです。

理由1:線を動かした瞬間、すべての検証が無意味になる

0.079を「惜しい」と読んで基準を緩めるのなら、最初から基準を決めておく意味がありません。事前登録の価値は、都合の悪い結果が出たときに守られることだけにあります。都合の良いときだけ従うルールは、ルールではなく飾りです。

ここで緩めれば、過去3回の失敗に4回目を足すことになります。

理由2:仮に有意でも、勝てる大きさではない

こちらのほうが実質的な問題です。

上積み +0.078 は、予測をわずかに補正する程度の量です。そして、この母集団そのものが不利でした。

項目 値
15頭以上のレースの複勝を全点買いした回収率 69.5%(95%信頼区間 65.1〜73.9、15,608点)

複勝の控除率は約20%なので、市場平均は80%前後になります。多頭数のレースはそこからさらに10ポイント低いという結果です。頭数が多いほど1点あたりの的中率が下がるためで、そもそも母集団として不利な場所でした。

ここから100%まで、30ポイント以上の距離があります。小数点第2位の係数で埋まる差ではありません。

係数が正であることと、控除率を超えることは、別の問題です。 事前登録の判定文に念のため書き添えたこの一文が、そのまま結論になりました。

再検定が正当になる条件

この仮説を将来もう一度検定してよい条件も、記録として残しておきます。

2027年以降の、今回まったく使っていない期間を対象に、同一の事前登録(正の符号、片側z>1.645、最小5,000件、掛け合わせなし)で検定する場合に限ります。今回のデータでの再検定、閾値の変更、条件の追加は、いずれも行いません。

符号が2期間で再現したという事実は残ります。3期目で再現し、かつ基準を超えるなら、そのときは本物である可能性が出てきます。その判断は、そのときのデータに任せます。

まとめ

項目 結果
検定した仮説 15頭以上でモデルの上積みが正である
事前登録 実行前に確定・以後変更なし
モデルの上積み +0.078(z = 1.409、p = 0.079)
判定 棄却(棄却域 z > 1.645 に未達)
符号の再現 あり(+0.047 → +0.078)
母集団の回収率 69.5%(市場平均より約10ポイント低い)
再検定 2027年以降の未使用データでのみ

これで、この検証で試した系統は11になり、すべてが否定されました。JRA-VANの公開データだけで市場を上回る方法は、今のところ見つかっていません。

ただ、今回いちばん価値があったのは検定結果ではなく、惜しい数字を前にして基準を動かさなかったという事実そのものだと考えています。勝てる手法が見つかったときに、それを本物だと信じられるかどうかは、負けたときに何をしたかで決まります。


本記事はAIが下書きを生成し、人間が公開可否を判断しています。掲載した数値はすべて実データによる分析結果であり、恣意的な抽出は行っていません。本記事は情報提供を目的としたものであり、馬券の購入を勧誘するものではありません。

惜しいは、惜しい。それ以上でも、それ以下でもない。

この後の実験は、地方競馬に舞台を移しています。

地方競馬の市場について測った事実は連載「地方競馬の解体新書」に、当方の価格モデルによる買い目の配信(準備中)は先行案内のページにまとめています。