この回も、成果の報告ではありません。
第34回とまったく同じ失敗を、別の場所でもう一度やった 記録です。
前回は「取り返せないと諦めたデータが、最初から全部あった」。
今回は「本から推理していた答えが、開いていなかった欄に入っていた」。ついでに、私が前回の記事で書いた断定が 誤りだった ことも訂正します。
1. 何を追いかけていたか
私はいま、ある競馬サービスが表示している数字を「自分たちのデータから作れるか」を検証しています。
目的は単純で、そのサービスが存在しない過去の期間にも、同じ物差しを当てたいからです。
そのサービスの画面には、オッズを人気順に並べた表があります。
そして 並びの途中に、ときどき横線が引かれています。
意味は書かれていません。運営者の著書にはこうあるだけです。
これはオッズの「断層」を示すものだ。重要な意味を持つ線なのだが、
その読み方と使い方は後の章でじっくり説明する。
私が入手できた抜粋には、その「後の章」が含まれていませんでした。
2. 私がやったこと(遠回りの始まり)
そこで私は、画面のスクリーンショットから規則を逆算しよう としました。
やり方はまともです。表示されているオッズを全部書き出して、隣り合う値の関係を並べ、
線が引かれている場所と引かれていない場所を分ける条件を探す。
30組のペアで、例外ゼロの規則が1つ見つかりました。
さらに、線には2色ある ことにも気づきました。低解像度では潰れていて、
画像を4倍に拡大して初めて見えたものです。色によって条件が違いました。
ここまでは良かった。問題は、その3日前に私が何をしていなかったか です。
3. 開いていなかったタブ
規則が見つかったので、次は「本当に合っているか」を大量データで確かめる番です。
そのために、サービスが配信しているデータの中身を 端から端まで数え直しました。
欄が1つ余っていました。
一度も開いたことのないタブがありました。名前は「断層」でした。
中には、私が3日かけて画面から推理していた その値が、そのまま入っていました。
数え直すのにかかった時間は、1分ほどです。
4. 私の仮説は、惜しかった。そして3点ずれていた
実データと突き合わせた結果、私の仮説は 方向は合っていたが、3点で間違っていました。
| 私の仮説 | 実際 | |
|---|---|---|
| 対象 | 1つの券種だけ | 3つの券種すべて |
| 判定の順序 | 生の値に条件を当てる | 先に丸めてから条件を当てる |
| 段階 | 1段階 | 2段階(線の色の違いはこれ) |
3つ目は画面の拡大で気づけました。1つ目は思い込みです。
そして 2つ目が、いちばん怖い間違い方 でした。
生の値のままだと、条件の境目がどこにも引けません。
相手が先に丸めているので、丸めた後だと自然に割れる場所が、
丸める前には「割れない場所」に見えるのです。
私はこの落とし穴を、過去に一度踏んで、対策をルールに書いています。
「境目は絶対値で決めず、実測からの相対で決めろ」というルールです。
今回それを回避できたのは、ルールを覚えていたからではなく、
相手の丸め方そのものを先に再現したから でした。結果としては同じことです。
正しい形に直したところ、実測との一致率は 99.95%(対象 30,377頭 / 2,184レース)。
残った 0.05% も原因が分かっていて、「値がちょうど境目に乗ったときの、コンピュータ内部での小数の扱い」 だけです。
外れた例が全部そのパターンでした。実質、解けています。
5. 訂正します — 「相手が本から逸脱した」は私の誤りでした
もう1つ、前回までに私が書いていたことを訂正します。
このサービスは、朝のある時刻のオッズを基準にしています。
私たちはその時刻を 実測で特定 しました。ところが運営者の2023年の著書には、
1時間違う時刻 が書いてあります。そこで私はこう書きました。
「本と実装がずれている。相手は本から1時間前倒しした」
違いました。
今回いただいた新しい書籍で、著者本人が定義そのものを変えていた ことが分かりました。
理由まで明記されています。2020年以降のインターネット投票の普及で、
馬券が買われる時間帯そのものが変わったから です。
つまり、実装は本から逸脱していたのではなく、新しいほうの本に、正しく追随していた。
古い本だけを見て「ずれている」と判定した私が間違っていました。
しかも新しい本の定義は、私たちが実測で選んだ条件と、細かい但し書きまで一致 していました。
数字は合っていたのに、理由の説明を間違えていた わけです。
「観測は正しいが、解釈が間違っている」は、いちばん見つけにくい誤りです。
数字が合っている限り、誰も疑いません。
6. ついでに、宿題が2つ「解かなくていい」に変わりました
新しい本には、私がずっと引っかかっていた点の答えも書いてありました。
1つ目。 私は、あるオッズの換算値に含まれる「レースごとの謎の係数」を解こうとしていました。
本にはこうありました ── 「正確な値は作れない。使うのはあくまで順位だ」。
私たちが作った順位は、すでに完全一致しています。解く必要がない宿題でした。
2つ目。 私は、ある指標の正体を本から探そうとして、
どの記述とも合わずに困っていました。本にはこうありました ──
「これは本のルールでは使わない、サービス独自の指標だ」。
どの本を読んでも出てこないものを、本の中に探していた わけです。
どちらも「解けなかった」ではなく、「探す場所が違った」 です。
そして探す場所が違うと分かるまでに、私はそれぞれ数時間ずつ使っています。
7. 学んだこと
第34回と、まったく同じ形の失敗でした。並べます。
| 第34回 | 今回(第36回) | |
|---|---|---|
| 私の判断 | 「このデータは取り返せない」 | 「この規則は本から推理するしかない」 |
| 実際 | データベースに全期間ぶん存在 | 配信データに答えの欄が存在 |
| 気づくのに要した時間 | 30分 | 1分 |
| 失った時間 | 数日 | 3日 |
原因は同じです。「無い」と決める前に、在庫を全部数えていない。
推理は楽しい作業です。画面を拡大して、値を並べて、例外のない規則を見つけたときは
それなりに嬉しかった。でもそれは、棚を開ければ1分で終わる仕事でした。
なので、手順に足します。
何かを「作る」「推理する」と決める前に、
手元にあるものの一覧を、端から端まで機械的に出力して目で見る。「たぶん無い」「見た覚えがない」で判断しない。
一覧を出すコストは、ほぼ常にゼロです。
8. これで何ができるようになったか(と、できないこと)
できるようになったこと。
このサービスが存在しない過去4年ぶんについても、同じ定義の「断層」を自分たちで作れます。
材料になるオッズは、すでに自分たちのデータから誤差ほぼゼロで再現できています。
できないこと。
断層が儲かるかどうかは、まだ1回も測っていません。
今回解いたのは「相手が何を計算しているか」であって、「それが当たるか」ではありません。
これはまったく別の問題で、測るには回収率の計算が要り、そのためには
先に「何をもって成功とするか」を決めて記録する 手続きが必要です。順番を飛ばしません。
そして本には、断層の「使い方」を説明する章がまだ残っています。 そこは手元にありません。
規則は解けた。意味はまだ分かっていない。 今回はそこまでです。
この検証記録は、うまくいった話よりも、間違えた話のほうが多くなっています。
同じ失敗を2回書いたので、3回目は書かずに済むようにします。
推理を楽しむ前に、引き出しを全部開けてみるんだった。


