2020年7月18日星期六

改變…為了走得更遠


在上文「看走得幾遠」中的實戰測試,終於走到季尾,結果是怎樣?當然是….未「贏」。事實既然如此,唯有繼續努力,先總結一下在這些年內的不同想法及思路。

老某「賭馬再培訓」的啟發點是受中大教授的官司開始,經深入了解後深信賠率優勢是永恆不敗。如經營賭場一樣,只要長期運行就立不敗之地,至於怎樣尋找優勢就沒有賭場般容易,一切要靠過往數據的解讀,利用大數據法則,這全都是不容易的事。

池兄在「積微錄」最新貼文中說明「砌模型」的最高心法是對馬匹「定價」的準確度,老某是完全同意,輸錢證明了「定價」失敗,這與經營生意一樣,長期計「錯價」就需要接受結業的懲罰。

在過去一直使用Binary Logistic Regression(簡稱LR) 的方法直接計算馬匹的機會率,點解?因為初期什麼都不知,看到Bill Benter的論文上說了算,沒有知識深究原因。這一年覺得模型差不多到了瓶頸,不如道原因只加到三十幾個Factors後就加不進去,當然這與數據的質量有關,老某只用馬會提供給公眾的通用數據,沒有半點自家製或其他內部資訊,亦完全認同一些獨特而有效的數據(如賽後評論),會提高模型的有效性。

近一年,試了很多Factors,無論在指標及回測上都未有太多改善,現時老某是用八年數據作Train(相對池兄來說這可能多了一點)在過程中隨意保留15%數據作回測,整體回測結果如下:

1)      以平注投注過往八年有賠率優勢的馬匹,回測結果是-10%,如只引用2019馬季至今的平注投注計算大約-9%,與預期差不多,這證明實際操作與預測一致。
2)      如以Kelly 下注2019馬季至今,結果是-4%,但在實際操作上這是會有所偏差的,因為臨場是不可能捕捉到最後賠率,而回測是用馬會提供的最後賠率。
3)      老某對這個計算結果亦感到意外,比想象好。今季沒有按預期以機械式下注(對一個馬迷來說始終覺得太悶了),仍然以經驗及模型結果作多方嘗試,但成績卻比只用模型下注為差,好彩仍未破產退場。

無論是-9%-4%一樣是負數,結果都是「輸錢」,有師兄會說買大一點用回扣就有勝機,但在實際操作下,對老某的資金壓力太大及這亦不是一個可靠的做法。

在此總結一下模型的近況,有多點是值得一提,亦希望各師兄能相助給老某一點啟示:

a)          如只買模型機會率最大的2-3匹馬,竟然是贏錢的!如只投注(不論是否有賠率優勢)機會率最大的12、甚至是3大機會馬,統計結果是有5%7%的利潤,與模型的回測的結果是大致相同,但建立模型的初始概念是尋找錯價的對象,而不是勝出的機會排列,加上Kelly Criterion在這情況下是沒有發揮的機會,「道」有所不同。老某實在不知原因何在?這可能與LR模型準確度有關吧?

b)          老某的模型,少有計算到低於3倍,以機率=p/1+pp>1才有2倍以下的賠率。在實戰中一些低於3倍的大熱門,甚本上是沒有賠率優勢,感覺上只要大熱門勝出,投資就泡湯了,這証明模型低估了部份熱門的真正實力,要增加有效Factor才可解決,但要增加Factor又絕不容易,困局也!

c)           LR模型是用Factors直接估算馬匹的勝出率,當然要經簡單運算,估計出來的勝出率,只代表單馬的情況,沒有與其他參賽馬直接互動的。再者,一場參賽馬估算的機會率加起來,一定不會等如1,有可能小或大於1,老某會再做Normalization,這動作已增加了不確定性,加上用線性的方法去標準化非線性的機會率,至今仍然未找到正確的做法。

d)          老某砌模型的方法始終是參考已經有二十多年歷史的Bill Benter(1994)資料做藍本,論文中他是使用Logistic Regression。但在2004 ICCM論壇中,他所講述的模型與1994方法已經大大不同,加上在1997後,馬會不再提供服務給他,他需要15分鐘前派人到投注站下注,即最後賠率在當時顯得比較不重要了,所以老某推論在後期他的模型與初期的不同,可能連方法也改變了。常言道不進則退,變幻才是永恆。

