概要
プロジェクトの目的
X(Twitter)で話題になった「オッズ急変を監視するbot」と同等の機能を実現するツール。
JRA中央競馬の締切直前のオッズ変動をリアルタイムで監視し、急騰(支持急増)・急落(支持急減)をパーセント変動率でソート表示する。異常な買いパターン(AI自動買い等の可能性)を可視化することが主な目的。
主な機能
| 機能 | 説明 |
|---|---|
| レーススケジュール自動取得 | 当日のJRA全レースをnetkeiba.comから自動検出 |
| オッズリアルタイム取得 | JSON APIから単勝オッズを定期ポーリング |
| 変動率計算 | 前回スナップショットとの比較で変動率を自動算出 |
| 急騰/急落判定 | 閾値ベースで急変動を分類(↑急騰 / ↓急落) |
| ターミナルダッシュボード | richライブラリによるカラー付きランキング表示 |
| Slack通知 | 閾値超過時にWebhookでアラート送信 |
| 履歴保存 | SQLiteでオッズ変動履歴を永続化 |
技術スタック
| 項目 | 選定 |
|---|---|
| 言語 | Python 3.11+ |
| データ取得 | requests + BeautifulSoup |
| データソース | netkeiba.com |
| DB | SQLite + in-memory deque |
| ターミナルUI | rich |
| 通知 | Slack Incoming Webhook |
| 設定 | python-dotenv (.env) |
| 対象 | 中央競馬(JRA) 10会場 |
用語定義
| 用語 | 意味 |
|---|---|
| 急騰(↑) | オッズが低下 = 買いが集中 = 支持急増 |
| 急落(↓) | オッズが上昇 = 買いが引いた = 支持急減 |
| スナップショット | ある時点での全馬オッズのスナップショット |
| 変動率 | (新オッズ - 旧オッズ) / 旧オッズ × 100 (%) |