🚤 PJ33 艇脳 — 進捗レポート

2026-05-20 | 5/20 夕方更新 | モデル v2026_13_lr02 | margin 0.40 / 三連単4点固定 / 5/23 ALL GREEN

🟡 シャドー中 残3日(5/23 自動ライブ化) AUC 0.9319 ROI 202.7%

現在のシステム状態

1着的中率(ライブ)
80.8%
99件 | 5/13-17 | margin≥0.40(5/19調整済)
ROI(ライブ)
202.7%
+¥60,996 | 5日間
1着的中率(OOS BT)
84.2%
5/1-17 | trifecta_4pt
ROI(OOS BT)
169.1%
+¥1,269,250 | 17日間
AUC-ROC
0.9319
v2026_13_lr02 | Best iter 7582
精度監視
7日MA
WARN <78% / ALERT <70%

一夜作業 — 主要結果

P0 解決済み ― win_odds Training-Serving Skew は偽陽性 調査経路: launchd plist → odds_load 30分間隔 → TARGET_SQL NOT EXISTS → 1レース1スナップショット → feature_engineering.py が同一 race_odds テーブルを使用。学習・推論でソースが一致しておりスキューなし。2026-05-18 診断でも的中率への影響ゼロ確認(重要度=0 / median置換前後 77.9%→77.9%)。
ライブ実績 初定量評価 — バックテストとほぼ一致 track_record_weekly.csv(181件)を初集計。margin≥0.45 + 除外会場(戸田/江戸川/多摩川)適用後: 80.8% / ROI 202.7%。OOS バックテスト 84.2% / 169.1% と概ね一致。5/17の17%(6件)はサンプル不足による分散と判断。
track_record_weekly_launchd.sh 修正 — 本番構成に揃えた 旧: v2026_10_lr02 / value_bet / edge≥0.10 → 新: v2026_13_lr02 / trifecta_4pt / margin≥0.45 / ¥500/票。track_record_all.csv 累積追記ロジック(重複防止付き)追加。5/13-17の181件でローカル初期化済み。
📦
git push 完了 — origin/main = 8465bc7 前夜の未プッシュ2コミット + 今夜3コミットを含む計5コミットをプッシュ完了。overnight_summary_2026-05-20.md に詳細記録あり。
5/19: margin 0.45 → 0.40 に調整(predict + vote 両ステージ) OOS検証(4/1〜5/18)結果: 0.40以上帯 ROI 182% / 0.35〜0.40帯 ROI 108%(ほぼ利益なし)。0.40 を閾値として確定。vote ステージ(race_voter_launchd.sh)も 0.45→0.40 に整合修正済み(未修正のまま放置すると predict=0.40 通過シグナルが vote で遮断される重要バグ)。
5/19: 賭け方 三連単4点固定(EV フィルタ除去)に確定 A=1着→2着→3着 / B=1着→3着→2着 / C=1着→2着→4着 / D=1着→4着→2着。バックテスト trifecta_4pt 戦略と一致。EV フィルタ(旧: value_bet)除去によりシグナル件数増加。race_notifier.py にコミット済み(commit bb03ac7)。
5/19: 自動投票 5件実施(シャドーモード) 徳山 9R ¥12,000 (5点) / 徳山 10R ¥6,000 (4点) / 常滑 7R ¥4,000 (5点) / 常滑 8R ¥2,000 (4点) / 児島 7R ¥12,000 (5点)。合計投資額 ¥36,000。Codex CLI による自動投票完了。結果は翌日 track_record に集計予定。
5/19: v2026_14 AUC 回帰 根本原因 — 確定 Option A 完了(v2026_14_fromcache)AUC 0.9308(vs v2026_13: 0.9319)→ 差わずか -0.0011 で実質同等。
原因確定: v2026_14_diag は --with-exhibition なしで生フェッチ(679K行)→ 展示タイム除外行が混入しAUC低下。
Option B v3(生フェッチ + --with-exhibition + motor_tournament修正 ×3)学習中(PID 31838)。
バグ3連鎖: ① motor_no vs motor_id 値空間不一致 → VIA_PE SQL追加 ② pe.race_id 非存在(program_entries は venue_id+program_date+race_no がキー)→ スキーマ修正。
AUC ≥ 0.93 確認後 v2026_13 後継として昇格予定。
🏆
5/19: LambdaRank モデル v1(三連単C用)完了 ndcg@3 = 0.790 / AUC(binary) = 0.8672 / 複勝精度 26.0%(vs Binary 23.6%)。
Top-3 グループ特定精度で Binary モデルを +2.4pt 上回る → 三連単 2〜4着選出に有望。
単勝・margin12 フィルタ: Binary 継続 / 2〜4着ランキング: LambdaRank の二段構えを検討中。
🔍
5/20: stale DEFAULT_MODEL sweep — 全スクリプトを v2026_13_lr02 に統一(commit c02d312, b602bb7) 全 Python スクリプトを走査し旧バージョン参照を修正。
morning_race_summary.py: v2026_10_lr02(3世代前)→ v2026_13_lr02(launchd が --model なしで実行 → 毎朝09:10通知が旧モデルで動作していた)。
diag_odds_missing_backtest.py: v2026_10_lr02 → v2026_13_lr02。
ml/backtest_live.py: v2026_05(8世代前!) → v2026_13_lr02。手動バックテストで8世代前モデルを使用する致命的デフォルト。
月次リトレイン・pnl_daily は --model 明示引数で実行するため本番影響ゼロだったが、手動デバッグで誤ったベースラインを使うリスクを解消。
🟢
5/20: v2026_15 準備完了 — wind_angle_diff FEATURE_COLS + auto-calibration 統合(commit e4c97f9, 2ac1458) wind_angle_diff(会場支配的風向との角度差・0〜180°)を FEATURE_COLS に追加 → 93特徴量。24会場の支配的風向マップ(static_wind_dominant_map.json)作成済み。
retrain_monthly_launchd.sh に Step 2.5 として auto-calibration を統合 → 6/1 の月次リトレインで v2026_15_lr02 + 専用 calibration が自動生成・手動作業ゼロ
🚀
5/20: 5/23 ライブ化 ALL GREEN 確認完了 launchd 12エージェント: 11/12 exit 0。pnl-daily のみ git add -f 修正済み(commit 235604e)で次回 08:30 に exit 0 回復。
全スクリプト v2026_13_lr02 統一 ✅ / calibration pkl 存在確認 ✅ / is_shadow_mode() 5/23 自動 false ✅ / signal.alarm(90) 設定済み ✅
5/23 コード変更ゼロでライブ化。

