🐎 Benter Racing 白皮書← 目錄

racing_engine V10.0 白皮書(基礎篇)

以條件邏輯回歸(Benter 框架)建立可重現、防洩漏、可窮舉驗證的香港賽馬首選預測系統

版本 10.0(特徵雜湊 bb6a8f58) 歷史錨點 4fc88c8d 日期 2026-06-20 樣本外時段 A:2026-03-01 至 06-13(299 場);B:2025-09-01 至 2026-03-01(474 場)

本篇為 V10 系列的基礎白皮書,除記錄 V10.0 的結果外,亦完整奠定本系統的紀律、方法、框架、工具、數學與護欄。其後每個特徵版本(10.1、10.2…)各撰一篇,沿用本篇的方法與護欄,只記錄該版的增量。全文數據來自 registry 與窮舉掃描結果,不經人手輸入


第一部:基礎(方法論)

0. 摘要

racing_engine 是一個從零重建的香港賽馬首選預測系統,以 Benter 條件邏輯回歸為核心。其設計把所有「會變的東西」參數化為三層——歷史(不可變資料)/特徵(計算碼)/參數(可調值)——並以五元組 ReproKey 鎖定可重現性。V10.0 忠實重做 Eric 的 V10.0 規格(5 特徵、Benter+XGB 集成),並在 4 部 Intel 認證機上窮舉 90,720 組參數、於兩個樣本外時段驗證。核心結論:在 5 特徵下 XGBoost 淨負面,純 Benter 最優(加權勝 22.4% / 位 49.4%,較基準 +2.5 / +1.9pp,且確定性)。

1. 宗旨

香港賽馬首選預測=場內排名問題:給定一場 N 匹馬,估計各馬勝出機率並選出首選。V10.0 的目標不是追求最高準繩,而是建立一個可信的地基:可重現、防洩漏、可窮舉驗證、誠實(不報假數)。一切日後改良(R 系列特徵工程)皆站在此地基上。

2. 紀律與哲學

  1. 可重現性優先:同一 (歷史, 特徵版本, 參數, 種子, 環境) → 任何同類機器上逐位元相同的結果。沒有可重現性就沒有科學。
  2. 兩窗樣本外,否則不信:每個結論須在時段 A(近)與 B(遠)皆成立。單窗結果會說謊(見 §12 的 draw 窗 A 海市蜃樓)。
  3. 誠實,不報假數:報告勝/負皆據實;一個未能在兩窗成立的「改進」即否決並記錄。寧可記負面結果,不可賣會蒸發的數字。
  4. 盲賠率(odds-blind):模型機率不得偷看賠率;賠率只在第二階段(EV/投注)使用——否則模型腳就塌進市場(三腳凳原則)。
  5. 先忠實、後改良:先精確重做規格(V10.0),再逐個特徵改良;每次只變一個變量。
  6. 窮舉→學習→結論→記錄,然後才動下一個特徵。

3. 框架與架構

三層(唯一會變的東西): - 歷史 (History):不可變資料;鎖定的馬卡一旦定案即成歷史。一次性載入 RAM 雜湊表;內容雜湊 snapshot_hash 覆蓋引擎讀取的所有欄位(賽果 7 欄+場次中繼)。 - 特徵 (Features):純 Python 計算碼。改任何計算方法 → 升特徵版本(10.0 → 10.1)。版本雜湊=該模組原始碼的 SHA。 - 參數 (Parameters):可調旋鈕。只改參數值 → 升構建(10.0.1 → 10.0.2)。

編號 <系列>.<特徵版本>.<構建>(如 10.0.3)。 ReproKey = (history_hash, feature_version_hash, param_hash, seed, env_fingerprint)。五者相同 → 結果相同。任何構建可由 registry 的 ReproKey + 參數 + 特徵版本精確重建

4. 數學

4.1 Benter 條件邏輯回歸(核心勝出階段):每匹馬效用 Uᵢ = Σₖ βₖ xₖᵢ;場內 softmax P(i 勝 | 場) = exp(Uᵢ) / Σⱼ exp(Uⱼ)。 本引擎 LogisticRegression.decision_function(X) 給出 Uᵢ,再場內 softmax——這正是 Benter 多項 logit 勝出階段。betas 由 MLE 在嚴格早於當前場的資料上擬合(非硬編碼)。

4.2 集成:win_prob = w·benter + (1−w)·xgb,場內歸一化。w 為構建參數(窮舉)。

4.3 入位機率(Harville):P(i 第二 | j 第一) = pᵢ/(1−pⱼ),遞推得入位(首三)機率;折扣 γ 應在驗證窗擬合,不可照搬文獻常數。

4.4 經驗貝葉斯收縮(Beta-Binomial,用於稀疏率,如檔位):對單元 c,θ̂ = (w_c + κ·μ) / (n_c + κ),μ 為上層均值,κ 為收縮強度(pseudo-觀測數)。把稀疏單元拉向母體,避免過擬合。關鍵防洩漏陷阱:κ 與 μ 必須由「逐場後更新的累加器快照」逐場即時重估,絕不可用完整表的最終 (w,n) 擬合——否則整個未來會洩漏進早場的收縮強度。本系統把 κ 設為構建參數(窮舉),μ 由點對點累加器即時算出,徹底消除此擬合洩漏面。

4.5 過彎失地(弧長幾何):在半徑 R、夾角 θ(弧度)的彎上,外走 p 條線者多跑 Δ = p·w·θ(w=線寬)。全程 Δ_total = w·Σᵢ(pᵢ·θᵢ)。約每線寬每 90° 彎 1–3 米;HV 緊彎 3 線外可達 4–5 個馬位。示例:HV 1200m 第 8 檔(約 7 條線外、θ_total≈1.6–2.4 弧度、線寬 1.8m)幾何上多跑約 20 米(~8 個馬位);惟馬可在彎上略快自我補償,實際讓賽約幾何值的一半,故係數 β 由資料學習、不可硬設秒數,並待分段數據校準。彎道超越更貴:要超越須走更外=瞬間跑更遠。

