競馬AIをつくる

クッション値は、効いているようで効いていなかった — 馬場補正の作り直し

JRAが芝のクッション値を公表するようになって、数年が経つ。簡易型硬度測定器のクレッグハンマーで2.25キログラムの重りを45センチメートルの高さから自由落下させて馬場に衝突した際の衝撃加速度を測定する。含水率も併せて公開されている。

馬場の状態を数字で受け取れるようになったのだから、これをタイム補正に使わない手はない。私もそう考えて、スピード指数の馬場補正をクッション値に基づいて組んだ。

この設計は、実測の検算にかけたところで作り直すことになった。 そして作り直す過程で、「その日の馬場がどれだけ水を含んでいるか」よりも強く効く要因が別にあることが見えてきた。

作り直しの必要に気づいた検算

自作の指標が意図どおりに動いているかを、どうやって確かめるか。私が使っている方法のひとつが、勝ち馬の平均を条件別に並べるというものだ。

考え方は単純である。各レースで1着になった馬は、その日その条件で最も強かった馬だ。良馬場だろうと不良馬場だろうと、勝ち馬の平均的な指数は同じくらいになるはずである。もし馬場状態によって系統的に変わるなら、それは馬の能力ではなく補正のほうのずれを見ていることになる。

芝で計算すると、こうなった。

馬場状態別の勝ち馬平均SI
馬場状態別の勝ち馬平均SI

良馬場101.1、稍重95.3、重93.1、不良85.3。良と不良で15.8ポイントの落差である。

指数が10ポイントも違えば、評価はまるで変わる。つまり私の指数は、道悪で勝った馬を組織的に低く評価していた。泥んこの中を勝ち抜いた馬ほど、実力より低く記録されていたことになる。

道悪巧者という言葉は競馬に古くからある。その馬たちを、私の指数は拾えていなかった。

なお同じ計算をダートで行うと、良100.7、不良101.8。ほぼ平らである。ずれていたのは芝だけだった。

原因——係数が4倍近く過大だった

原因を探すと、係数そのものにあった。

当時の実装は、クッション値の基準からのずれに一律の係数を掛けてタイムを補正していた。芝の係数は −0.870。クッション値が1違えば0.87秒分補正する、という強さである。

そこで、良馬場のデータだけを使って「クッション値が1違うと実際に何秒変わるか」を測り直した。出てきた値は −0.24 だった。

使っていた0.87は、実測の約3.7倍である。良馬場において、実態の4倍近く補正をかけていたことになる。

そして道悪側では逆に、補正が足りていなかった。硬さの数値だけでは、水を含んだ馬場で起きていることを表現しきれていなかったのである。

作り直し——硬さから「状態」へ

作り直しの方針は、発想を逆にすることだった。

クッション値という連続量からタイム差を計算するのをやめ、とりあえず、良・稍重・重・不良という状態そのものに、それぞれ秒の値を割り当てることにいったん戻している。「重馬場なら1600m換算で何秒遅くなる」と、状態を直接タイムに翻訳する。

クッション値の役割は降格させた。良馬場の中での細かい調整にだけ使う。良馬場と一口に言っても硬さには幅があるので、そこだけを実測値で微調整する。

さらに、この秒の値は競馬場ごとに分けて持つことにした。同じ「重」でも、土質も水はけも競馬場ごとに違うからだ。実際、芝の重馬場で比べると東京が0.96秒、函館が2.09秒と、2倍以上の開きがあった。施行数の少ない条件は、全国平均へ寄せて安定させている。

作り直した結果、勝ち馬の平均は良99.5、稍重99.2、重101.0、不良103.4。ほぼ平らになった。全体の平均指数は85.54のまま動いていない。 指数を底上げしたのではなく、条件による偏りだけを取り除いたということである。

芝とダートは、逆を向いている

秒の値を並べると、競馬をよく見る人には見慣れた事実が、数字の形で現れた。

馬場状態ごとの秒オフセット
馬場状態ごとの秒オフセット

芝は馬場が悪くなるほど遅くなる。不良では3.18秒も遅い。

一方ダートは逆で、悪くなるほど速くなる。不良で1.26秒速い。砂は水を含むと締まって固くなり、脚が沈まなくなるためだ。乾いた砂のほうが走りにくい。

中継で「今日のダートは湿って時計が速い」と言われるのは、まさにこのことである。感覚として共有されてきたことが、そのまま数値として出た。

同じ「道悪」という言葉で、芝とダートは反対のことを指している。 一律の係数で処理していた頃は、この当たり前の事実すら表現できていなかった。

含水率は、効かなかった

ここからが、この作業でいちばん意外だった部分である。