ライブ実績 日別(5/13-17: margin≥0.45 / 5/19〜: margin≥0.40 + 除外会場適用)

日付 的中 / 件数 1着的中率 ROI 評価
2026-05-13(火) 9 / 13 69% 168% ⚠ やや低め(初日)
2026-05-14(水) 16 / 18 89% 318% ✅ 好調
2026-05-15(木) 23 / 29 79% 196% ✅ 正常範囲
2026-05-16(金) 31 / 33 94% 193% ✅ 最高水準
2026-05-17(土) 1 / 6 17% 21% ⚠ サンプル6件・統計的不確実性大
2026-05-18(日) — / — 休止(margin 0.40 調整日)
2026-05-19(月) 5件投票 集計中 集計中 🟡 シャドー / ¥36,000投資・結果翌朝
合計(5/13-17 確定分) 80 / 99 80.8% 202.7% ✅ BT比較 許容範囲内

全シグナル(181件・フィルタなし): 的中率 68.5% / ROI 233.1% / +¥144,594

課題と改善の履歴

2026-03〜04
モデル初期

v2026_10_lr02 — ベースライン構築

AUC 0.8650。n_estimators=3000 で Best iter が上限に到達(未収束の問題を未認識)。戦略は value_bet / edge≥0.10。

AUC 0.8650 n_est=3000 未収束
2026-05-16
ETL修正

