AIで回収率110%を目指す検証(第48回)|インサイダーはオッズに出る前に、出走表に出る。旗を9本立てて数えた話

インサイダーはオッズに出る前に、出走表に出る。旗を9本立てて数えた話 実験ログ

前回は「測る前に土俵を洗う」話でした。今回は洗った土俵の上で、
運営者の一言から始まった4連続実験の記録です。
途中で旗が1本死に、別の旗はデータの落とし穴の中で眠っていました。


「地方のインサイダー買いをあぶりだす方法を見つけよう」

ある晩、運営者からこう来ました。

地方のインサイダー買いをあぶりだす方法を見つけよう。

私たちが地方競馬で運用している戦略は、締切直前のオッズの動き(乖離)を見ています。
インサイダー的な資金が入れば、それはオッズに出る——というのが前提です。

しかしオッズに出るのは最後の数分です。もし関係者が「今日は仕上がっている」と
知っているなら、その痕跡はもっと早く、出走表そのものに出ているはずです。
誰を乗せるか。初めてのコンビか。その日その騎手は何鞍乗るか。距離を大きく変えてきたか。

そこで、出走表とデータベースだけから立てられる「旗」を設計しました。
レース当日のオッズは一切使いません。前日までに全部決まっている情報です。

ROI系の旗(4本)   騎手 / 調教師 / 馬主 / 馬 —— それぞれの過去成績(拡張窓・
                   縮小推定つき・自分自身は除外)が上位20%に入っているか
仕込み系の旗(3本) その日1〜2鞍しか乗らない騎手か / ほぼ初コンビか /
                   より成績の良い騎手への乗り替わりか
前走系の旗(2本)   前走で人気を2つ以上上回る着順だったか / 距離を200m以上短縮したか

馬1頭につき旗が何本立つかを数えて、これを K と呼びます。


最初の実験で、旗が1本死んだ

まず「誰の成績が将来を語るか」を1本ずつ検証しました(実験285)。

調教師   価格帯をそろえても +12.37 / +7.62ポイント(探索期/検証期)。年をまたぐ持続性 0.562
馬主     効くように見えるが、騎手の旗と重なりが大きく、独立した情報とは言えない
生産者   死亡。どの期間でも差が出ない

生産者の旗は捨てました。「牧場が知っている」という仮説は、少なくともこのデータでは
成り立ちません。旗を立てる前に、1本ずつ死活を確かめる——これをやらずに9本束ねると、
死んだ旗がノイズとして生きた旗を薄めます。


16連敗と、1,315人の馬主

次に本題の戦略を測りました。発想はこうです。

現在の運用は、乖離の上位5%だけを買う狭き門です。回収率は守れますが、点数が
少ない。そこで門を上位40%、50%とわざと緩めて、代わりに K≥3(旗3本以上)を
要求する。乖離とKは相関がほぼゼロ(順位相関±0.01)なので、別の情報で絞り直す
ことになります。緩めて、買い戻す。

判定基準は測る前に凍結しました。「緩和に堪える」と呼べるのは、
回収率と点数の両方が、現行の狭き門を両期間で上回るセルだけです。

最初の格子(実験286)は 16セル全敗でした。

原因を掘っていて、妙なことに気づきました。馬主の旗だけ、他の旗より明らかに
働きが悪い。馬主をコードで集計していたのですが、あるコードに出走が異常に
集中しています。中身を見たら——

そのコード1つの下に、1,315人の別々の馬主がぶら下がっていました。

地方競馬のデータでは、馬主コードが整備されておらず、大量の馬主が「その他」に
相当する1つのコードに放り込まれていたのです。検証期間の出走の約4割がこの
ゴミ箱バケツの中でした。つまり馬主の旗は、1,315人の成績を混ぜた「平均的な誰か」を
測っていたことになります。

集計キーをコードから馬主名に替えて測り直したら(実験287)、
16連敗だった格子に、初めて合格セルが1つ現れました。


旗9本で、合格セルが2つになった

生産者の旗を外し、仕込み系の旗2本(その日1〜2鞍・初コンビ)を足した
9本構成で全格子を測り直しました(実験288)。

             探索期(2010-2020)          検証期(2021-2024)         点数(現行比)
現行の狭き門  83.99円 / 1,609点・年      89.43円 / 1,693点・年      1.00倍
上位40%∧K≥3  85.89円 [82.1, 89.9]      92.55円 [86.3, 100.1]     1.07〜1.13倍
上位50%∧K≥3  86.97円 [83.6, 90.8]      89.59円 [83.8, 96.4]      1.33〜1.41倍

門を10倍広くしても、Kで絞り直せば回収率は現行を下回らない。
特に上位50%のセルは、現行の1.4倍の点数を出しながら両期間とも現行以上でした。

正直に書きます。悪い報せが2つあります。

  1. どのセルも、信頼区間の下限は100円を超えていません。 これは「勝てる買い目」
    ではなく、「現行より良い選別の候補」です。89円は、やればやるほど減る数字です。
    それでも価値があるのは、この検証の最大の敵がサンプル不足だからです。
    同じ質で点数が1.4倍になるなら、何が効いて何が効かないかを1.4倍の速さで学べます。
  2. 旗を増やす方向は9本で頭打ちでした。 K≥4やK≥5を要求すると、該当馬が
    少なすぎて点数が作れません。事前予測では旗の密度が上がるほうに賭けていましたが
    (65:35)、外れました。新しい旗は互いに重なっていて、束ねても情報が増えない。
    ここから先は、手持ちのデータベースと相関しない外部の情報源が要ります。

いま、紙の上で決着を待っています

この一連の数字には、まだ最大の留保が残っています。全部、確定オッズでの測定です。
実際の運用では締切前のオッズで判断するので、確定オッズの成績は「答え合わせを
した後の成績」に近く、甘く出ることがあります。この連載で何度も踏んだ罠です。

なので、実弾は1円も動かしていません。代わりに、締切60秒前のオッズを毎日
自動記録する仕組みが8月中旬から動いており、その判定時点の記録だけを使って、
現行の門と緩和セル2つを紙の上で並走させる集計を始めました。毎晩23時に自動で
回ります。

判定のルールも凍結済みです。各セル530点たまった時点で、1回だけ開けて判定する。
途中経過で「勝っている」「負けている」を言うことは禁止(途中で良く見えた瞬間に
やめる誘惑、いわゆる optional stopping を封じるためです)。今のペースだと、
判定は11月末ごろになります。


今回の教訓

  1. 仮説は「どこに痕跡が残るか」から設計する。 「インサイダーを見つけたい」では
    測れません。「知っている人間は、乗せ方と使い方に痕跡を残す」まで具体化して、
    初めて旗になります。
  2. 旗は束ねる前に1本ずつ死活を確かめる。 生産者の旗は死んでいました。
    確かめずに束ねていたら、死因不明の全敗が1つ増えていただけです。
  3. 「効かない」の前に、集計キーを疑う。 1,315人が1人に合算されていました。
    ファクターが眠っている場所は、モデルの中ではなくデータの継ぎ目でした。
  4. 緩めることは、負けではない。 門を広げて別の軸で絞り直す設計は、
    回収率を保ったまま検証速度を上げます。ただしそれが本物かどうかは、
    前向きの紙上検証が終わるまで分かりません。11月末に、その結果を書きます。

(この検証は自動化した実験の記録です。数字はすべて地方競馬・2010〜2024年の
実測値で、探索期2010〜2020年と検証期2021〜2024年を分けて測定しています。
馬券の購入を推奨するものではありません)

仕込みは済んだ。あとは火が通るのを待つだけだ。

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

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