状態を秒に翻訳する方式にしたうえで、さらに精度を上げられないかを試した。候補として挙げたのが含水率だった。クッション値が硬さを測るのに対し、含水率は水分量を直接測る。道悪の程度を細かく表現できるはずだ、と考えた。

結果は、採用に至らなかった

芝では、クッション値と同時に投入すると含水率の係数がほぼゼロになった。説明力の増加もごくわずかで、独立した情報をほとんど持っていない。道悪に限定しても符号は変わらなかった。ダートでは、そもそも馬場状態の区分自体がほぼ含水率で決まっているため、連続量として別に入れる意味がなかった。

道悪でクッション値を使う案も試したが、こちらは検証用データで成績が悪化した。手元のデータに合わせ込んでいるだけで、汎化していなかった。

つまり、その日その瞬間の馬場の水分をどれだけ精密に測っても、タイムの説明はそれ以上良くならなかった

効いたのは、走られたことによる損耗だった

代わりに効いたのは、まったく別の軸だった。開催が進むにつれて芝が傷んでいくという要因である。

競馬は同じ競馬場で何週も続けて開催される。その間、同じ芝コースを何百頭もの馬が走る。掘り返され、踏み固められ、傷んでいく。とくに雨で水を含んだ馬場を走られれば、傷みは加速する。それでも天気が回復すれば、表示は同じ「良馬場」に戻る。

つまり同じ「良」の中に、開催初日の良と、最終日の良という別物が混在していた。

これを競馬場ごとに測った。

開催日ごとの損耗
開催日ごとの損耗

福島が1日あたり0.159秒、札幌0.139秒、新潟0.130秒。開催が10日進めば1秒以上遅くなる計算になる。

対して東京・京都・阪神はほぼゼロだった。芝が傷まないからではない。この3場は敷地が広く、仮柵を動かして走る場所をずらせるからだ。傷んだ内側を使わずに済むので、時計に損耗が出ない。ただし傷んだ場所と新しい場所がコース内に併存するため、内外の有利不利としては現れる。時計ではなくトラックバイアスの側に出る、ということである。

なお、全競馬場をまとめて一律に損耗を補正すると、この信号は出てこない。開催が進むことと季節が進むことが重なり、どちらの影響を見ているのか分離できないためだ。競馬場ごとに分けて初めて、はっきりした信号として取り出せた。

「その瞬間の状態」より「積み重なった履歴」

整理すると、この作り直しで分かったのはこういうことだ。

タイムに効くのは、その日その瞬間に馬場がどれだけ水を含んでいるかではなかった。効いたのは、良・稍重・重・不良という状態の区分と、開催が進むにつれて蓄積してきた傷みである。

前者は瞬間の観測値、後者は履歴の積分だと言ってもいい。精密な観測装置の値より、「何日ぶん走られたか」という単純な数え上げのほうが効いた。

なぜか。ひとつには、クッション値も含水率も開催日の朝に1回しか測られないという制約がある。実際に調べると、芝で14.9%、ダートで19.4%の開催日で、馬場状態が日中に変化していた。朝の測定値は、午後のレースの馬場を表していない。

もうひとつは、状態区分そのものが優秀な要約になっているからだと考えている。良・稍重・重・不良は、人間が馬場を見て総合的に判断した結果である。クッション値の数値ひとつより、多くの情報を含んでいる可能性がある。

次に伸ばせる余地

この作り直しは、次の手がかりも残してくれた。

いま実装している損耗は、開催日数に比例するという単純な形をしている。ここに「雨が降った日はより傷む」という交互作用を入れられれば、精度はもう一段上がるはずだ。水を含んだ馬場を走られたときの傷みは、乾いた日より大きいと考えるのが自然である。単純な形で効果が確認できたので、次はここを分けて測る番になる

芝の不良馬場も興味深い変化の途上にある。水はけの改善が進み、芝の不良は近年ほとんど発生しなくなった。2021年に2.0%あったものが、2025年には0.3%である。不良の補正値は古い時期の記録に基づくため、全国平均へ強めに寄せて安定させている。今後さらに事例が減るなら、不良という区分そのものの扱いを見直す時期が来るのかもしれない。

最後に、表題について補足しておきたい。「クッション値は効いていなかった」と書いてきたが、正確には「タイム補正の材料としては、状態区分と損耗のほうが強かった」ということである。馬場の硬さが馬に与える影響そのものを否定するものではない。

おそらく硬さが効くのは、タイムではなく脚質や位置取りの側だろう。硬い馬場と軟らかい馬場では、内と外のどちらが伸びるかが変わる。つまりトラックバイアスとして現れているはずだ。そちらは着手し始めたところで、次に報告できる領域だと考えている。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です