2017年4月1日 星期六

賽馬冷知識

這次重砌model在2月底大致完成,參數的數量確定下來後,在過去一個多月只需作少量微調,再沒有大的改動。從2月26日至3月29日,剛好經歷了10個賽馬日,包括了日馬、夜馬、沙田、快活谷、全草地、全泥地和泥草混合,也包括了讓磅賽、平磅賽,跑過好地、好快地、好黏地,開過2倍以下的熱門,也爆過逾100倍的大冷門,算是對model作過全方位的考驗,正好檢討一下model應付不同情況的優點與不足。

賭博遊戲最令人擔心的是大幅虧損,若出現50%的虧損,須取得100%的盈利才能扳回損失,故這次選擇以一個極保守的Kelly比例進行觀察。若逐個賽日作單式計算,共有三個賽日出現虧損,幅度分別是3.5%、5.3%和5.9%,所幸的是,出現虧損的次數和幅度都比盈利低一些,七個盈利賽日的盈利率在4.7%至13.5%之間。

虧損最嚴重的是3月12日沙田賽事。見習騎師巫顯東當日以“獅子聰”和“育成寶貝”兩匹馬“起孖”,由於database裡的紀錄是巫顯東過去上陣100多次僅得1次頭馬,使model無法應付當日的巨大反差;另外,第九場重注馬“美麗寶寶”被“魅力知友”追到平頭,分去一半彩金,也使當日的收入大減。

(圖片來源:香港馬會)

另一個虧損超過5%的日子是3月22日快活谷賽事。本來當日的表現只是窄幅上落,直至第六場重注了排C跑道無敵一檔的“好益善”,看到開閘前變成“綠格”3.7倍次熱門,更是信心滿滿,不料最後三甲不入。賽後獸醫檢查證實“好益善”患有“喘鳴症”。“喘鳴症”,model裡沒有這個factor,也想不到如何設置這種極少樣本的參數。

曾經看過一套紀錄片,講述美國等地的牧場主,絞盡腦汁,以血統、遺傳工程等新舊方法相結合,以期培育出完美的純種競賽馬,在週歲拍賣會中取得天價暴利。不過,很多這些精心傑作,往往會因為一些極細微的外在瑕疵而身價大跌,欲哭無淚。

然而,馬主購買未有上陣紀錄的週歲馬,真正的風險,還不是外表能看出來的。即使拿著伯樂的《伯樂相馬經》按圖索驥,也未必能找到一匹好馬,因為現代賽馬鬥的是極速衝刺,而不需要日行千里。支持一匹體重逾千磅的馬高速奔跑,需要大量的氧氣供應,且要維持良好的血液循環機能,故真正決定一匹速度賽馬成就的,是其外表看不到的部份:心肺功能和呼吸系統。

馬匹的呼吸系統是其供氧環節的瓶頸,從而影響其競賽能力。馬不能用口呼吸,只能用鼻子呼吸,而由鼻孔至肺部的呼吸道又長又窄,鼻孔和喉嚨更是呼吸道兩個最窄的部份。有些馬匹聲帶癱瘓,鬆弛的聲帶阻塞氣管入口,呼吸道在氣流通過時發出異常聲響,就是“喘鳴”。由於“喘鳴”代表馬匹吸入的空氣大大減少,因而會令其表現大打折扣。

同樣原因,說明了為什麼馬匹在陣上流鼻血、氣管有痰、氣管有血、心律不正等內在毛病,影響會比腿部割傷、蹄鐵鬆脫等外傷和意外要大得多。

還有一個冷知識,馬匹奔跑時,是四蹄着地,其前肢與胸腔相連,使得馬匹極速奔跑時不能像人一樣自主調節呼吸,只能一步一呼吸,前蹄離地時展開胸腔吸氣,前蹄着地時呼氣,呼吸頻率受到步頻的制約,也會因氧氣的供不應求令步頻難以一直維持,故馬匹無法作長距離的極速衝刺,大多數都是狂奔二三百米就迅速轉弱。

