# 検証パック: 実測1コースを外れた1号艇の信頼度

このディレクトリは、BOATCRAFTブランドの記事「1号艇が実測1コースを外れた場合の勝率は？ 1コース保持55.84%・別コース13.10%」で示した数値の集計根拠を公開するものです。集計定義・再現用SQL・集計結果・公開時点との差異確認用ハッシュ値を含みます。

## 集計定義

- **データベース**: BOATCRAFTデータベース(公開されているレース結果を集計したもの)
- **対象テーブル**: race_results
- **母集団**: boat_number(固定の枠番)が1、かつ entry_position(実際のスタートコース)が記録されており、かつ arrival_order(着順)が1〜6のいずれかで確定しているレース
- **集計期間**: 2021年1月1日〜2026年8月25日(年次推移の参考集計のみ2019年から)
- **分類**: entry_position=1のレースを「1コースのまま」、entry_position≠1のレースを「実測1コースを外れた」として2群に分割。分類基準は実測スタートコース(entry_position)が1かどうかという定義のみであり、進入変更の理由による分類ではない
- **指標**: レース数(n)、勝率(1着率)、2連対率(2着以内)、3連対率(3着以内)。押し出し先コース別の内訳も参考として集計
- **グループラベルの表記**: result.jsonのgroup_labelは「1コースのまま」「実測1コースを外れた」という中立表現に統一してある(集計条件はentry_position≠1で同一であり、ラベル表記の変更によって対象データや集計ロジックは変わっていない)

## 集計日時・データ基準日

- **集計実行日**: 2026年8月25日
- **データ基準日**: 2026年8月25日(この日時点でデータベースに記録されている全レースを対象)

## 除外条件

- entry_position が NULL のレース(実測スタートコースが未記録)は除外
- arrival_order が 1〜6 の範囲外(欠場・失格等で着順が確定していない)のレースは除外
- 上記以外の除外条件はなし

## 再現手順

1. `query.sql` を、BOATCRAFTの本番データベース(PostgreSQL)に対して読み取り専用権限で実行します。接続情報(ホスト名・認証情報等)はセキュリティ上の理由からこのパックには含みません。
2. クエリ[2]の実行結果が `result.json` の `main_comparison_2021_2026` と一致します。クエリ[1]は `yearly_kept_course1_pct_2019_2026`、クエリ[3]は `pushed_out_breakdown_by_destination_course_2021_2026` にそれぞれ対応します。
3. `manifest.sha256` (当社が公開時に記録したmanifest)を使い、お手元の `query.sql` `result.json` `README.md` のSHA-256を、当社が公開時に記録したmanifestと照合することで、公開時点のファイルとの差異を確認できます。

## 注記(限界)

- この集計は「進入が確定した後」の結果を分けて見たものであり、レース前(締切前)の時点で押し出しの有無を予測できることを意味しません。
- 進入変更の理由(前付け・見合い・その他)はデータ上区別できないため、理由を問わず結果だけで分類しています。
- entry_position 4〜6への押し出しはn=55〜81と少なく、勝率の上下は誤差の範囲として参照してください。
- 的中率・回収率についてはこの集計の対象外です。

## ファイル一覧

- `README.md` — 本ファイル
- `query.sql` — 再現用SQL(接続情報等の機密情報を除去済み)
- `result.json` — 集計結果(数値は原本から改変していません)
- `manifest.sha256` — 上記3ファイルのSHA-256ハッシュ値
