ここに載っているのは、テトラが各レースの投票締切前に自動記録した標準AI予想(つまみ調整前のAI出力そのもの)を、 結果確定後に機械的に照合した検証結果です。アプリでユーザーが実際に見る予想や、23つまみを調整した後の成績とは一致しません。 良い週だけを選んで見せることも、悪い週を隠すこともしていません。稼働開始週から直近の完了週まで、すべての期間をそのまま並べています。
3連単の「完全一致」は120通りの組み合わせから1点を言い当てる、最も厳しい的中条件です。 的中率だけを見て「低い」と感じるかもしれませんが、テトラが実際に見せている本命は 1着候補としては57.10%、3着以内でみれば83.62%の実績でした(直近30日・過去の記録に基づく集計であり、将来の的中を保証するものではありません)。 的中の意味は指標によって全く違うので、④較正チャートで「言った確率どおりか」を別角度から確認できるようにしています。 各指標の分子・分母の正確な定義は②集計の定義・対象・除外条件にまとめています。
※ 08-13実行分の累計4,611件・55.80%・84.02%・8.83%は「固定再現試験」(基準日を2026-08-12に固定した母集団で、当時と同一のSQLを再実行した結果)であり、上記のメインKPI(2026-09-11時点の最新集計・基準日2026-09-10)とは基準日が異なる別の数字です。両者を混同しないでください。 固定再現試験の生データはevidence/reproduction_result.json、 上記メインKPI(最新値・n=9,622系)の完全再現用データはevidence/current_result.json、 実際に使用した集計SQL全文はevidence/aggregation_sql.txtで確認できます。
「的中率」という言葉は指標によって意味が変わります。ここでは各数値が何を分子・分母として計算されているかを、 実際に使っているSQL定義のまま明記します。
| 指標 | 分子(何をカウントするか) | 分母 |
|---|---|---|
| 本命1着率 | 本命(予想1位)艇が、実際の着順で1着だった件数 | クリーン母集団 (void_race=false AND late_snapshot=false) |
| 2連対率 | 本命艇が、実際の着順で2着以内だった件数 | |
| 複勝圏(3着以内)率 | 本命艇が、実際の着順で3着以内だった件数 ※統計用語としての呼称で、舟券として発売されている「複勝」の的中条件そのものではありません | |
| 3連単完全一致率 | 予想した1-2-3着の組み合わせ(単勝確率が高い順に3艇を並べた1点)が、実際の着順3艇と完全に一致した件数 |
対象期間: 2026年7月12日(記録開始)〜2026年9月13日(直近の突合完了日)。以下の条件に該当する行は、分子・分母のどちらにも含まれません。
| 除外区分 | 定義 | 件数 対象期間 07-12〜09-10 |
|---|---|---|
| 中止・返還等 void_race=true | 結果確定から2日経っても着順が確認できなかったレース。中止・返還等とみなし、的中判定をせずに終端した行 | 41件 |
| 締切後記録 late_snapshot=true | 予想の記録時刻(snapshot_at)が、そのレースの投票締切時刻(race_closed_at)より後だった行。「締切前記録」の前提と矛盾するため除外。内訳・原因は次項 | 26件 |
| 未突合 unreconciled | 予想は記録されたが、まだ結果照合バッチが処理していない行(前日以前のレースが対象) | 0件 |
2026年7月12日〜9月13日の累計9,674件のうち、52件が締切後記録(snapshot_at > race_closed_at)として検知され、上記の集計から除外されています。 2026年9月11日にVPS上のデータベースを直接調べ、当時の全26件の発生日時・締切時刻・記録時刻・遅延秒数を照合したうえで、原因を特定しました。2026年9月14日の更新で26件(すべて9月13日・日曜の発生)が加わりましたが、遅延は4.3秒〜27.1秒・14会場に分散しており、下記と同じ型でした。
| 発生日 | 件数 | 締切からの遅れ |
|---|---|---|
| 2026-08-17 | 2件 | 8.5秒 / 22.4秒 |
| 2026-08-26 | 8件 | 2.0秒〜25.6秒 |
| 2026-08-30 | 4件 | 1.1秒〜22.6秒 |
| 2026-09-03 | 3件 | 1.5秒〜6.1秒 |
| 2026-09-05 | 9件 | 6.1秒〜25.6秒 |
| 2026-09-13 | 26件 | 4.3秒〜27.1秒(9月14日更新で追加) |
| 合計 | 52件 | 最小1.1秒・最大27.1秒・平均15.2秒 |
原因。 予想の自動記録(スナップショット)は、締切の5分前に実行されるようスケジュールされています。ただし当日は24会場ぶんのオッズ取得・結果取得・予想記録が同じ処理待ち行列を順番にこなす設計のため、 複数レースの処理が近い時刻に重なると、実行そのものが数分単位で後ろへずれることがあります。この52件は、そのずれが締切5分前という余裕を使い切り、実際の記録が締切そのものを数秒〜27.1秒だけ過ぎてしまった行です。 このスケジューラーには「記録が遅れても省略せず遅延実行する」という設計が2026年7月15日から入っています(過去に、遅延を理由に記録そのものを省略した結果78レース分の予想が丸ごと欠測した事故が起き、その再発防止のために入れたものです)。 この52件は、この「欠測より遅延を選ぶ」設計が締切をわずかに越えて発動した結果であり、新たに発生した不具合ではありません。
今後もゼロにはならない見込みです。
9月11日の調査時点で、当時の26件を含む累計9,194件の記録タイミングを締切時刻からの差で見ると、中央値は締切の242秒前(約4分前)、
締切60秒前以内に滑り込んだ行が108件ありました。会場の混雑具合(同じ時間帯に締切を迎えるレースの多さ)は日によって変わるため、
同種の数秒〜数十秒規模の締切後記録は、今後も低い頻度で発生し続ける見込みです。記録処理のタイミング(5分前という設定値や処理待ち行列の仕組み)を見直す余地はありますが、
予想モデルや的中判定のロジックそのものを変える話ではないため、今回は現状の判定基準(snapshot_at > race_closed_atを1件でも機械的に除外)を変えずに据え置いています。
なぜ、それでも除外するのか。
遅れは最大でも25.6秒で、この間に出走表や展示のデータが差し替わるわけではありません。「実質的には締切前と同じ内容だ」と説明することもできます。
それでも、例外を作らず機械的に外します。
「締切前に記録した予想だけを載せる」という約束は、snapshot_at > race_closed_at という1本の機械判定だけで守っています。
ここに「1秒なら許容」「30秒までは実質同じ」といった人間の裁量を1つでも入れた瞬間、その約束は外から検証できないものに変わります。だから秒数にかかわらず除外します。
除外して数字が良くなっているわけではありません。 除外した52件だけを見ると本命1着55.77%・複勝圏84.62%(3連単完全一致は1件)で、全体平均と大きく変わらない行でした。 52件を含めた場合と除いた場合を並べます。
| 累計 2026-07-12〜09-13 | 母数 | 本命1着 | 2連対 | 複勝圏 | 3連単完全一致 |
|---|---|---|---|---|---|
| 52件を除外(本ページの方式) | 9,622 | 56.44% | 74.79% | 83.92% | 9.17% |
| 52件を含めた場合 | 9,674 | 56.44% | 74.79% | 83.93% | 9.13% |
差はどの指標も最大0.02ポイントです。都合の悪い行を捨てて数字を上げているのではなく、平均より成績の良い行を含めて捨てています。
週次自動チェックは、今後も「知らせるだけ」に留めます。 本ページの週次自動チェックは「締切後記録が1件でも検出されたら異常として知らせる」設計です(→⑦この数字の読み方)。 上記のとおりこの種の記録は今後も低い頻度で発生し続ける見込みのため、この基準のままでは毎週「異常あり」の判定になり続けます。 そのため現時点では、この仕組みは「チェックはするが自動送信はしない(dry-run)」設定のまま据え置き、ページの数値は今回のように運営者が内容を確認したうえで手動更新します。
この調査の生データはevidence/current_status_20260910.json、締切後記録52件の日時・遅延秒数の全件明細はevidence/late_snapshot_detail_20260914.json(9月11日調査時の26件の詳細はlate_snapshot_detail_20260911.json)で確認できます。
予想自体が記録されなかったレースについて。
対象期間(2026年7月12日〜9月13日)中に実際に行われ結果が確定したレースは10,076件でした。このうち標準AI予想が記録されているのは
9,675件(96.0%)で、残り401件(4.0%)は予想そのものが記録されていません(結果が確定したレースに対応するprediction_logの行が見つからない、という意味です)。
この401件は集計の分子・分母のどちらにも含まれていません──「的中」でも「不的中」でもなく、単純に集計の対象外です。
未記録の内訳(日別): 07-12(稼働初日)177件・07-13 71件・07-14 60件・07-15 78件・07-16 14件・08-16 1件。稼働初期の5日間(07-12〜07-16)に400件が集中しており、それ以外の期間で未記録が発生したのは08-16の1件のみです。 日別の生データはevidence/coverage_daily.jsonを参照してください。
「AIの的中率」を名乗るサービスは他にもありますが、後から都合よく数字を作れてしまえば意味がありません。BOATCRAFTは締切前に記録し、結果確定後に更新しない運用でこれを防いでいます。
各レースの投票締切より前に、テトラが出した本命艇・3連単予想・確率をprediction_logに自動で保存します。結果が出る前の「言った時点の数字」です。記録時刻(snapshot_at)と締切時刻(race_closed_at)を両方保存しています。
この記録を書き込むデータベースロールには、更新(UPDATE)・削除(DELETE)の権限がデータベース側の設定でそもそも付与されていません(SELECT・INSERTのみ。2026-08-14に実機で確認し、2026-09-02に同じ方法で再確認)。 そのため、アプリの通常の運用経路では一度記録した行を書き換える手段がありません。ただし、テーブルを所有するデータベース管理者権限まで含めれば技術的に完全な不変性を証明するものではないため、 本ページでは「改ざん不能」という言い切りは使わず、この事実に基づいた表現にとどめています。
公式の着順が確定すると、バッチ処理が自動で記録と突き合わせ、的中/非的中を判定してprediction_reconciliationに追記します。予想記録時刻と結果照合の履歴を、どちらも同じ仕組みで保存し続けています。
公開する集計では、締切前に記録された予想だけを対象にしています(本ページではvoid_race=false AND late_snapshot=false)。
的中に有利な母集団だけを選んでいるわけではなく、締切後の記録という「後出し疑惑が生じうる行」と、
そもそも結果が存在しないレースを除いているだけです。定義の詳細は②集計の定義・対象・除外条件、
判定ロジックのより詳しい説明は予測手法ページを参照してください。
BOATCRAFTが訴求したいのは「的中率が高い」ことではなく、言った確率どおりに当たっているか(較正)です。 テトラが「1着になる確率60%」と言った本命艇が、実際に60%前後で1着になっていれば、その数字は信頼できます。 逆に、低い確率の予想が低い的中率で終わるのは失敗ではなく、確率が正直に機能している証拠です。
良かった週だけを切り出さず、記録が始まった週からすべて期間順に並べています。公開後に成績が悪化した週があっても、 さかのぼって削除・非表示にすることはしません。数字は週によって上下します──それ自体が「後から選んでいない」ことの証拠です。
| 週 | 期間 | レース数 | 本命1着 | 複勝圏 | 3連単完全一致 |
|---|---|---|---|---|---|
| 2026-W28 | 07-12(単日・稼働初日) | 15 | 40.0% | 86.7% | 6.7% |
| 2026-W29 | 07-13〜07-19 | 915 | 53.8% | 84.3% | 8.0% |
| 2026-W30 | 07-20〜07-26 | 1,116 | 54.8% | 81.3% | 10.3% |
| 2026-W31 | 07-27〜08-02 | 1,054 | 57.8% | 84.8% | 10.0% |
| 2026-W32 | 08-03〜08-09 | 1,007 | 57.8% | 86.7% | 7.6% |
| 2026-W33 | 08-10〜08-16 | 1,283 | 55.7% | 84.7% | 9.4% |
| 2026-W34 | 08-17〜08-23 | 1,090 | 54.1% | 81.9% | 10.3% |
| 2026-W35 | 08-24〜08-30 | 1,080 | 56.4% | 82.4% | 8.8% |
| 2026-W36 | 08-31〜09-06 | 1,068 | 59.1% | 83.9% | 8.1% |
| 2026-W37 | 09-07〜09-13 | 994 | 59.0% | 85.6% | 9.9% |
※ W28(稼働初日・n=15)は母数が小さいため、傾向を読むときは参考程度に。全10週の合計n=9,622は、上記「記録開始からの累計」と一致します。
| 月 | 期間 | レース数 | 本命1着 | 複勝圏 | 3連単完全一致 |
|---|---|---|---|---|---|
| 2026年7月 | 07-12〜07-31 | 2,800 | 54.7% | 83.1% | 9.1% |
| 2026年8月 | 08-01〜08-31 | 4,904 | 56.3% | 84.0% | 9.2% |
| 2026年9月 | 09-01〜09-13(進行中) | 1,918 | 59.4% | 84.9% | 9.3% |
3連単の完全一致率は週によって6.7%〜10.3%の範囲で動いています。この振れ幅自体が母数(1週間で約700〜1,300件)相応のばらつきであり、 毎週「絶好調」と言えるような一本調子の数字ではありません。数字が動く様子ごと、そのまま載せています。
「的中率○○%」を売り文句にする予想サービスは珍しくありません。しかしBOATCRAFTがこのページで目指しているのは 「すごいでしょう」ではなく「言ったとおりでしょう」です。この2つは似ているようで、作り方が正反対になります。
| 的中率の自慢(やらない) | 較正の開示(やる) | |
|---|---|---|
| 主役 | 調子が良かった日 | 全ての日(当たりも外れも) |
| 自信度の低い予想 | 見せない・隠す | 見せる(低い的中率でも「それが正しい」ことの証明になる) |
| 大穴的中 | ヒーロー扱い | 全体の中の1行として淡々と記録 |
| 目的 | 「すごいでしょ」 | 「言ったとおりでしょ」 |
競合サービスがこの形式を簡単に真似できないのは、真似した瞬間に自分たちの外れも同じ土俵で公開することになるからです。 BOATCRAFTは「当たった実績」ではなく「記録の透明性」そのものを差別化にしています。
hit_top3という判定列)。舟券として発売されている「複勝」の的中条件とは異なる場合がある、集計上の呼称としてお読みください。同様に「2連対率」は本命艇が2着以内だった割合(hit_top2)です。hit_trifecta)。全120通りから機械的に1点を選ぶ、最も厳しい的中条件で判定しています。update_proof_page.py)自体は実装済みですが、まだ稼働は開始していません(公開ステップは無効化フラグで封印しています)。異常検知の基準は明確に固定しています──累計・直近30日・直近7日のいずれかの区分で、本命1着率・2連対率・複勝圏率・3連単完全一致率のうちいずれか1つでも前回実行時点の同一区分の値から5ポイント以上動いた場合、または件数が前回の50%未満に急減した場合、件数が0件の場合、締切後記録・未突合が1件でも検出された場合は、自動更新を停止し、人間の確認を経てから再開する設計です。集計定義・SQLや文言そのものを変える場合も同様に自動停止します。
void_race=false AND late_snapshot=false)。除外件数・比率、予想が記録されなかったレースの規模は②集計の定義・対象・除外条件に明記しています。テトラの予想は毎日、全国24会場ぶん自動で記録・答え合わせされています。アプリでは今日のレースの予想確率をそのまま確認できます。
App Store で見る → 予測手法を読む →このページの検証は、競艇AI予想全体のうち「答え合わせ」の部分です。予測の作り方から検証までの流れは、まとめページで通して読めます。