e)          有很多師兄認為不需深究方法,應集中數據運用,只要將現時的做到比公眾更優勝便可,可惜今時今日所謂的公眾會與已往一樣嗎?已證明不是。因老某的背景,深知不同工序有其限制及準確度,就算魔改後的蛙式也永遠快不過自由式的。老某自已是懷疑LR是不可能打敗現今的公眾,LR雖然在醫療判斷可是極佳的選擇,但用於賽馬就可能未必相同。

f)            老某深信賽事結構影響了部份因子的數據分佈及有效度,令Regression誤判有效但方向相反。這同樣會發生在其他運算方法,必須要有合適的數據處理方法去配合不同運算方法,可能是老某的表達有問題,往往令人誤解為數據精加工而增加over fitting的機會。

g)          又用名次及完成時間作比較,在同等的條件,分段時間/完成時間給予更多的資訊但無法掌握,而名次只有單一資訊。在高低班、快慢地、升降班時,同是冠軍但內裡卻是大不同的。雖然大家都知名次是一個極有效的因子,但不要放棄時間能給予的資訊更多。在老某實戰的經驗就是因為上賽/平均名次而吃虧,特別是一些班次升降機,EO計算時升班時偏熱,降班時偏冷的狀況經常出現。

h)          Two Step Model這步驟不會提升馬匹賠率優勢,只可以將「定價」拉近,大部份沒有賠率優勢的馬匹不會因Two Step而改變,尋找「錯價」是全靠One Step的準確度。當然Two Step也有其優點的地方,老某觀察自家模型數據所得,經Normalized後的最後EO,整體的投注量會減小,對「贏錢」有正面的影響。

老某砌模型的方法是參考有三十年歷史的Bill Benter資料作為藍本,並深知在過去成功不代表現在如是,加上沒有其他模型數據可作對比,總是覺得LR未必是一個合適的利器,認為是時候改變一下,故三個月前又嘗試用其他方法去「砌模型」,嘗試用馬匹預測實力(CP) + Monte Carlo 模擬估算各馬匹名次的機會率,結果怎樣...

20/8/2020補充說明:

錯了!老某終於發現有概念及系統性的錯誤,並解答了一直未能解決的疑惑。不刪除此文是因為這是老某的個人記錄。各師兄留意上述的資料展述可能有誤,不值得參考。再一次多謝各師兄的提醒,老某會再努力的。老賭徒

31/8/2020補充說明:

Conditional LR在 SAS是Parametic Hazard model, 在SPSS 是用 Cox regression, 均是一個醫學上估計生存時間。老某在開始時因為用minitab 做regression, 不知怎樣執行conditional, 所以自行想一些方法代替,就是將需要grouping 的因子做了排列後才放入模型,盡量減少影響。如今Andy師兄提醒,所以用SPSS Cox regression再做一次,結果如師兄所述差不多,不可以說是更好,但需要時間調整。
同老某說錯了,除了使用Regression 有不同外,還有一個重要指標做錯,就是回測數據用了一些比算式生成前的Test數據作測試,Test的回報率比Train的更佳,引起誤判及概念上有問題。

