RacingLLM B2B API 文檔 v4.3
REST API for 香港賽馬 AI 預測、歷史數據、操練記錄同 AI 馬評。
概覽
所有 endpoint 返 JSON,認證用 Bearer token(API key)。數據覆蓋:30K+ 場本地賽事 + 海外轉播賽事(S1-S9)、1.16M 操練記錄、1,996 次試閘、673K+ 賠率數據。
海外賽事包含:HKJC 匯合彩池賠率(WIN/PLA/QIN/QPL)、Bookmaker 賠率(Bet365/Unibet 等)、AI 預測(Score% + PICK)。Venue code 用 S1, S2, S3... 格式。
Base URL: https://racingapi.scga.hk/v1
認證
所有 B2B endpoint 需要 API key 作為 Bearer token:
curl -H "Authorization: Bearer <YOUR_API_KEY>" \ https://racingapi.scga.hk/v1/b2b/races
API Key 等級
| 等級 | 每分鐘限額 | 每月配額 | 超額 |
|---|---|---|---|
| Pro | 30 | 10,000 | HK$0.10/次 |
| Business | 120 | 50,000 | HK$0.10/次 |
| Enterprise | 300 | 無限 | — |
錯誤回應
| Code | 意思 |
|---|---|
| 401 | Authorization header 漏咗 / 格式錯 |
| 403 | API key 無效 / 停用 / 過期 / 等級不足 |
| 429 | 超出每分鐘限額,60 秒後重試 |
| 404 | 搵唔到資源 |
| 400 | 請求參數錯誤 |
| 500 | 伺服器內部錯誤 |
{"detail": "Invalid or inactive API key"}等級權限矩陣
| 功能 | Pro | Business | Enterprise |
|---|---|---|---|
| 賽事日期 / 列表 | ✓ | ✓ | ✓ |
| 預測 + 策略 | ✓ | ✓ | ✓ |
| AI 馬評 | ✓ | ✓ | ✓ |
| 季績統計 | ✓ | ✓ | ✓ |
| 馬匹搜尋 / 資料 | 本季 | 全季 | 全季 |
| 馬匹賽績 | 20 筆/本季 | 100 筆/全季 | 500 筆/全季 |
| 操練記錄 | — | ✓ | ✓ |
| 試閘記錄 | — | ✓ | ✓ |
| 騎師 / 練馬師資料 | ✓ | ✓ | ✓ |
| 賠率時序 | ✓ | ✓ | ✓ |
| 分段時間分析 | — | ✓ | ✓ |
| QIN/QPL 對陣矩陣 | — | ✓ | ✓ |
| 原始模型評分 | — | — | ✓ |
| Webhook | — | ✓ | ✓ |
※ B2B API key 由管理員人手開通(聯絡 RacingLLM),唔設網上自助購買。
Endpoints
/v1/b2b/races列出所有賽事日期/v1/b2b/races/{date}按日期列出賽事 + 預測/v1/b2b/races/{date}/{venue}/{race_no}完整賽事詳情(按等級開放)/v1/b2b/results/{date}/{venue}/{race_no}單場賽果 + 賽前快照 + 命中判定/v1/b2b/results/{date}全日已收集賽果 — object {date, races[], count},只含 results_collected 場次/v1/b2b/predictions/latest最新預測/v1/b2b/commentary/{date}AI 馬評文章(5 persona)/v1/b2b/stats/{season}季績命中率 + 重心馬投注方法 ROI(近 5 季 walk-forward;§90.124 舊 tier 策略已退役)※ /v1/b2b/races/{date} 同 /v1/b2b/predictions/latest 回一個扁平 races array(本地 + 海外混埋一齊)。海外賽事(S1-S9)嘅 race_no 由 1 重新數, 所以同本地會撞(例:一個賽日可能同時有 ST R1 同 S2 R1)。請用 race_id 做 key, 唔好用 race_no。
賽事詳情回應
GET /v1/b2b/races/2026-06-10/HV/7
Business+ 額外有 sectionals;Enterprise 額外有 raw_model_scores。
{
"race_date": "2026-06-10",
"venue": "HV",
"race_no": 7,
"race_id": "2026-06-10-HV-7",
"distance": 1650,
"race_name": "會員盃",
"race_class": "C3",
"track": "TURF",
"going": "GOOD",
"num_horses": 12,
"horses": [
{
"horse_no": 1,
"horse_name_ch": "金鎗六十",
"draw": 5,
"rating": 110,
"win_odds": 3.5,
"win_prob": 0.25,
"place_prob": 0.65,
"top4_prob": 0.85
}
],
"top4_horses": [1, 3, 7, 5],
"is_focus_race": true,
"focus_banker": [
{
"horse_no": 3,
"horse_name_ch": "重心馬",
"win_odds": 8.4,
"pred_odds": 8.1,
"diff_pct": -3.6,
"win_prob_model": 0.10,
"heat_pct": 14.2,
"whale_score": 858,
"pace_class": 0,
"pace_label": "快",
"running_style": "frontMid",
"style_label": "前領",
"style_fit": false,
"scope": "strict",
"confidence": { "level": "medium", "label_ch": "中", "expected_top3_pct": 28 }
}
],
"focus_signals": {
"banker_horse_no": 3,
"band": "6-10",
"heat_top3": [ { "horse_no": 3, "heat_pct": 14.2 }, { "horse_no": 1, "heat_pct": 12.1 }, { "horse_no": 5, "heat_pct": 9.8 } ],
"model_top4": [ { "horse_no": 1, "win_prob_model": 0.19 }, { "horse_no": 3, "win_prob_model": 0.10 } ],
"adj4": [ { "horse_no": 1 }, { "horse_no": 3 }, { "horse_no": 7 } ],
"consensus": [ { "horse_no": 3, "heat_pct": 14.2 } ],
"heat_rank": [ { "horse_no": 3, "heat_pct": 14.2 }, { "horse_no": 1, "heat_pct": 12.1 } ]
},
"focus_bets": {
"banker": 3,
"banker_name": "重心馬",
"banker_odds": 8.4,
"band": "6-10",
"quinella": {
"label": "連贏 重心馬+fit頭1腳", "stake_note": "1 注",
"banker": 3, "legs": [1], "combos_n": 1, "odds_available": true,
"combos": [ { "combo": "3-1", "legs": [3, 1], "odds": 12.0 } ]
},
"qpl": {
"label": "位置Q 重心馬+fit頭1腳", "stake_note": "1 注",
"banker": 3, "horses": [3, 1], "legs": [1], "combos_n": 1, "odds_available": true,
"combos": [ { "combo": "3-1", "legs": [3, 1], "odds": 5.0 } ]
},
"forecast": {
"label": "二重彩 複式(重心馬+fit頭1腳)", "stake_note": "2 注",
"banker": 3, "legs": [1], "combos_n": 2, "odds_available": false,
"combos": [
{ "combo": "3>1", "order": [3, 1], "odds": null }, { "combo": "1>3", "order": [1, 3], "odds": null }
]
},
"win": {
"label": "獨贏 重心馬", "stake_note": "1 注",
"banker": 3, "combos_n": 1, "odds_available": true,
"combos": [ { "combo": "#3", "legs": [3], "odds": 8.4 } ]
},
"trio": {
"label": "單T 一膽拖三腳", "stake_note": "3 注",
"banker": 3, "legs": [1, 5, 7], "legs_source": "fit",
"qualified": true, "filter": { "hot_model5": 4, "late7_hot5": 4 },
"combos_n": 3, "odds_available": false,
"combos": [
{ "combo": "1,3,5", "odds": null }, { "combo": "1,3,7", "odds": null }, { "combo": "3,5,7", "odds": null }
]
},
"tierce": {
"label": "三重彩 一膽拖三腳", "stake_note": "18 注",
"banker": 3, "legs": [1, 5, 7], "legs_source": "fit",
"qualified": true, "filter": { "hot_model5": 4, "late7_hot5": 4 },
"combos_n": 18, "odds_available": false,
"combos": [
{ "combo": "1,3,5", "odds": null }, { "combo": "1,5,3", "odds": null }, { "combo": "3,1,5", "odds": null }
]
},
"first4": {
"label": "四連環 兩膽拖四腳", "stake_note": "6 注",
"banker": 3, "banker2": 1, "bankers": [3, 1], "legs": [5, 7, 2, 8], "legs_source": "model",
"combos_n": 6, "odds_available": false,
"combos": [
{ "combo": "1,2,3,5", "odds": null }, { "combo": "1,2,3,7", "odds": null }
],
"note": null
}
},
"cold_horses": [
{ "horse_no": 8, "horse_name_ch": "精選配腳A", "tag": "精選配腳", "win_odds": 12.0 },
{ "horse_no": 12, "horse_name_ch": "精選配腳B", "tag": "精選配腳", "win_odds": 15.0 },
{ "horse_no": 2, "horse_name_ch": "冷門馬", "tag": "冷門", "win_odds": 35.0 }
],
"dark_horses": [
{ "horse_no": 2, "horse_name_ch": "冷門馬", "tag": "冷門", "win_odds": 35.0, "residual": 0.012 }
],
"confidence": { "level": "⭐⭐⭐", "score": 85, "signals": { "#1_odds": 2.3, "#2_odds": 4.1, "score_gap": 0.067 } },
"hit_rates": { "win_hit": true, "place_hit": true, "top4_hit_count": 3 },
"focus_hits": { "qin": { "hit": true, "div": 78.5, "stake": 10 }, "qpl": { "hit": true, "hits": 1, "div": 24.5, "stake": 10 }, "fct": { "hit": false, "div": null, "stake": 20 } }
}※ v3.2: cold_horses 分 精選配腳 (Model #5-6) 同 冷門 (residual picks),用 tag 區分。confidence 改用 level (⭐⭐⭐/⭐⭐/⭐) + signals (#1_odds/#2_odds)。
※ §90.124(2026-10-08):舊 tier「投注策略」(betting_recommendation / betting_hits,G4/G5 分歧場限定 WIN/F4/TRIO/TCE)已全面退役,一律唔再輸出(回 null)。取而代之 = focus_banker / focus_signals / focus_bets(重心馬 7 瓣:獨贏/連贏/位置Q/二重彩/單T/三重彩/四連環)+ focus_hits(逐場賽後命中+真 HKJC 派彩)。
※ §90.122:連贏/位置Q/二重彩 三瓣統一 = 「重心馬 + fit 頭1腳」同一對馬(連贏 1 注、位置Q 1 注、二重彩複式 2 注/$20)。
※ v3.6(breaking):place_prob / top4_prob 而家出 模型原本機率(raw、pre-heat)。raw 永遠 < 1(約 0.88 以下),所以正常唔會出「100%」。heat-adjusted 版純粹內部用嚟排序,唔會出街(已移除 *_prob_heat)。win_prob 不變。
重心馬(做膽用)
focus_banker 係一個 array(該場冇重心馬 = 空 array [];free = null)。最多一隻,一定帶 scope="strict"。
⚠️ 重心馬(揀馬做膽)同 重心場(★ is_focus_race,標場)係兩件獨立嘅事 —— 重心馬唔再受重心場/步速影響。
重心馬口徑(v4.2,2026-10-09)
- 三重合體 = 熱度頭3(
whale_scores.total_whale)∩ 四選(win_prob_model頭4)∩ 末段ADJ4(race_sim.pick4_adj)。 - 重心馬 = 三重合體入面,獨贏賠率落 6–10 帶、熱度最高嗰隻(做膽)。
- 冇馬落 6–10 帶 → 空 array(
[])。
⚠️ v4.2 起停用舊「重心場內次熱」口徑(v4.1)同更舊「正數表」口徑。 原因:三重合體(資金流+模型+段速)+ 6–10 賠率帶 回測 ROI 明顯較好(見下),且唔再靠步速 gate。 舊 scope="top4" 已停用。
※ 賠率用實時 race_runners.win_odds;/v1/b2b/results 嘅prediction_snapshot.focus_banker 係賽前凍結版本。 6–10 帶係用終賠回測出嚟,實時賠率選膽會略有出入;<4 匹走馬(無盤)時可能空 array。
顯示欄位(唔影響揀膽)
每個元素另有:win_odds(獨贏)、pred_odds(模型預期賠率 = 0.811812 / win_prob_model)、diff_pct、win_prob_model、heat_pct/whale_score(熱度=whale 資金流)、pace_class/pace_label(預測步速;0/1/2 = 快/中/慢)、running_style/style_label(該馬賽前跑法)、style_fit(該馬自己啱唔啱步速:true/false/null=中性)。
信心程度(v3.11 新增)
focus_banker[i].confidence(object,每隻都有)= 該隻重心馬嘅信心程度, 由佢自己嘅 win_prob_model 分段(唔係用 place/top4 機率衍生)。 格式 {level, label_ch, expected_top3_pct}:
win_prob_model < 0.062 → normal(普通) 歷史入三甲 ~20% 0.062 – 0.088 → medium(中) 歷史入三甲 ~28% >= 0.088 → high(高) 歷史入三甲 ~36%
※ 189 場 walkforward 實測(只計重心馬實際揀中嗰隻)。expected_top3_pct 係歷史值,僅供參考, 唔係該場嘅預測機率。win_prob_model 越高 ≈ 賠率越短,所以上升有部分係「越熱門越易入位」。
重心馬投注方法(focus_bets)
有重心馬時,同時回 focus_bets(該場冇重心馬 = null/free = null), 直接俾你七個池嘅具體注碼結構 + 每注組合賠率。重心馬做膽,腳來源見下表。
七個池(v4.3 起)
| key | 玩法 | 結構 | 落注過濾 |
|---|---|---|---|
| quinella | 連贏 QIN | 重心馬+fit頭1腳(同一對馬,1 注) | — |
| qpl | 位置Q QPL | 重心馬+fit頭1腳(同連贏同一對馬,1 注) | — |
| forecast | 二重彩 FCT | 複式(重心馬+fit頭1腳)(有序買齊兩邊 = 2 注) | — |
| win | 獨贏 WIN | 重心馬(1 注) | — |
| trio | 單T TRIO | 一膽拖三腳(腳 = fit 頭3,3 注) | 無 gate(§90.117) |
| tierce | 三重彩 TCE | 一膽拖三腳(有序)(腳 = fit 頭3,18 注) | 無 gate(§90.119) |
| first4 | 四連環 F4 | 兩膽拖四腳(第二膽 = 熱度首要非膽,腳 = model 頭4,6 注) | — |
每個池 object 有:label(玩法名)、stake_note(注數說明)、combos_n(注數)、odds_available(有冇賠率源)、combos(逐注:{combo, legs|order, odds})。 連贏/位置Q 嘅 odds 係實時組合賠率(取自 odds_history 最近 snapshot 嘅 QIN/QPL 矩陣), resolver 唔到嗰注 = null。
⚠️ 單T(trio)/三重彩(tierce)額外帶qualified(bool)+ filter({hot_model5, late7_hot5})—— 成本貴,所以只喺兩重過濾達標(熱∩模5≥4 且 末段頭7∩熱度頭5≥3)先落注;qualified=false 時 combos 仍然會回,但唔建議落注。四連環(first4)帶 banker2(絕對第2熱)、bankers(兩隻膽)、legs_source("heat")+ note(重心馬本身係熱度第2 → 冇絕對第2膽時為字串)。獨贏(win)腳 = 重心馬本身,combos[].combo 格式 "#3"。
⚠️ 二重彩(FCT)冇「即時賠率」數據源(HKJC 唔出 FCT 賠率池,odds_history只有 WIN/PLA/QIN/QPL/F4/TRIO/QUARTET),所以 forecast.combos[].odds永遠 null、odds_available=false。 但 賽後派彩有 —— HKJC 結果頁本身有二重彩彩池,v4.2 起已 scrape 入race_dividends(pool='FCT',有序 第1名/第2名), 喺 /v1/b2b/results/... 嘅 dividends.FCT 攞到(key 例 "7>9")。
實測(2026-2027 季至今、凍結 focus_bets + 真 HKJC 派彩、每 $10 一注)
玩法 命中 率 注/場 總成本 總回本 淨ROI 連贏 一膽拖三腳 8/27 30% 3 810 969 +20% 位置Q 三隻 Box 13/27 48% 3 810 686 -15% 二重彩 複式馬膽(膽可1/2位) 8/27 30% 6 1,620 1,851 +14% 獨贏 重心馬 2/27 7% 1 270 151 -44% 單T 一膽拖三腳(過濾後) 2/16 13% 3 480 677 +41% 三重彩 一膽拖三腳(過濾後) 2/16 13% 18 2,880 3,054 +6% 四連環 兩膽拖四腳 3/18 17% 6 1,080 2,423 +124% ───────────────────────────────────────────────────────────── 合計 7,950 9,810 +23%
※ 只計「有 6–10 帶重心馬」嘅場(本季 27 場)。數字 = 凍結 focus_bets 對真派彩, 同公開首頁嘅「重心馬投注方法戰績」完全一致(可由 /v1/stats/focus-roi 覆核)。 單T/三重彩只計過濾達標嘅場(8→16 場),成本貴所以嚴格先落。二重彩定案用「膽可 1 或 2 位」(有序,買齊「膽>腳」同「腳>膽」= 6 注)。
海外賽事回應
GET /v1/b2b/races/2026-07-28/S1/1
海外 venue code 用 S1-S9 格式,包含 HKJC 匯合彩池、Bookmaker 賠率、AI 預測(Score%)。
{
"race_date": "2026-07-28",
"venue": "S1",
"race_no": 1,
"race_id": "2026-07-28-S1-1",
"is_overseas": true,
"country": "英國",
"course": "古活馬場",
"post_time": "2026-07-28T20:50:00+08:00",
"distance": 1985,
"track": "草地",
"going": "好地",
"num_horses": 17,
"runners": [
{ "horse_no": 1, "horse_name_ch": "任意行", "win_odds": 13.0,
"jockey_name_ch": "李奇豐", "trainer_name_ch": "伯特",
"last6run": "5/8/4/5/1" },
{ "horse_no": 7, "horse_name_ch": "迪哥芝味", "win_odds": 5.8, ... }
],
"hkjc_odds": [
{ "pool_type": "WIN", "comb_string": "07", "horse_name_ch": "迪哥芝味", "odds_value": 5.8 },
{ "pool_type": "PLA", "comb_string": "07", "odds_value": 1.7 },
{ "pool_type": "QIN", "comb_string": "07,14", "odds_value": 42.0 },
{ "pool_type": "QPL", "comb_string": "07,14", "odds_value": 19.0 }
],
"bookmaker_odds": [
{ "horse_name_en": "Diego El Queso (IRE)", "best_decimal_odds": 5.5 },
{ "horse_name_en": "Al Aali (FR)", "best_decimal_odds": 7.5 }
],
"predictions": [
{ "horse_no": 7, "name_ch": "迪哥芝味", "prob": 0.425, "pick": true },
{ "horse_no": 14, "name_ch": "皇屬晴空", "prob": 0.421, "pick": true },
{ "horse_no": 16, "name_ch": "超頂級", "prob": 0.418, "pick": true }
]
}※ runners 已過濾退出馬(Scratched);hkjc_odds 包含 WIN/PLA/QIN/QPL 四種彩池;predictions 按 Score% 高至低排序,Top 3 標記為 PICK。
Webhook 系統
Webhook 讓你嘅程式喺數據變動時實時收到推送通知。限 Business / Enterprise 等級。
事件類型
| 事件 | 描述 |
|---|---|
| results.updated | 官方賽果出爐 |
| predictions.updated | 新模型預測生成 |
| test.ping | 測試事件 |
註冊 Webhook
POST /v1/b2b/webhooks
curl -X POST -H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"url":"https://your-server.com/hook","events":["results.updated"],"secret":"your-secret"}' \
https://racingapi.scga.hk/v1/b2b/webhooks簽名驗證(Python)
import hashlib, hmac
def verify(body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)客戶端範例
Python
import requests
BASE = "https://racingapi.scga.hk/v1"
HEADERS = {"Authorization": "Bearer <YOUR_API_KEY>"}
# 搜尋馬匹
r = requests.get(f"{BASE}/b2b/horses/search", params={"q": "金"}, headers=HEADERS)
print(r.json())
# 賽事詳情(Business+ 有對陣矩陣)
r = requests.get(f"{BASE}/b2b/races/2026-07-08/HV/1", headers=HEADERS)
race = r.json()
print(f"Top 4: {race['top4_horses']}")cURL
# 列出日期賽事
curl -H "Authorization: Bearer <YOUR_API_KEY>" \
https://racingapi.scga.hk/v1/b2b/races/2026-07-08
# 分段時間分析(Business+)
curl -H "Authorization: Bearer <YOUR_API_KEY>" \
"https://racingapi.scga.hk/v1/b2b/analysis/sectionals?date=2026-07-08&venue=HV&race_no=1"
# 提交 B2B 查詢(免認證)
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"John","email":"[email protected]","message":"想了解 Enterprise"}' \
https://racingapi.scga.hk/v1/b2b/inquiry數據字典
預測欄位
| 欄位 | 類型 | 描述 |
|---|---|---|
| race_id | string | 全站唯一場次代碼 — {race_date}-{venue}-{race_no}(例:2026-06-10-HV-7)。所有 race 相關 endpoint 都有;扁平 array 入面請用佢做 key(race_no 會跨 venue 重複) |
| win_prob | float (0-1) | XGBoost 模型獨贏機率 |
| place_prob | float (0-1) | 模型位置(頭三名)機率 — 原本 raw(pre-heat),v3.6 起 |
| top4_prob | float (0-1) | 模型入 Top 4 機率 — 原本 raw(pre-heat),v3.6 起 |
| place_prob_model | float (0-1) | 同上,原始模型欄位(向後兼容) |
| top4_prob_model | float (0-1) | 同上,原始模型欄位(向後兼容) |
| cold_horses | array | 精選配腳(Model #5-6)+ 冷門(residual),用 tag 區分 |
| dark_horses | array | 冷門馬(residual picks),模型鍾意但市場低估 |
| confidence | object | {level: ⭐⭐⭐/⭐⭐/⭐, score, signals: {#1_odds, #2_odds}} |
| betting_recommendation | object | null | ⚠️ §90.124 已退役(2026-10-08)— 舊 tier 投注策略(G4/G5 分歧場限定 WIN/F4/TRIO/TCE)。一律回 null;新玩法睇 focus_bets |
| betting_hits | object | null | ⚠️ §90.124 已退役 — 舊投注策略賽後命中。一律回 null;新玩法睇 focus_hits |
| betting_date_stats | object | null | ⚠️ §90.124 已退役 — 舊 tier 是日投注總回報。日列表 endpoint 改回 focus_date_stats(重心馬) |
| focus_banker | array | 重心馬(做膽用)— array(冇 = [];free = null),最多一隻(scope: strict)。v4.2 起口徑 = 三重合體(熱度頭3 ∩ 四選 ∩ 末段ADJ4)中獨贏賠率落 6–10 帶、熱度最高嗰隻。每元素 {horse_no, horse_name_ch, win_odds, pred_odds, diff_pct, win_prob_model, heat_pct, whale_score, pace_class, pace_label, running_style, style_label, style_fit, scope, confidence}。舊 scope top4 已停用。口徑見「重心馬(做膽用)」一節 |
| focus_signals | object | null | 重心馬三組原始訊號(v4.2 新增):{banker_horse_no, band, heat_top3, model_top4, adj4, consensus, heat_rank}。heat_top3 = 熱度頭3(whale_scores.total_whale);model_top4 = win_prob_model 頭4;adj4 = race_sim.pick4_adj;consensus = 三組交集(三重合體);heat_rank = 全場熱度排序。free = null |
| focus_bets | object | null | 重心馬投注方法 + 組合賠率(v4.2 新增,v4.3 擴到 7 瓣):{banker, banker_name, banker_odds, band, quinella, qpl, forecast, win, trio, tierce, first4}。§90.122 起 **連贏/位置Q/二重彩 = 同一對馬(重心馬 + fit 頭1腳)**:連贏 = 1 注(QIN 組合賠率);qpl = 1 注(QPL 組合賠率,帶 banker/legs);forecast = 二重彩複式 2 注(有序,買齊兩個次序);win = 獨贏重心馬(1 注);trio = 單T 一膽拖三腳(腳=fit 頭3,3 注);tierce = 三重彩一膽拖三腳(有序,18 注);first4 = 四連環兩膽拖四腳(第二膽=熱度首要非膽,腳=model 頭4,6 注)。每池有 {label, stake_note, combos_n, odds_available, combos:[{combo, legs|order, odds}]};trio/tierce 另帶 qualified(現恆為 true,舊「兩重過濾」已停用)+ filter;first4 帶 banker2/bankers;win 用 combo 格式 #N(例 #3)。連贏/位置Q odds = 實時組合賠率(odds_history QIN/QPL 矩陣);其餘冇即時賠率源 → odds 永遠 null(但賽後派彩喺 /v1/b2b/results 嘅 dividends)。冇重心馬 = null。口徑見「重心馬投注方法(focus_bets)」一節 |
| focus_hits | object | null | 重心馬投注方法逐場賽後命中+真派彩(v4.3 新增,7 瓣;$10/注):{qin, qpl, fct, win, trio, tce, f4, finish_top3},每瓣 {hit, div, stake}(qpl 另有 hits)。(trio/tce 只在凍結 focus_bets 嘅 qualified=true 先計。) 只喺單場詳情 endpoint(/v1/b2b/races/{date}/{venue}/{race_no})回;未結算/冇重心馬 = null。(季節總 ROI 睇公開 /v1/stats/focus-roi。) |
| has_focus_bet | bool | ★ 重心場(v4.3 新口徑)= 呢場有冇重心馬投注策略(focus_bets 有膽;即 7 瓣投注方法有得買)。**唔 gate premium**(淨係標場,唔揭示邊隻馬)。只喺「日期列表」endpoint(/v1/b2b/races/{date} 同 /v1/races/{date})回;單場詳情唔回。前端 Meeting 的 ★/金圈/「重心場」徽章用呢個 |
| is_focus_race | bool | 舊 ★ 重心場口徑(§90.22–25,只作向後兼容,前端唔再用)— 只喺「日期列表」endpoint(/v1/b2b/races/{date})回;= 大熱(最低獨贏賠率)賽前跑法唔配合預測步速(_pace_style_fit === false)。同「重心馬」/has_focus_bet 互相獨立 |
| pace_forecast | object | null | 賽前步速預測(場次層,唔係每匹馬):pred_class_chi / pred_delta / standard_total / standard_total_display,另有 probs(fast/mid/slow)、pred_conf、direction、pace_index / pred_index 等。⚠️ 官方定位係記錄/研究用,非 trading signal。賽後實際值睇 /v1/b2b/results 嘅 pace |
場地代碼
| 代碼 | 名稱 | 跑道 |
|---|---|---|
| ST | Sha Tin 沙田 | Turf & Dirt |
| HV | Happy Valley 跑馬地 | Turf |
限額標頭
所有 B2B 回應都包含限額資訊標頭:
X-RateLimit-Minute-Remaining: 29 X-RateLimit-Month-Remaining: 9847 X-RateLimit-Month-Overage: 0
更新日誌
v4.4 (2026-10-08,breaking) — 舊 tier「投注策略」全面退役(§90.124):betting_recommendation / betting_hits / betting_date_stats 一律回 null(唔再輸出);/v1/stats、/v1/stats/betting、/v1/season-history、/v1/b2b/stats/{season} 嘅 pools 變空(只剩 model_stats)。取而代之 = 重心馬 focus_bets(7 瓣)+ focus_hits;季節 ROI 睇 /v1/stats/focus-roi;/v1/strategy/bets 改由 focus_bets 出。舊 client 若讀 tier 策略欄位要改。
v4.3 (2026-10-09) — focus_bets 由 3 瓣擴到 7 瓣:新增 win(獨贏重心馬)、trio(單T 一膽拖三腳,腳=模型頭3)、tierce(三重彩一膽拖三腳,有序)、first4(四連環兩膽拖四腳,第二膽=絕對第2熱)。trio/tierce 帶 qualified+filter(兩重過濾「熱∩模5≥4 且 末段頭7∩熱度頭5≥3」,成本貴所以嚴格先落)。新增逐場賽後命中欄位 focus_hits(7 瓣 {hit, div, stake},只喺單場詳情 endpoint)。⚠️ 舊場嘅凍結 focus_bets 只有 3 瓣,已 backfill 補齊。純新增、向後兼容(原有 3 瓣 key 完全不變,數字亦不變)。
v4.2 (2026-10-09,breaking) — focus_banker 口徑改為「三重合體」(熱度頭3 ∩ 四選 ∩ 末段ADJ4)中獨贏賠率落 6–10 帶、熱度最高嗰隻,唔再靠步速/重心場。新增 focus_signals(三組原始訊號:heat_top3 / model_top4 / adj4 / consensus)同 focus_bets(重心馬投注方法:連贏一膽拖三腳 + 位置Q 三隻 Box + 二重彩複式馬膽,逐注組合賠率)。移除 fav_no/fav_odds/fav_style/place_prob(改出 heat_pct/whale_score)。⚠️ 二重彩冇「即時賠率」數據源 → forecast.combos[].odds 永遠 null;但 賽後派彩已補齊(HKJC 結果頁本身有二重彩彩池,v4.2 起 scrape 入 race_dividends pool='FCT' 有序對)→ /v1/b2b/results/... 嘅 dividends.FCT(key 例 "7>9")。口徑見「重心馬(做膽用)」同「重心馬投注方法(focus_bets)」兩節。舊 client 若靠 v4.1 次熱口徑要調整。
v4.1 (2026-10-03,breaking) — focus_banker 口徑改為「重心場(大熱跑法唔配合預測步速)內嘅次熱(賠率第 2 低)」,取代舊「正數表」(win≥5%+差%>0+四選以外+預 7–15)。scope="top4" 停用(array 而家最多一隻,一定 strict)。新增純顯示欄位 pace_class/pace_label(+原有 running_style/style_label/style_fit、fav_*),唔影響揀膽。is_focus_race 亦改為「大熱跑法唔配合步速」判定,唔再由重心馬推導。舊 client 若靠 scope="top4" 要調整。
v4.0 (2026-09-30,breaking) — focus_banker 由 object 改為 array(最多兩隻,靠 scope 分辨口徑:strict=四選以外做膽、一定喺 [0];top4=寬口徑∩四選)。舊 B2C-only 嘅 focus_banker_top4 併入 array,唔再另出。所有回 focus_banker 嘅 endpoint 一致。舊 client 讀 focus_banker.horse_no 要改 focus_banker[0].horse_no。
v3.11 (2026-09-30) — focus_banker 新增 confidence(信心程度):由該隻馬自己嘅 win_prob_model 分段(normal/medium/high + label_ch + expected_top3_pct),唔用 place/top4 機率衍生。出現喺所有回 focus_banker 嘅 endpoint(/v1/b2b/races/...、/v1/b2b/results/...)。189 場 walkforward 實測支撐。口徑見「重心馬(做膽用)」一節。純新增、向後兼容。
v3.10 (2026-09-28) — 新增 focus_banker(重心馬/做膽用):出現喺 /v1/b2b/races/{date}、/v1/b2b/races/{date}/{venue}/{race_no} 同 /v1/b2b/results/...(prediction_snapshot.focus_banker,賽前凍結判斷)。同日新增 is_focus_race(★ 焦點場)— 只喺日期列表 endpoint(/v1/b2b/races/{date}),單場詳情唔會回。同時補回一直漏咗嘅 /v1/b2b/results 兩個 endpoint 入文檔。口徑見「重心馬(做膽用)」一節。純新增、向後兼容。
v3.9 (2026-09-26) — 所有 race 相關 endpoint(/v1/b2b/races/{date}、/v1/b2b/races/{date}/{venue}/{race_no}、/v1/b2b/predictions/latest、/v1/b2b/results/...)新增 race_id 欄位(格式 {race_date}-{venue}-{race_no},例:2026-09-26-ST-9)。純新增、向後兼容 —— venue / race_no 完全不變。原因:日期列表同最新預測係扁平 array(本地 + S1-S9 海外混埋),海外 race_no 由 1 重數會同本地撞;race_id 係全站唯一,請用它做 key / join。
v3.8 (2026-08-09) — 投注策略升級為 G5 靈活:分歧場限定(model #1 ≠ 市場大熱)、2馬膽拖5腳 F4 $100 + 複式單T 4選 $40 + WIN(冇 gate)$10,每分歧場合計 $150。所有季績均改為 walk-forward 回測(真實 HKJC 派彩、組合式 ROI 數學);/v1/b2b/stats/{season} 只開放近 5 季(2021-22 → 2025-26),更早嘅 10 季回測為內部資料;公眾 /v1/stats/betting 只開放近 3 季。
v3.7 (2026-08-08) — 投注策略升級為 G4 全Model:馬膽 = model #1(純 model win_prob),配腳 = 純 model,唔再混市場賠率(舊 blend 腳退役);ranking / top4 / 馬膽 / 配腳 一律全Model。3季 walkforward 實測(真實 HKJC 派彩,F4+單T 分歧核心 $160/場)合計 +49.0% ROI(2023-24 +77.7% / 2024-25 +31.2% / 2025-26 +36.1%,1,444 場);WIN $10 value-gated side-bet 另列。
v3.6 (2026-08-07) — 投注策略升級為 G4 靈活:分歧場限定(model #1 ≠ 市場大熱)、冇分級門檻,F4 一膽拖5 blend腳 $100 + 單T 一膽拖4 blend腳 $60 + WIN(value) $10,每分歧場合計 $170。3季 walkforward 實測(真實 HKJC 派彩)合計 +20.1% ROI(2023-24 +25.5% / 2024-25 +32.1% / 2025-26 +4.4%),每季正回報。
v3.5 (2026-08-05) — /v1/stats 及 /v1/b2b/stats/{season} 改為即時計算(唔再讀舊 snapshot),返回 model_stats(全季命中率)+ pools(G4 投注 ROI,真實 HKJC 派彩、flexi-bet 單位正確);betting_recommendation.strategy 加入 name + tier。
v3.2 (2026-08-01) — XGBoost 模型上線:95 項基礎數據預測;精選配腳(Model #5-6)+ 冷門(residual)分開顯示,用 tag 區分;confidence 改用 level (⭐⭐⭐/⭐⭐/⭐) + signals (#1_odds/#2_odds);新增 betting_recommendation(獨贏·四連環·單T)、betting_hits(命中+真實HKJC派彩)、betting_date_stats(是日投注回報);flop_analysis 已移除;cold_horses 格式更新。
v3.1 (2026-07-28) — 海外賽事支援:S1-S9 venue code 可用於所有 race endpoint;返回 HKJC 匯合彩池賠率(WIN/PLA/QIN/QPL)、Bookmaker 賠率(Bet365/Unibet)、AI 預測(Score% + PICK);`has_overseas` flag on date list;`is_overseas` flag on race detail;model_rankings(M1-M4)in response。
v3.0 (2026-07-09) — 12 個新 B2B endpoint:馬匹搜尋/資料/賽績/操練/試閘、騎師練馬師搜尋/詳細、賠率時序/批次、分段分析;Business+ 有 QIN/QPL 對陣矩陣、Enterprise 有原始模型評分;Webhook 系統(HMAC-SHA256);分級數據開放。
v2.0 (2026-06-11) — 首個 B2B API 版本,三級制 Pro / Business / Enterprise。