4.6 場形/競爭與位置動態:純場層純量在場內 softmax 中相消,故只能透過交互項(如 closer×步速壓力、closer×彎角)或場內相對(能力減場均)起作用。沿途走位可建為馬可夫傳遞矩陣並以矩陣乘法解析傳播(確定性),優於蒙地卡羅(避免種子不確定性)。

4.7 多重比較統計:窮舉 K 組會令「最佳」被雜訊抬高 ~√(log K);299 場的勝率標準誤約 ±2.3pp。故須以種子穩定性+空假設底線篩走雜訊冠軍(見 §7、§12)。

5. 方法

6. 工具與基建

7. 護欄

  1. 結構性防洩漏:累加器逐場後更新;新特徵須通過「截斷歷史」單元測試(改動未來場不得改變更早場的特徵值)。
  2. 兩窗閘:唯一仲裁;任一窗失分(勝)即否決。
  3. 種子穩定性:候選須在多個種子下維持優於基準。
  4. 空假設底線:增益須超過洗牌標籤/雜訊帶。
  5. 盲賠率:賠率不入特徵矩陣,只在第二階段包裝。
  6. 每 CPU 可重現:跨架構/跨 CPU 不保證逐位元一致 → 只在 Intel 認證機隊認證。
  7. 凍結版本不可改:升版本而非改舊版(保可重現)。
  8. 晉升生產=物主 GO:實驗/掃描自主進行;切換生產需物主批准。
  9. Eric 法則溯源:部分「Eric 法則」實為物主/Grok 口吻,須向 Eric 親身核實後方可作決策層守則。

第二部:V10.0 模型與實證

8. V10.0 模型與特徵

5 個點對點特徵:recent_form(近 ≤4 場名次,近期加權、距離調整)、jockey_scoretrainer_score(平滑勝率,優先同場同距離)、draw_adv(檔位幾何)、field_norm_draw(檔位/出賽匹數)。模型=Benter MLE + XGBoost 集成。

9. 假設

10. 資料與實驗設置

歷史庫 2,993 場;兩時段樣本外(A 近 299 場 / B 遠 474 場);窮舉 90,720 組(結構 XGB 720 × n_est 6 × 權重 21);4 機逐位元一致;逐賽日掃描、逐場認證。

11. 結果

構建 節奏 集成 (Benter/XGB) A 勝/位 B 勝/位 加權勝/位
10.0.1 逐場 0.60 / 0.40 21.07 / 45.82 18.78 / 47.05 ~19.7 / ~46.6
10.0.2 逐賽日 0.60 / 0.40 21.40 / 48.16 18.99 / 47.05 ~19.9 / ~47.5(基準)
10.0.3 逐場 1.00 / 0.00(棄 XGB) 24.75 / 51.84 20.89 / 47.89 ~22.4 / ~49.4

H1 成立H2 成立H3 否證(XGB 淨負面);H4 成立(單調曲面)。

12. 嚴謹性檢驗

13. 討論

5 特徵下 XGB 為高方差學習器,過擬合並為機率注入雜訊、擾亂 argmax;Benter 多項 logit(低方差、為排名而設)更勝。圖一方差收斂直觀證明此點。即時可落地增益=採用純 Benter;進一步增益須靠特徵工程(場形、步速、分段速度、彎道幾何),非參數。

14. 限制

5 特徵為最小核心(缺評分走勢、負距、場形/步速、分段速度);增益來自棄 XGB 而非神奇參數;特徵增多後 XGB 或重新有用(每版重掃裁決);結論基於兩時段,上線需監測漂移。

15. 結論

V10.0 確立可重現、防洩漏、四機逐位元一致的 Benter 基線,並經 90,720 組窮舉得穩健結論:純 Benter(棄 XGB)最優,加權 22.4% 勝 / 49.4% 位。參數空間已最優;下階段為逐特徵改良(每版一篇白皮書)。

兩窗閘的首個實證(護欄發揮作用的最佳示範):10.1 的 draw_eb——以真實歷史檔位勝率(經驗貝葉斯收縮、點對點)取代硬編碼 draw_adv——通過防洩漏與重現性測試,但於兩窗閘被否決:窗 A 改善(勝 +0.67)、窗 B 失分(勝 −1.3..−1.5),與既往實戰失敗同一海市蜃樓模式。故檔位維持 V10.0、draw_eb 不晉升。單窗測試會誤收此 +0.67 海市蜃樓;兩窗閘正確攔截——這正是本系統紀律的價值所在。

參考文獻

  1. Benter, W. (1994). Computer Based Horse Race Handicapping and Wagering Systems. In Hausch, Lo & Ziemba (eds.).
  2. Bolton, R. N., & Chapman, R. G. (1986). Searching for Positive Returns at the Track: A Multinomial Logit Model. Management Science 32(8).
  3. Harville, D. A. (1973). Assigning Probabilities to the Outcomes of Multi-Entry Competitions. JASA.
  4. Brohamer, T. Modern Pace Handicapping.
  5. racing_engine 內部:SWEEP_FINDINGS.mdV10.1_DESIGN.md、registry、原始數據 sweep_10.0_results.jsonl.gz、研究工作流 wf_358b92d2-229
racing_engine · 條件邏輯回歸(Benter)· 數據源自 registry / 窮舉掃描,不經人手輸入