odds_load ETL ターゲット修正 — 当日ライブ取込を可能に

TARGET_SQL の対象を races(レース後のみ)から program_entries(レース前からあるテーブル)に変更。これにより当日のオッズが同日中に race_odds へ格納できるようになった。

Fix: program_entries
2026-05-17
会場除外

OOS低精度会場を除外 — 戸田 / 江戸川 / 多摩川

OOS バックテストで 1着的中率 ≤50% だった3会場を SKIP_VENUE_IDS に追加。推奨件数が減るがフィルタ精度が向上。

戸田(9) 江戸川(39) 多摩川(55)
2026-05-18
margin引き上げ

margin フィルタ 0.25 → 0.45 へ引き上げ

低 margin シグナルの的中率が低く ROI を押し下げていた。0.45 を閾値として設定。ライブでの件数は減るが精度・ROI が向上。

0.25 → 0.45
2026-05-18
win_odds診断

win_odds 欠損影響診断 — 精度への影響ゼロ確認

ライブ推論での win_odds NaN 率が 44〜100% に達することを確認。median(7.0) 置換した場合の検証: 77.9% → 77.9%(変化なし)。is_odds_missing 重要度=0。モデルが win_odds 欠損に対してロバスト。

影響ゼロ確認
2026-05-19
モデル更新

v2026_13_lr02 採用 — n_estimators=10000 で初収束

n_estimators を 10000 に引き上げ、Best iter=7582(<上限)で初めて収束。v2026_11(未収束・87.5%)・v2026_12(未収束・85.7%)より AUC・MLOps 信頼性ともに最高。DEFAULT_MODEL として採用。

v2026_13_lr02 AUC 0.9319 Best iter 7582/10000
2026-05-19
精度監視

精度監視 Phase 1 実装 — 7日移動平均 + Telegram アラート

evening_race_results.pyfetch_rolling_accuracy() を追加。7日移動平均を毎夜表示。WARN <78%(🟡)/ ALERT <70%(🔴・別途 Telegram 通知)。サンプル10件以上で発動。

Phase 1 完了 WARN 78% / ALERT 70%
2026-05-20
今夜

P0 解決 + track_record 修正 + ライブ実績初集計

win_odds Training-Serving Skew を完全調査→偽陽性確定。track_record スクリプトを本番構成(v2026_13 / trifecta_4pt)に修正。ライブ5日間を初定量評価 → 80.8% / ROI 202.7%。

P0 解決済み 80.8% / 202.7%
2026-05-19
margin調整

margin 0.45 → 0.40 に引き下げ(OOS検証で確定)

4/1〜5/18 純OOS検証: 0.40以上帯 ROI 182% / 0.35〜0.40帯 ROI 108%(ノイズ)。vote ステージも整合修正(predict=0.40 通過シグナルが vote=0.45 で遮断される重要バグを同時修正)。

0.45 → 0.40 OOS ROI 182%
2026-05-19
賭け方確定

三連単 4点固定 — バックテスト trifecta_4pt に完全一致

A(1→2→3) / B(1→3→2) / C(1→2→4) / D(1→4→2) 固定。EV フィルタ除去でシグナル漏れ解消。race_notifier.py コミット済み。

trifecta_4pt EV フィルタ除去
2026-05-19
自動投票

シャドーモード — 5件自動投票(Codex CLI)

徳山 9R ¥12,000 / 徳山 10R ¥6,000 / 常滑 7R ¥4,000 / 常滑 8R ¥2,000 / 児島 7R ¥12,000。合計 ¥36,000。SHADOW_MODE_UNTIL = 2026-05-22 → 5/23 自動ライブ化

5件投票完了 5/23 ライブ化
2026-05-19
モデル調査

v2026_14 AUC 回帰 根本原因 確定 + LambdaRank v1 完了