22 則留言:

  1. 若用最後賠率回測是-4%,用Kelly應該可以贏錢,因為最後落飛馬贏的情況非常非常普遍,實際買中的注碼會比最後的理論注碼多一些。

    回覆刪除
    回覆
    1. 多謝池兄捧場。

      刪除
    2. 如果alpha比beta細...咁有可能因為唔係最後賠率未落飛所以無落注。

      刪除
    3. 這是正確的,不過Kelly間中會發出下注沒有賠率優勢的馬匹,這與整體下注機會率有關。

      刪除
  2. 不太明白point c.
    如跟bill benter 的方法, 一場參賽馬估算的機會率加起來,一定會等如1, 應該不用做任何normalization

    回覆刪除
    回覆
    1. Bill 有講但沒寫方法,但老某現時做法不能sum to 1,因為只估算到單獨馬匹的機會率,與其他同場馬匹沒有很大關連(當然有部份因子是有關係的),所以將同埸馬匹加起來很難等於1。

      刪除
    2. 應該話根據計得精彩的方法,一場參賽馬估算的機會率加起來,一定會等如1,應該不用做任何normalization

      刪除
    3. HM師兄,你的LR模型可以直接sum to 1?計得精彩的方法我並不了解。老某的模型就算two step 也不能直接sum to 1,不過好接近,但一樣要做 Normalization。

      刪除
  3. 個人意見 Sum吾sum to 1其實真係冇乜所謂的
    (我有玩個lr 我很明白你意思)
    找出錯價係源於一個好的因子組合
    一個好嘅因子組合 係不可能隨便放堆raw data入去
    睇住個p value加加減減就搵到出來
    係要運用賽馬知識 做啲feature engineering至有機會做到出來的
    例如你用gps的座標去估計樓價 係冇效的
    但如果你將佢轉換返做地區 甘就會變得好有效了
    所以我建議應該將心機時間放响因子上面
    而不是在方法
    有個好的因子組合 打橫打直都係會贏
    方法只係幫你贏多啲定小啲甘解姐

    回覆刪除
    回覆
    1. 多謝索師兄的提點,完全明白師兄所指,識馬是其中一個重點。嘗試其他做法是源於職業病,老某覺得新方法容易吸納多一點賽馬訊息及計算名次,但怎樣準確地轉換為機會率時比LR更難,所以根本沒有容易的路,更何況是捷徑。

      刪除
    2. 啱呀,一個最簡單的例子-檔位,用1-14去計,因子不大有效,但用內/中/外,或再細心分group,因子就用效多了,其他raw data玩法一樣 XD

      刪除
    3. 都師兄好有心得,希望可以多多交流。

      刪除
    4. 都兄係高手,兩年前已經做到63個因子,過左兩年,而家一定已經係賽道上既大戶。

      刪除
    5. 宸師兄見你在池兄的留言,高手也。老某才疏,你個署名是否有特別意思呀!是亂碼嗎?老某沒有一個字識,唉!老某近期整理一下因子準備來季搏殺,因未來沒有創新input,感覺上模型在短期內都沒法突破。

      刪除
    6. 賭馬係一個零和遊戲,我想沒有已經贏錢,或者想贏錢的人會真心分享自己的心得。能分享的只是一些公眾都知道的大原則,或者一些技術上的方向。
      我看老兄的文章,猜測老兄的模型是logistic regression, 而不是conditional logistic regression,所以會有一場賽事,prob加起來不是等於1的問題。以此來看,最簡單改善老兄的投注回報方法就係試下conditional logistic regression。

      刪除
    7. 多謝Andy師兄的提醒,明白你看法,老某想贏也想學習。不過有時方向性的交流已經算是有效果的,當然要靠消努力。老某是用logistic Regression的,亦從其他高人知道conditional LR在賽馬方面的使用是肯定的,可惜老某唔識執行,只知R好似有這功能,因為老某仍然用Excel處理,IT & Coding 是老某的死穴,不論如何謝謝你的建議。

      刪除
    8. 補充一句,雖賽馬搏彩是零和遊戲,但老某同Andy或眾師兄不是,是有雙贏的,有合作及交流空間的。

      刪除
  4. 老兄同各師兄交流之後模型有重大改進,下季一定大殺四方。

    回覆刪除
    回覆
    1. 用了conditional logistic regression 改善左好多?

      刪除
    2. 其實我個人認為conditional logistic regression同logistic regression差別不會太大。用logistic regression,就像每次只給你一隻馬,你估佢有幾大機會贏(唔理咩對手)。conditional logistic regression就像每次給你一場參賽的馬,你估每隻馬贏的機會。用logistic regression再normalize probability同conditional logistic regression得出來的結果的平注回報差別,應該唔會多過3-5%.

      刪除
    3. Andy 師兄真見地,conditional LR在 SAS 是Parametic Hazard model, 在SPSS 是用 Cox regression, 均是一個醫學上估計生存時間。老某在開始時因為用minitab 做regression, 不知怎樣執行conditional, 所以自行想一些方法代替,就是將有需要grouping 的因子做了排列才放入模型,盡量減少影響。如今師兄提醒,所以用SPSS Cox regression再做一次,結果如師兄所述差不多,不可以說是更好,需要時間調整。
      老某說錯了,除了使用Regression 有別外,還有一個重要指標做錯,回測數據用了一些比算式生成前的Test數據作測試,Test的回報比Train的更佳,引起誤判及概念上有問題。

      刪除
  5. 請問老兄今日戰績如何?新model好用嗎?

    回覆刪除