「ボートレースはスリット(スタート通過時の前後関係)で展開と結果が決まる」という
定説を、data/results/realtime/ の実測 スタートタイミング(ST) で定量検証した記録。
本書は検討ドキュメント(pre-design)であり、確定仕様ではない。
st_estimation.md(予測 ST の改善検討)、
docs/data/estimate.md の v5_slit / 退役した v3_tenkaidata/results/realtime/ 2025-11-01〜2026-08-09 の 41,776 レース
(6 艇すべての ST が揃い、1 着艇が進入コースに紐付いたもの)Nコース_スタートタイミング は大時計 0 秒からの遅れ秒。スタート艇速を
約 50km/h = 13.9 m/s とすると ST 差 0.01 秒 ≒ 0.14 m、艇長 3m の
1 艇身差 ≒ ST 差 0.216 秒、半艇身 ≒ 0.108 秒。
レース内平均 ST を基準にした前出量(m)を各コースの スリット位置 とする。
lead[c] = (mean(ST) - ST[c]) * 13.9 # 正 = 平均より前
gap_in[c] = lead[c] - lead[c-1] # 正 = 内隣艇より前 (= まくり圏)
in_margin = lead[1] - max(lead[2..6]) # 正 = 1コースがスリット先頭
spread = (max(ST) - min(ST)) * 13.9 # スリットの縦の伸び
強さpt に足すと log loss -0.143 と、
このリポジトリの他のどの特徴量よりも大きい。全国平均ST(実測との相関 0.21〜0.25)と スタート展示ST(相関 0.05)しかなく、
これで組んだスリットは実測スリットの利得の 12% しか回収できない。in_margin と先行勢の位置で 6 分類したもの。定説どおりの傾向がきれいに出る。
| 隊形 | 占有 | 逃げ | まくり系 | 差し | 1着=1C | 2C | 3C | 4C | 5-6C |
|---|---|---|---|---|---|---|---|---|---|
| ほぼ揃い (±0.6m) | 56.7% | 64.0% | 17.8% | 11.7% | 66.4% | 11.6% | 10.2% | 6.4% | 5.4% |
| イン半艇身遅れ / センター先行 | 17.9% | 36.1% | 40.7% | 15.2% | 39.0% | 16.8% | 18.3% | 18.6% | 7.3% |
| イン半艇身遅れ / 外(5-6)先行 | 12.5% | 45.6% | 36.5% | 10.6% | 48.1% | 11.4% | 13.0% | 10.5% | 17.0% |
| イン明確先手 (+0.6m 以上) | 5.4% | 71.9% | 12.1% | 7.8% | 73.2% | 9.2% | 8.5% | 5.0% | 4.0% |
| イン大幅遅れ / 外(5-6)先行 | 3.9% | 18.9% | 64.0% | 10.1% | 20.9% | 17.3% | 17.1% | 20.2% | 24.6% |
| イン大幅遅れ / センター先行 | 3.7% | 8.0% | 70.9% | 13.1% | 9.5% | 26.5% | 24.8% | 29.0% | 10.2% |
「イン大幅遅れ / センター先行」では 1 コースの勝率が 9.5%(全体 55.7% → 1/6 以下)まで落ち、 まくり系決着が 71%。逆に「イン明確先手」なら逃げ 72%。スリットは決着を実質的に決めている。
in_margin(1 コースが 2〜6 コース最先行艇より前に出ている量, m):
| in_margin | n | 1着=1C | 逃げ | まくり系 |
|---|---|---|---|---|
| < -3.0m (1 艇身以上遅れ) | 389 | 3.1% | 2.6% | 83.8% |
| -3.0 〜 -2.0m | 1,616 | 14.1% | 12.1% | 69.3% |
| -2.0 〜 -1.25m | 5,534 | 30.5% | 28.1% | 50.3% |
| -1.25 〜 -0.6m | 8,314 | 47.9% | 45.1% | 34.2% |
| -0.6 〜 0m | 15,443 | 63.1% | 60.5% | 20.3% |
| 0 〜 +0.6m | 8,231 | 72.7% | 70.5% | 13.1% |
| +0.6m 以上 | 2,249 | 73.4% | 72.0% | 12.1% |
1.2m(≒ ST 差 0.09 秒)の遅れで 1 コースの勝率が半分になる。一方 +0.6m を超えると 飽和する(それ以上前に出ても勝率は伸びない)。非対称なので線形特徴量では表現できない。
| gap_in | 2C | 3C | 4C | 5C | 6C |
|---|---|---|---|---|---|
| < -1.25m | 4.4% | 3.2% | 2.8% | 2.5% | 0.4% |
| -0.6 〜 -0.2m | 9.6% | 8.1% | 5.1% | 4.2% | 1.3% |
| -0.2 〜 +0.2m | 12.0% | 10.9% | 6.6% | 5.0% | 1.0% |
| +0.6 〜 +1.25m | 25.4% | 19.9% | 21.7% | 10.5% | 4.9% |
| +1.25m 以上 | 44.5% | 31.5% | 37.9% | 21.5% | 13.5% |
内隣を 1.25m 以上突き放せば、どのコースでも 1 着率が 3〜10 倍になる。 4 コース(カド)は 3 コースより伸びが大きく、カド受けの構造がそのまま出ている。
| spread | n | 1着=1C | 逃げ | まくり系 |
|---|---|---|---|---|
| 〜1.0m | 8,952 | 65.3% | 62.6% | 18.0% |
| 1.0〜1.5m | 10,124 | 58.6% | 56.3% | 24.3% |
| 1.5〜2.0m | 10,653 | 53.2% | 50.7% | 30.2% |
| 2.0〜3.0m | 8,784 | 49.3% | 47.1% | 34.6% |
| 3.0m 〜 | 3,262 | 46.1% | 43.7% | 38.0% |
締まったスリットほどインが残る、というのも定説どおり。
目的変数 = 1 着コース(6 クラス)。時系列 split(前 80% 学習 / 後 20% 検証)、 HistGradientBoosting。特徴量はすべて §1 のスリット量。
| 特徴量 | log loss | 1着的中率 |
|---|---|---|
| コース事前確率のみ(ベースライン) | 1.3423 | 55.1% |
| 全国平均ST から組んだスリット | 1.2805 | 55.2% |
| スタート展示ST から組んだスリット | 1.3373 | 55.1% |
| 全国平均 + 展示 | 1.2806 | 55.2% |
| 実測ST から組んだスリット(上限) | 1.1703 | 58.7% |
強さpt と結合できた 14,736 レース)| 特徴量 | log loss | 1着的中率 | 強さpt比 |
|---|---|---|---|
| コース事前確率のみ | 1.3481 | 54.7% | +0.076 |
強さpt(既存 v1_basic) |
1.2725 | 55.1% | — |
強さpt + 全国平均STスリット |
1.2550 | 55.1% | -0.018 |
強さpt + 展示STスリット |
1.2727 | 55.1% | +0.000 |
強さpt + 実測STスリット(上限) |
1.1291 | 59.7% | -0.143 |
事前に取れるスリット情報は、上限利得 0.143 のうち 0.018(12%)しか回収できていない。 残り 88% は「レース当日にどうスタートが揃うか」という、締切前には存在しない情報。
| コース | corr(展示, 実測) | MAE(展示) | corr(全国平均, 実測) | MAE(全国平均) |
|---|---|---|---|---|
| 1 | 0.048 | 0.114 | 0.209 | 0.053 |
| 2 | 0.049 | 0.116 | 0.233 | 0.051 |
| 3 | 0.027 | 0.117 | 0.211 | 0.052 |
| 4 | 0.053 | 0.119 | 0.250 | 0.053 |
| 5 | 0.015 | 0.127 | 0.237 | 0.054 |
| 6 | 0.059 | 0.136 | 0.216 | 0.060 |
展示 ST の平均は 0.074 秒、本番は 0.158 秒(展示は約 0.08 秒早い)。水準がずれるだけでなく 相関そのものが 0.05 しかない。進入コースが展示と本番で一致するレース(81.5%)に 絞っても変わらない。展示 ST は「その日の勘」の 1 サンプルに過ぎず、本番の攻め方とは別物。
これは
st_estimation.md§1.2 の課題 3(展示 ST 未使用)への回答でもある。 展示 ST を予測 ST に直接混ぜても効果は期待できない。使うなら「展示で大出遅れ = 機力/整備トラブル」のような外れ値検知に限る。
スリット隊形としての再現度:
| 予測元 | スリット順位 Spearman | スリット先頭コース的中率 |
|---|---|---|
| スタート展示ST | 0.082 | 21.2% |
| 全国平均ST | 0.244 | 28.9% |
| (参考) AI 推定 ST の目標値 | 0.296 | — |
先頭コースすら 7 割外す。§3 の表は「隊形が分かっていれば」の話であって、 分からないうちは使えない。
実測 ST に正規ノイズ N(0, σ) を乗せた「疑似予測 ST」でスリットを組み直し、 利得がどこまで残るかを測ったもの(利得率 = 実測スリット利得を 100% とした割合)。
| σ | ST の MAE | 順位 Spearman | 先頭的中 | log loss | 利得率 |
|---|---|---|---|---|---|
| 0.000 | 0.000 | 1.000 | 100% | 1.1823 | 100% |
| 0.010 | 0.008 | 0.914 | 79.9% | 1.1898 | 95% |
| 0.015 | 0.012 | 0.868 | 73.3% | 1.2059 | 85% |
| 0.020 | 0.016 | 0.817 | 67.5% | 1.2230 | 75% |
| 0.030 | 0.024 | 0.726 | 57.3% | 1.2366 | 66% |
| 0.040 | 0.032 | 0.636 | 49.1% | 1.2643 | 49% |
| 0.060 | 0.048 | 0.509 | 40.5% | 1.2912 | 32% |
| 0.100 | 0.080 | 0.354 | 31.6% | 1.3182 | 15% |
利得の 75% を取るには MAE 0.016 秒が必要。現行は 0.053 秒。3 倍以上の改善が要る。 実測 ST のコース内標準偏差は 0.070 秒なので、MAE 0.016 は分散の 95% を説明することに等しい。 選手が当日どこまで踏み込むかは事前情報に存在しないため、この水準は原理的に届かない。
注意: この表は疑似予測 ST に「選手の腕」情報が残らないため、実在する予測子との 単純比較はできない。全国平均 ST の実測利得 0.062(§4)は Spearman 0.244 の 隊形再現力ではなく、大半が「相対的な ST 巧拙 = 選手の腕」の寄与である。 隊形そのものの寄与は表が示すとおりもっと小さい。
点推定のスリットを 1 本描いて展開を断定する路線は取らない。代わりに:
実装計画は
slit_sim_plan.md。 素朴に「推定 ST + 選手の ST 標準偏差」でサンプリングすると隊形が散らばりすぎて 校正が壊れる(ST 分散の 56% はレース共通ショックで、隊形には効かない)。 落とし穴は同計画の §0 にまとめてある。
Racer ST の推定 ST に分散を持たせ(選手 × コース別の ST 標準偏差、現状の点推定に対する追加パラメータ)、1 レースあたり N 本の ST ベクトルを サンプリング。各サンプルを §3.1 の隊形テーブルに当てて集計する。
出力例(数値は所与のイメージ):
イン先手率 42% 逃げ 51%
ほぼ揃い 38% まくり系 28%
イン遅れ 20% 差し 13%
StartPredictionDiagram は現状 1 本の点推定スリットを描いているが、
これは §5.1 のとおり先頭コースを 7 割外す。確率帯(ST の 25-75 パーセンタイル)を
重ねて描くほうが実態に合うcomponent_keys に足す — 事前には隊形が
決まらないので、カテゴリが確率的にぼやけて連続特徴量より情報が落ちる。
退役した v3_tenkai(展開優位pt)が control を下回った理由と同型st_estimation.md の改善は「スリット図の見栄え」としては
意味があるが、回収率の伸び代は §4.1 の 0.018 が上限に近い§3 の条件付きテーブルは、レース後の振り返りでは即使える:
v1_basic 等の A/B 検定の
検出力設計(必要サンプル数)に使える検証スクリプトは本リポジトリには未収録(使い捨て)。再現手順:
data/results/realtime/*/*/*.csv を全件連結し、Nコース_スタートタイミング /
Nコース_艇番 / 1着_艇番 / 決まり手 を取り出すdata/previews/stt/(展示 ST)、data/programs/race_cards/(全国平均 ST)、
data/estimate/v1_basic/(強さpt)を レースコード で結合。
全国平均 ST と 強さpt は艇番順なので Nコース_艇番 で進入コース順に並べ替える前処理の注意:
-(欠測)の行が 1.1% ある。6 艇そろわないレースは除外した0.00 は「実績なし」であって最速ではない。NaN 化が必要