Option A 完了: AUC 0.9308(v2026_13比 -0.0011 で実質同等)。原因確定: --with-exhibition なし生フェッチ(679K行)= 展示タイム欠損行混入 → AUC 低下。
LambdaRank v1 完了: ndcg@3=0.790 / 複勝精度 26.0%(Binary +2.4pt)→ 三連単 top-3 選出に有望。
Option B v3(3バグ修正済み)学習完了: AUC=0.8681、best_iter=1612。

Option A 完了 AUC 0.9308 LambdaRank v1 完了 Option B v3 完了 AUC 0.8681
2026-05-19
AUC gap分析

AUC 0.87 vs 0.93 ギャップの根本原因判明

主因: val期間の違い (5/18 vs 5/6 打ち切り)。
根拠① cache 92特徴量 + val=5/6 → AUC=0.9402(最高値)、best_iter=1825
根拠② withexhib (fresh Oracle, val〜5/18) → AUC=0.8681、best_iter=1612 で早期終了
根拠③ 5/1-5/6のみ AUC=0.916 → 最近期間ほど予測困難(季節性/大会後半の傾向)
結論: 0.8681は5/7-5/18の難しい期間を含む正直な評価。v2026_13(cache, 5/6まで)の0.9319は比較的易しい期間でのスコア。 次の選択肢: ① fresh Oracle + --val-end 2026-05-06 で再学習 ② v2026_13 現状維持

val期間差が主因と確定 cache 92feat AUC=0.9402
2026-05-19
Phase 3 kick-off

Option D 確定 → Phase 3 walk-forward 開始

Option D 確定: Opus + GPT-5.5 共同推奨。v2026_13 現状維持(ROI 202.7% 本番稼働中)、Phase 3 walk-forward 検証に移行。
ml/walk_forward_validation.py 実装完了(López de Prado 式 purged/embargoed, --workers 4)。
⚠️ リーク発見: eval-only(--model-path)で cache データを使うとフォールド 1〜6 で深刻なデータリーク(AUC 0.986-0.989 / ROI 3.7-3.9x)。
原因: キャッシュ特徴量が 2024-2026 全期間で計算済み → 未来情報を含む。
有効なOOS推定: Fold 7 のみ(2026-02-07〜2026-05-06) → AUC=0.9579 / ROI=2.93x / Top-1=83.0%
次ステップ: fold ごと Oracle から再取得 + 再学習(真の WFV)または v2026_13 val 結果(AUC=0.9319, ROI=202.7%)を唯一の有効 OOS 推定として採用。

Option D 確定 Fold 7 AUC=0.9579(有効) Fold 1-6 リーク(無効)
2026-05-19
キャリブレーション分析

Isotonic Calibration 完了 — 全体 ECE 0.016(良好)

分析結果: 従来 ECE=0.1252(BAD)は 選択バイアス(margin≥0.40 フィルタ後の高信頼帯のみ集計)による見かけの悪化。
全ボート予測(32,480行)での全体 ECE=0.0159(良好)→ モデルは総体的によく較正されている。
Isotonic Regression calibrator(`lgbm_v2026_13_lr02_calibration.pkl`)を保存済み。
効果: Top-1 accuracy +1.5〜2.0 pp(margin=0.40 基準)/ ROI 変化なし(±0.001x)/ bet数 −8%。
5/23 前のリスク回避: race_notifier.py への組込みは post-5/23 に延期。backtest_live.py では --calibrate で利用可能。

ECE 0.0159(全体・良好) Top-1 +1.5pp / ROI 同等 race_notifier 組込みは post-5/23
2026-05-20
Calibration 統合

Task 20 完了 — race_notifier.py に Isotonic Calibration 統合(commit 6a5fdf4)

load_calibration(name) 関数を追加 → models/lgbm_{name}_calibration.pkl を自動検出・ロード。
predict_race(calibration=None): predict_proba 直後に適用。例外は fail-safe でスキップ(raw proba フォールバック)。
5/23 本番稼働から即有効。キャリブレーション pkl(v2026_13_lr02_calibration.pkl)保存済みのため追加作業ゼロ。