於是,如何在不同步速的賽事中把握好發力點,把馬匹短暫的爆發力有效發揮出來,成了決定勝負的關鍵,而非必然是強者恆強,同樣的幾匹馬在不同的賽事形勢中互有勝負反而是常態。這些不確定因素,增加了賽馬運動的樂趣,也增加了賽馬博彩的刺激。

80 則留言:

  1. 每隻馬匹的體質太難量化,而且馬匹在賽日的健康情況只有局內人先知...

    回覆刪除
    回覆
    1. 類似陣上流鼻血呢啲情況局內人都應該難以預計。

      刪除
  2. 又長知識了。謝池兄!
    池兄,哪裡可以找到砌MLR model 的入門知識呀?

    回覆刪除
    回覆
    1. 「計得精彩」書裡的例子可作為入門。

      刪除
    2. 先在此謝謝池兄的電郵回复。

      另外amazon搵到CXWONG寫的英文版,日期是中文版第一版之後的五年左右,請問池兄有無睇過?睇過的話,內容相對中文版有沒有新料?

      https://www.amazon.com/Precision-Statistical-Mathematical-Methods-Racing/dp/1432768522/ref=pd_cp_14_1?_encoding=UTF8&psc=1&refRID=R6CHV55NJZT99YJNBP7Z

      刪除
    3. 英文版冇睇過。
      在池某心目中這是一本知識書,透過將基礎知識應用於實際的介紹,可令讀者開拓思維,釋放想像力。但不能以一本實用工具書來看待之,除了大彩池那章和隨書的Kelly calculator(寫得還不算很好用)較實用之外,即使跟足每一章每一節照做,距離完成一個完整的可盈利系統仍然很遙遠。

      刪除
    4. 謝淨兄回覆,那麼有什麼實用教學讓初學者由零開始建構MLR MODEL?

      刪除
    5. 如果只是關於MLR,google一下不愁找不到教程。若要應用於賭馬,「計得精彩」裡的例子是池某所見過的最簡單易懂的了。

      刪除
  3. 高原訓練d馬!
    或者好似一戰後,俄人電運動員肌肉做training。
    賽前吸定氧氣。。。打定d myglobin入去。。。

    回覆刪除
    回覆
    1. 哈哈。70後兄不如申請個練馬師牌試驗下。

      刪除
  4. 唔知池兄對Eddie Arcaro是否欣賞?佢哋timing真係好準...

    回覆刪除
    回覆
    1. 呢個太經典了,佢大放異彩的時代池某仲未出世,無緣目睹。
      不過以勝出率計好似雷神暫時好佢少少。

      刪除
  5. 池兄算是新一代馬神...可否分享一下你最"鵰鑽"的FACTOR是怎樣構思和"鵰鑽"的地方?

    回覆刪除
    回覆
    1. 千祈唔好咁抬舉,印象中被稱作「馬神」的最後都是不得善終的。:(

      池某個model的factors全部都好大路,所有data都可以在馬會網站找到,沒有刁鑽之處。個人經驗是,只要個database夠大,好多看似不相容的factors都是可以和平共處的。

      刪除
    2. 請問池兄的factors, 當中包括賠率嗎?

      刪除
    3. 1 step沒有賠率。賠率在2 step。

      刪除
    4. 池兄,
      請問有試過run, 上次或上幾次的賠率factor, 是否重要?

      刪除
    5. 係唔係問馬匹上仗賠率是否有效參數?池某確曾想過這個問題,但一直不曾落手去做,唔知有冇高人可以告知?

      刪除
    6. 池兄,

      因為見你講過賠率會DOMINAT咗其參數,
      即代表是一個極有效的參數, 但又唔用, 唔太明白?

      STEP2就好容易明白, 因為要計MULTI-KELLY.

      刪除
    7. 這個問題之前談論過了。Two step model也不是這個意思,之前幾篇文章的留言中對two step model有相當詳細的討論。
      從另一個角度看,賠率是所有遊戲參與者根據不同因素作出決策的綜合結果,相對於one step model,賠率的意義是代表了部份已知factors和所有未知factors,故不宜作為「1」個factor放在one step model。
      此外,如果把賠率放在one step model,根本就做不出two step model。

      刪除
    8. 池兄,

      要找[ 第一名 ]既有效原素, 前題係咪Y=1, 再睇Y與其他X的關係?
      還是其他名次(Y=2, 3...)都要計埋?

      刪除
    9. 這個問題之前也回答過了。池某的做法是只比較頭馬和非頭馬。

      刪除
    10. 多謝池兄回覆, 我再睇睇, 因可能仲未睇到! 或者無特別留意!

      刪除
    11. 很多blog友的見解都非常值得睇,比起池某狹隘的一家之言有價值得多。

      刪除
  6. 回覆
    1. 係架。池某係認認真真做事,隨隨便便做人。哈哈。

      刪除
    2. 總要有時候要放鬆一下,橡筋拉得太緊都不好,所以我宜家蛇王緊。哈哈。

      刪除
    3. 哈哈。二月下旬之後已經很放鬆,hea住度日。

      刪除
  7. 有沒有賽馬版的'愈跌愈有價值' 大法?

    回覆刪除
    回覆
    1. 賭馬下注的必要條件係整個賭局要 p*o > 1
      在概率 p 不變的情況下,很明顯賠率 o 是越升越有下注價值,越跌越冇價值。
      公式簡單而有力,「大師」們那些詭辯和語言偽術絕對無法蒙混過關,只會自曝其醜。

      刪除
  8. 池兄事事認真! X2

    係我既數據上,巫顯東都係負數(係佢既5場W都係靠練馬師,起孖日都係留個印象俾馬主因為另一個10仔又上場)

    我反而想知每個賽日本金都係一樣?
    小的感到困惑

    回覆刪除
    回覆
    1. 唔一樣架。當係一隻基金,贏左就加,輸左就減。所以好怕出現大幅虧損,更怕連續輸。一般的上上落落就不用擔心,好彩冇遇到失驚無神突如其來重創的話,兩個月左右就可以令本金翻倍。

      刪除
  9. 有無人高價買你個model ?

    回覆刪除
    回覆
    1. 淨係得個model冇用架,要識得更新data同根據每次賽前排位表處理data先係關鍵。
      砌個model非常容易,砌個有用的database很難、極難。

      刪除
  10. 池兄會以model投注什麼彩池,因為據我所知model只能計算出W賠率,池兄會投注連蠃或位置Q嗎?

    回覆刪除
    回覆
    1. 對的。特別適合獨贏,效果非常好。連贏也可以,但效果要打些折扣;位置連贏要再打些折扣。

      刪除
  11. 池兄,你好!
    有幸拜會你的blog,幾年前我都非常熱愛沉迷賽馬,請問你既database會否加入馬房,騎師配撘?
    我有個好大的迷惑,就係獨贏彩池好難中。小弟數學不算精,感覺上都係1/12 or 1/14 ,所以經常重注 Q QP...但都係輸多贏少。如果池兄有時間可以分享下注碼分配理論就好了!

    謝謝!

    回覆刪除
    回覆
    1. 歡迎來訪。
      Database裡肯定有騎師、練馬師的data,一般處理data的原則是可以獨立處就獨立處理,獨立處理不夠significant才考慮組合處理。騎、練都是非常significant的factor,即使獨立處理也能得出雷神配蔡神仙勝出機會較大這樣的效果。
      注碼分配,前面已有多篇文章談到這個問題:
      http://poolshunter.blogspot.hk/2017/04/blog-post.html

      刪除
    2. 池兄,多謝你既回答!
      我想問數據既延續有無relationship,姐係暑假後同上一季既數據有無用呢?因為已我理解係當獨立事件去處理。
      例如雷神配蔡神仙坊間視為必勝,幾年前既韋達之類...
      會唔會有D factor 係會因為甘樣而經常作出修改?
      我有睇過一套電影叫魔球,money ball 睇完覺得好貼近現實

      刪除
    3. 有用。場地、檔位等影響唔會抖完暑就唔同晒。
      Factor唔需要修改,韋達之類的變化不用擔心,parameter的數值會自動調整。

      刪除
  12. 池兄你好!抱歉可能會有離題,但想知道一下池兄是如何篩選 model 包含的參數?
    例如如果你有一些 data 是「流鼻血 = 1;沒有流鼻血 = 0」、「負磅 × 途程」、「log 賽事獎金」等,池兄會如何判斷它們應否加入 model 中?

    回覆刪除
    回覆
    1. 不必主觀判斷,全部放晒入model做一次regression,結果significant的就留,唔夠significant的就刪,刪剩的都是好東西。

      刪除
    2. 我明白是用一些參數來判斷 predictor 是否可用。我記得有 hypothesis test 可以一口氣計算所有參數各自是否顯著,所以原則上應該可以一口氣把數以千計的 predictor 丟進去計算,再按 p 值來篩選參數。(其實 p 值是我唯一知道的篩選方法來的。)
      但我記得池兄之前有提過每天試一個參數,積少成多,所以頗好奇池兄篩選參數的方法是否有一些特別之處。

      刪除
    3. 對的。p-value是一個篩選指標,有些factor處於接近0.05有效p-value值這種邊緣狀況,就很值得一試,看看能否改變一下data的處理方法,令這些factor變得明顯有效。但這種做法頗麻煩,因為factor之間是會互為影響的,很可能會令某些factor變得有效的同時,又令另一些factor變得無效。

      刪除
    4. 那麼例如池兄手上有一個 Model 包含了 85 個 predictors,p-values 就是 85 個數;當池兄加入一個新的 predictor 進去後,池兄就有 86 個 p-values。
      原本那 85 個 P 有升有跌,另外還有一個新的 P,池兄會如何決定沿用舊 Model 還是改用新的?

      刪除
    5. 判別棄留的標準很簡單,只保留p-value小於0.05的。
      但要注意的是,如果新的factor可以通過data的處理由大於0.05變成小於0.05,由無效變成有效,那麼由有效變成無效的舊有factor,也未必不能以此方式變回有效,故少不免有一個格來格去的過程,才能找到一個平衡點。

      刪除
    6. 我有一個想法,我曾經嘗試找過一些資料去 support 或者 disprove 我的想法,但我不太能找到相關資料,不知道池兄怎麼看。

      我的想法是︰

      假設我有一批 predictors,我不知道哪些有用、哪些無用。所以我保留所有 predictors。

      對於有用的 predictors,它們可以提供一個不錯的機率。

      對於無用的 predictors,它們是 noise 來的,即是「logit(P) = Beta*X + ε」或者「probit(P) = Beta*X + ε」中的「ε」。然後因為它們是 noise,所以它們的期望值應該是 0 來的。所以那 100 個無用的 predictors 會互相抵消,變成存在但無實際用途的 predictors(就像盲腸在人體狀況一樣)。

      這樣我就可以保留最多的有用 data 而且免卻 false negative 的問題。

      不知道池兄覺得這做法如何?

      刪除
    7. 其實不用想得太複雜,一看Parameter Estimate和Hazard Ratio已可確定那些參數是肯定無效的。剩下那些從最低效的刪起,每刪一個再run一次就可以了。

      刪除
  13. 池兄,我想問有一些時間上的數據例如路程時間及標準時間。由於涉及不同路程及班次,你會如何量化去比較馬匹的實力?

    回覆刪除
    回覆
    1. 直接同所在班次的標準時間比較,已經很significant。

      刪除
    2. 池兄你會把時間數據轉化成分數嗎?

      刪除
    3. 即是以馬匹完成時間和標準時間相減,直接把數據加進model內讓程式自動分析其比重?

      刪除
    4. 具體做法很視乎個人的選擇,未必有一個統一的標準答案,有人喜歡take log,有人不喜歡,要take log就要把負數和零處理掉。

      刪除
  14. 池兄你好 有一個問題請你賜教

    1."馬匹出賽日與上仗贏馬日期相距"此參數,parameter理論上是越小越好甚至是負,對沒羸過我馬的我試過用0又試過999(代表很久遠),但出來的效果用0表示沒羸過的馬,那參數會出現負數,用999,參數就會出現正數,變相相反地高估了沒羸過的馬的能力,奇怪的是用0或999代表的參數,其p值都是少於0.05,請問出了什麼問題該如何解決?

    2.池兄如有此參數,是用什麼來代表沒贏過的馬?

    回覆刪除
    回覆
    1. 池某的model裡沒有這個參數。對「parameter理論上是越小越好」之說也頗有保留。有的馬利勤拚,有的馬利久休;有的馬房急進,有的馬房喜歡「炖馬」;另外賽程的安排也令某些馬如高班馬特別是高班泥地馬無法控制參賽日期。這不是一個容易處理的參數。

      刪除
    2. 多謝池兄一言,看來我也要改改此參數了.
      另外檔位勝率我分了場地和各個欄(放同一參數裡),但出來效果卻非常不顯著,不能獨立用,池兄此參數是獨立用嗎?還是建議跟什麼合成比較好?

      刪除
    3. 池某做出來檔位跟賽道尚算顯著,跟其他則一般般。

      刪除
    4. 原來如此
      或許是我的場數不夠多所以不顯著

      刪除
    5. 快活谷的sample多些會較明顯。

      刪除
  15. 我今天一凱理計。。共虧了近40%本金。。。只中了一場而且是買時27倍中了只剩10倍的啡格。。。你是以多少凱理可每次虧5%以內

    回覆刪除
    回覆
    1. 以賽日計無論用多少kelly都是很難控制輸贏幅度的,一旦出現連輸幾場,即使很低比例的kelly也可造成大幅虧損,整體幅度跟輸贏次數的出現次序關係較大。
      池某今天也出現虧損,帳面上影響最大的同樣是開跑時25倍出閘後變啡格10倍的「彩福」,明明是大贏的一場變成白做。

      刪除
  16. 你好 小女有3個問題枇請教
    1-計馬的平均名次,池兄建議用多少場做平均?
    2-小女追看之前的留言,池兄所有參數都會take log,想問有時全部take log會有衝突,如果有的用log,有的用square之類可以共存嗎?
    3-池兄的模型裡,以同一個參數用來合成一般大約可以合到多少個有效和不會衝突的新參數?

    回覆刪除
    回覆
    1. 1.池某習慣用5場,但不確定這是否最好的選擇。
      2.理論上在logit model裡同時使用log或square等處理方法是允許的,不過池某沒有比較過具體的效果分別。
      3.視乎參數的chi square是否足夠大,同一個參數很少可以重複用3次。

      刪除
  17. 版主如何處理馬在田泥田草和谷草所獲獎金?有沒有獨立分開?

    回覆刪除
    回覆
    1. 池某沒有設置獎金這個factor,因為獎金大致可反映於班次和名次。

      刪除
    2. 問多一句 咁完成時間及名次 需不需要細分開3個場地採樣?

      刪除
    3. 要分開。同樣是四班1200米,田草、谷草和泥地的標準時間是不一樣的,如果不分開處理偏差會較大。

      刪除
    4. 唔好意思 我表達得不夠好
      我意思是 是否要分開3個參數田泥一行田草一行谷草一行咁獨立處理

      刪除
    5. 如果是用logit model,放在同一個column會較好。

      刪除
  18. 池兄,請問你是用excel作為database的儲存工具嗎? 日積月累下我的excel database已經接近70mb連運算也有點難度(可能電腦需要升級),你有遇過這難題嗎? 感謝回答.

    回覆刪除
    回覆
    1. 係。同病相憐也。
      現在每加一場新data池某就會刪掉一場舊data,若只加不減升級電腦也搞唔掂。

      刪除
  19. 池兄用的標準時間是用各班次場地路程的第一名時間,然後取平均數嗎?

    回覆刪除
    回覆
    1. 不是的。是直接與馬會的標準時間比較。

      刪除
    2. 如果 Backtest 13-14 年的數據,仍然是與馬㑹的標準時間比較?

      刪除
    3. 是的。馬會的標準時間是用過去三年的數據統計出來,每年八月中更新一次,與馬會保持同步更新就OK了。

      刪除
  20. 请教一下池兄,你在建模的时候,会将数据标准化吗?还是直接用原始数据?

    回覆刪除
    回覆
    1. 很多數據難免要處理一下,但不同的數據處理方法或有所不同,並沒有一個統一的標準。

      刪除