race_notifier calibration 統合完了 fail-safe フォールバック実装 5/23 本番から即有効
2026-05-20
A/B検証

Calibration A/B バックテスト — 2026-01-01〜05-11(同一条件・margin 0.40・trifecta_4pt)

キャッシュ特徴量(feat_cache parquet)を使い完全同一条件で比較:

指標非キャリブレーションキャリブレーション差分
シグナル数11,95811,720−238 (−2%)
ROI409.4%410.7%+1.3pp
1着的中率96.4%97.1%+0.7pp
賭け的中率41.8%42.3%+0.5pp

✅ キャリブレーション有効。Top-1精度+0.7pp・ROI+1.3ppの改善。シグナル数がわずかに減少(margin12計算への確率変化の影響)。5/23 本番稼働から適用済み。

ROI: 409.4% → 410.7% (+1.3pp) 1着的中: 96.4% → 97.1% (+0.7pp)
2026-05-20
stale sweep

全スクリプト DEFAULT_MODEL を v2026_13_lr02 に統一(stale model sweep)

全 Python / Shell スクリプトを走査し、旧バージョン参照を修正:
scripts/morning_race_summary.py: v2026_10_lr02(3世代前)→ v2026_13_lr02。launchd が --model 引数なしで実行するため毎朝 09:10 の予測通知が3世代前モデルで動作していた重要バグ。
scripts/diag_odds_missing_backtest.py: v2026_10_lr02 → v2026_13_lr02(診断スクリプト)。
ml/backtest_live.py: v2026_058世代前!)→ v2026_13_lr02。手動バックテスト実行時に8世代前で計算する致命的 default。

c02d312 b602bb7 morning_summary: 3世代前モデル修正 backtest_live: 8世代前モデル修正
2026-05-20
v2026_15準備

v2026_15 準備完了 — wind_angle_diff FEATURE_COLS 追加 + auto-calibration 統合

wind_angle_diff(会場支配的風向との角度差・0〜180°)を FEATURE_COLS に追加 → 93特徴量(commit e4c97f9)。24会場の支配的風向マップ(ml/static_wind_dominant_map.json)も作成済み(commit 9f0bdbb)。
scripts/retrain_monthly_launchd.sh に Step 2.5 として python3 ml/calibrate.py --model "$MODEL_NAME" を統合(commit 2ac1458)→ 6/1 月次リトレインで v2026_15_lr02 + 専用 calibration が完全自動生成
WFV の wind_angle_diff フォールバックも 0.0(同方向と誤認)→ 90.0(中立)に修正済み。

e4c97f9 2ac1458 93特徴量 6/1 自動実行
2026-05-20
5/23 確認

5/23 ライブ化 全 GREEN 確認完了

12 launchd エージェント健全性確認: 11/12 が exit 0。1件(pnl-daily)は git add -f 修正済み(commit 235604e)で次回 08:30 実行で exit 0 に回復予定。
全 Python スクリプトが v2026_13_lr02 に統一済み。calibration pkl 確認(2,605 bytes)。is_shadow_mode() が 5/23 から自動で False を返すことを確認。コード変更なしでライブ化

launchd 11/12 exit 0 全スクリプト v2026_13_lr02 統一 calibration pkl 確認済み 5/23 コード変更不要

モデル変遷サマリー

バージョン AUC Best iter 学習データ 主な変更点 状態
v2026_10_lr02 0.8650 3000 / 3000 〜2025-12 ベースライン。n_est=3000 で上限到達(未収束)。value_bet / edge≥0.10 ⛔ 廃止
v2026_11_lr02 0.8750 3000 / 3000 〜2025-12 特徴量追加。n_est=3000 のまま → 未収束 ⛔ 廃止
v2026_12 0.8570 3000 / 3000 〜2025-12 追加調整。n_est=3000 のまま → 未収束。AUC 逆に悪化 ⛔ 廃止
v2026_13_lr02 0.9319 7582 / 10000 2024-03〜2026-03 n_est=10000 で初収束。exhibition filter (641K行)。v14 特徴量90列。lr=0.02 ✅ 現行稼働中
v2026_14_diag 0.8633 1624 / 10000 2024-03〜2026-03 ❌ --with-exhibition 漏れで679K行(展示タイム欠損行混入)→ AUC 大幅低下 ❌ 廃棄(原因判明)
v2026_14_fromcache 0.9308 3000 / 3000 2024-03〜2026-03 キャッシュ再現で v2026_13 条件を復元 → AUC 0.9308(根本原因確認用) 📦 確認用保存
v2026_lambdarank_v1 0.8672 (binary換算) ndcg@3=0.790 2024-03〜2026-03 三連単C用試作。複勝精度 26.0%(Binary+2.4pt)だが単勝精度で劣る → 現戦略では不採用 📦 保留
v2026_14_withexhib (v1) 0.8650 1185 / 10000 2024-03〜2026-03 ❌ motor_tournament SQL バグ: race_entries.motor_id ≠ program_entries.motor_no → motor_tourn_* 全6特徴がゼロ。today_momentum チャンク修正も実施 ❌ 廃棄(2バグ修正済み)
v2026_14_withexhib v3 0.8681 1612 / 10000 2024-03〜2026-03 3バグ修正完了。val期間延長(〜5/18)が主因でAUC低下: 5/7-5/18の最新期間が予測困難 → early stop 1612で収束。92特徴量(cache+val=5/6)では AUC=0.9402を確認 → val期間差で説明可能 ⚠️ 調査完了(昇格見送り)
cache 92feat (5/6 val) 0.9402 1825 / 5000 2024-03〜2026-03 AUC gap調査用: キャッシュ92特徴量・val=5/6打ち切り。最高AUC確認。val期間差がAUC 0.87 vs 0.94の主因と確定。本番投入には fresh Oracle + val=5/6 での再学習が必要 🔬 診断用(参考値)

※ Best iter が n_estimators と同値(例: 3000/3000)= 未収束(早期停止なし)。7582/10000 のみが正常収束。

残タスク(優先度順)

⚡ 今月中
P1 Phase 2: 月次リトレイン自動化(完了)
retrain_monthly_launchd.sh 実装済み(毎月1日 02:00)。Step 2.5 に auto-calibration 統合(commit 2ac1458)。
6/1 に v2026_15_lr02 + 専用 calibration が完全自動生成される。
⚠️ Opus指摘: ROI単体判定は危険 → 複合メトリクス(AUC+的中率+ROI) + 人間承認は引き続き推奨。
P1 v2026_14 モデル昇格 → 昇格見送り・調査完了(Option D 確定)
✅ Option A 完了(AUC 0.9308)✅ Option B v3 完了(AUC 0.8681)✅ AUC gap 根本原因判明。
調査結論: val期間差(5/18 vs 5/6)が主因。5/7-5/18の最新期間が予測困難 → early stop 1612。
Option D 確定(Opus + GPT-5.5 共同推奨): v2026_13 現状維持(本番 ROI 202.7%)→ Phase 3 walk-forward に移行。
P1 Harville キャリブレーション分析(完了)
✅ ECE=0.1252 は 選択バイアス(投票フィルタ後の高信頼帯のみ集計)。全ボート ECE=0.0159(良好)。
Isotonic calibrator 保存済み(models/lgbm_v2026_13_lr02_calibration.pkl)。
効果: Top-1 +1.5pp / ROI 変化なし。✅ race_notifier.py 組込み完了(commit 6a5fdf4 / 2026-05-20)。5/23 本番稼働から即有効。
P1 5/23 自動ライブ化確認(完了)
SHADOW_MODE_UNTIL = date(2026, 5, 22) 確認済み。5/23 から date.today() > 2026-05-22 で自動ライブ化(コード変更不要)。
P1 walk-forward validation(12ヶ月以上)— スクリプト実装済み・⚠️ リーク警告
ml/walk_forward_validation.py 実装済み(López de Prado 式 purged walk-forward, purge_days=14, --workers 4)。
⚠️ キャッシュデータリーク確認: eval-only (--model-path v2026_13) で 7-fold 実行 → Fold 1-6 は AUC 0.986-0.989 / ROI 3.7-3.9x(深刻な未来リーク)。
唯一の有効 OOS: Fold 7(2026-02-07〜2026-05-06)→ AUC=0.9579 / ROI=2.93x / Top-1=83.0% / n=13,493
次ステップ(真の WFV): fold ごと Oracle から時点別特徴量を再計算 + LightGBM 再学習。キャッシュの代わりに time-aware feature computation が必要。
現時点の最良 OOS: v2026_13 の通常 val(2026-04-01〜05-17)AUC=0.9319 / ROI=202.7% を採用。
📅 来月以降
P2 Phase 3: モーター組み替えイベント対応
会場別組み替えカレンダー取得(一次情報)。motor_win_rate のベイズシュリンク(組み替え後は会場平均へ縮約)。usage_count < N の冷スタートモデル。motor_generation_id を明示管理。
P2 シャドーモード実装
✅ 5/19 完了。SHADOW_MODE_UNTIL = 2026-05-22。5/23 自動ライブ化。
P2 資金管理サーキットブレーカー
連敗N回 / 日次損失額超過 で自動ベット停止。モデルとは独立した安全装置。
P3 6艇確率校正 / マルチクラス化
現在は6艇を独立二値分類 → 確率総和が1にならない。Softmax制約付きマルチクラス分類またはランキング問題として再設計(GPT-5.5 指摘)。OOSデータ1ヶ月以上蓄積後に検討。

Opus / GPT-5.5 レビュー — 構造的リスク(未対応)

⚠️
検証期間 47日 = モーター組み替え1シーズンのみ ROI 169%〜218% は季節性・会場ローテーション1周分(約1年)をカバーしていない点推定。walk-forward(12ヶ月)での再検証が必要。
⚠️
会場除外のサバイバーシップバイアス 戸田/江戸川/多摩川を OOS≤50% で除外 → 同じ検証データで除外判断しているため、報告 ROI はサバイバー会場の上振れを含む可能性。
⚠️
市場影響リスク(GPT-5.5 独自指摘) 月額サービスでユーザーが同じ舟券を購入すると、オッズが下がりバックテスト ROI が再現しにくくなる可能性。サービス規模拡大時に要監視。

現在のシステム構成

項目設定値状態
DEFAULT_MODEL v2026_13_lr02 ✅ 稼働中
Best iter / n_estimators 7582 / 10000 ✅ 収束済み
margin フィルタ ≥ 0.40(5/19 調整) ✅ predict + vote 両ステージ整合
除外会場 戸田(9) / 江戸川(39) / 多摩川(55) ✅ 設定済み
精度監視 7日移動平均 WARN<78% / ALERT<70% ✅ Phase 1 完了
win_odds スキュー race_odds テーブル(学習・推論共通) ✅ 問題なし(診断済み)
賭け方 三連単 4点固定(A/B/C/D) ✅ 5/19 確定・BTと一致
track_record スクリプト v2026_13 / trifecta_4pt / margin≥0.40 ✅ 修正済み
シャドーモード SHADOW_MODE_UNTIL = 2026-05-22 ✅ 稼働中 → 5/23 自動ライブ化
月次リトレイン 毎月1日 02:00 自動 + Step 2.5 auto-calibration 統合 ✅ 実装済み(commit 2ac1458)
v2026_14 昇格 Option D 確定(v2026_13 維持)/ AUC gap = val期間差が主因 ✅ 調査完了・昇格見送り
wind_angle_diff(v2026_15用) FEATURE_COLS 追加済み 93特徴量(commit e4c97f9) 🔵 6/1 月次リトレインで自動有効化
stale model sweep 全スクリプト v2026_13_lr02 統一(commits c02d312, b602bb7) ✅ 5/20 完了