2020年6月1日 星期一

砌模型

個Blog久未更新,上篇文章的留言不斷累積,以致每次覆留言時都要瘋按頁面下方的“載入更多…”,甚是不便。同樣不斷累積的還有email郵箱裡的讀者來信,早前雖曾勉力回覆一小部份,但讀者們總是很快就“舉一反三”地拋來更多與之前差不多的問題,令池某覺得難以溝通。歸根究底,有效的溝通需要建立在共同的認知基礎之上,不然你來我往也只是雞同鴨講,牛頭唔搭馬嘴。



讀者來信中談得最多的,是砌賭馬模型的相關問題,諸如個別factor、某類data如何處理,怎樣有效解決factors的相關性、以及missing data等等。的確,這些也是池某日常在處理的問題。但池某認為,如果大家砌模型的用途與目的不一樣,這些處理方法未必一體適用。

廢話!辛辛苦苦砌模型的目的當然是要中馬贏錢了,怎會不一樣?有讀者(包括手動砌model的和以AI train data的)認為,只要個model夠勁、對頭馬估算的命中率夠高,每場下注model計出來機會率最高的兩匹或三匹馬就能長線贏錢了。

池某不敢說這種想法不對,也不敢說這種做法不可行,只會說池某沒有這樣的功力。換言之,池某的model不是這樣用的。簡單地說,池某砌模型不是用來找出頭馬的,而是以過去的數據分佈規律,給未來每一場的每一匹馬一個大致合理的定價,最終哪匹馬勝出都沒所謂,所謂命中率的高低亦不會在乎。可以想像一下賭場的骰寶賭局,莊家並不會在意下一局開出什麼點數,最重要的是要一早給所有可能的點數作好合理的定價,亦即與機率分佈相匹配的賠率。

不同的是,一場馬的機率分佈不像一局骰寶的機率分佈般確定且容易計算,需另闢蹊徑。其中一條可行的思路,是利用大量過去的數據分佈規律來預估未來小量數據的可能分佈,用句古語說就是希望“觀往而知來”,這就是使用統計模型作為工具的初衷,也是文章開頭所說的認知基礎。有了這個基礎,就可以討論砌模型過程中的幾個迷思了。

迷思一,建立模型時是不是用越多的data越好?試想一下這個例子:假設只用一個賽日的data,而該賽日田泰安贏了四場頭馬,顯然,用這樣的model去賭之後的賽事將是凶多吉少,而且,在這個例子中,騎師這個factor越是有效,結果將越是慘烈。

要防止個別極端偏差data造成的破壞,有兩方面的工作可以做:一是盡量找出多些有效factors,攤薄每一個factor對model影響的比重,不要被個別factor dominated整個model;二是增加data的量,減少這種小樣本偏差。

那麼是否data越多越好呢?池某曾作過比較,用多些data,model的統計指標確是看起來更漂亮,也能支撐起更多統計有效factor的數量,每次更新data時model也相對更能保持穩定。但從贏錢的成效來看,卻非data越多越好,用兩個賽季的data,明顯比用三個賽季data的成績更好。

為什麼會這樣?也許可以用上述那個“觀往知來”原則來解釋,使用過多的data,會令model“積重難返”,個別factor的數據分佈即使出現較大幅度的變化,比如騎師、練馬師的成績出現大幅的進步或退步,model的反應也會很滯後,造成長時間的高估或低估。

迷思二,model有很多種,哪一種砌法才最適用於賭馬?這方面池某並沒有作過太多的比較,不過,如果仍是從“觀往而知來”的出發點來考慮,factors的選擇似乎比model的選擇更為重要,因為不同類型的model,差別主要在於擬合data的方法,所體現的不同,僅在於對data的擬合程度,亦即“觀往解釋舊data時,或有些微的好壞之分,但贏錢的關鍵更在於“知來,顯然,factors才是貫穿“往與“來的主角。

迷思三,既然factors的選擇這麼重要,各組data或各個factor是不是會有一種最好的處理方式?如何增加某些factor的效果?或者將missing data比例較高的factor也做出效果?

先看看這個例子:如果你在一座山頭先撿了一堆石頭,之後再撿一塊新的,然後,拿新撿的這塊與之前那堆比較,相似程度會有多大呢?應該會有一定程度的機率吧。若換一種做法,你把那堆石頭先按自己的意願作了加工,變成自己心目中理想的石雕,再拿新撿的石塊與這堆石雕比較,難道相似程度會更大?

顯而易見,對data的過度加工和對factors的過份做作,只會影響“觀往的結果,即使可以令結果看起來更好更有效,實際上那只是一廂情願,用於“知來”肯定是有害而無益,因為未來的data分佈一定是粗糙突兀的,絕不可能是你理想中的石雕。

因此,對data、對factor的處理根本不存在那麼多糾纏不清的疑問,最好的處理方法,當然就是簡單直接原始粗暴的方法,有效就是有效,無效就是無效。不存在增加效果的問題,也不存在把無效加工到有效的問題,那些都是畫蛇添足、無中生有。

不去提高factors的效果,這樣的model豈非很“弱雞?這麼弱的工具,如何與別人競爭?回到砌模型的初衷,統計模型確實不是一件主動參與競爭的工具,而只是一件定價工具。如果公眾的定價更準確,就要輸錢;要公眾定價出錯,才能贏錢。贏或輸、贏多少或輸多少,都由公眾決定,自己完全是被動的(所以賭馬收入絕對是名副其實的“被動收入,呵呵)。因此,“model派會比較關注公眾賠率的R-squared value,用之來衡量遊戲的難易程度。

資料顯示,Bill Benter活躍於香港馬場的年代,公眾賠率的R-squared平均為0.13左右,到顧教授叱咤風雲的年代,公眾賠率的R-squared已升至0.17左右。到上個馬季,這個數值更是上升到0.218,進一步推高贏錢的難度。

不過,這個數字也並非只升不降的,今季到目前為止,就稍稍回落至0.213。將今季的數字拆開來看更是有意思,在疫情還未全球蔓延,各地球賽仍照常舉行,即馬會足智彩還接受投注之前,其實香港賽馬公眾賠率的R-squared高達0.221,由3月下旬開始完全冇波可賭,所有賭仔唯一選擇只能賭馬算起,賽馬公眾賠率的R-squared急降至0.191,贏錢的難度一下子降低了很多。借此機會也想與blog友們共勉一下:面對疫境也好、逆境也好,實在不必過度灰心,身邊總是會有新的希望的。

關於model賭馬,池某大致的想法就是這些,這也是對部份blog友來信的答覆。Blog友們的email,池某就不一一回信了,請見諒。



128 則留言:

  1. 終於出新post了,謝謝池兄分享.

    回覆刪除
    回覆
    1. 其實是為了方便自己。
      多謝捧場。

      刪除
  2. 差不多2年了,感謝池兄繼續分享。

    回覆刪除
    回覆
    1. 老兄的blog也很久沒更新了,可有新的心得分享?

      刪除
    2. 池兄,那裡有心得!在文中你已經說出最高心法,只不過老某仍在尋找「定價」的標淮,所以Kelly已放在一旁。老某仍然繼續努力,努力再努力。

      刪除
    3. 老兄過謙了。老兄兼具經驗和技術,又有鍥而不捨的精神,已是贏在起跑線。

      刪除
  3. 用logistic regression本身就是計probability,然後去和公眾賠率比較,作「差價投注」。我只是好奇,池兄若果只投注MODEL首三名算出最高勝出機率的馬,會得出負回報嗎?一般馬迷都喜歡以小博大,所以一隻跑100次都跑唔出的馬,有70倍都會有D人覺得抵。相返一隻跑3次贏2次的馬,有1.7倍多數人會覺得冇乜好分而唔買。就咁諗的話,熱門馬的「差價」應該比冷門更大,所以投注MODEL的首三名應該都會有利潤(不一定是「最大」),而且命中率更高。

    回覆刪除
    回覆
    1. 作者已經移除這則留言。

      刪除
    2. 命中率, 冷熱門...根本無關痛癢, 如果算出來的edge可overcome 12.5%政府稅, 及5%馬會抽佣, 當然得, 但現實是你的edge沒有那麼大, 所以池兄的方法是找那些真正 overcome 這17.5% 的馬(相對於公衆賠率), 大數法則下, 才可長玩長贏...

      刪除
    3. 池某係Kelly系統使用者,沒試過這樣下注獨贏,也沒打算作這樣的嘗試。
      至於其他彩池,特別是大彩池,池某確是會只根據model所算最高機率那幾匹馬來下注的,效果也很好。

      刪除
    4. 請教池兄用在那幾個大彩池呢?聽聞有利可圖的都是大集團揾食地方,model真的可打敗他們嗎?定還是公眾(或多寶)的付出,真的大到個體戶都重有生存空間?

      刪除
    5. 3T、六環彩等等,通常有多寶才買。
      Model不會分辨誰是集團誰是散戶,只會跟公眾賠率比較,公眾賠率的R^2高就沒空間,低就有空間。
      實際上也沒必要把所謂大集團想像得那麼神,如果他們真的那麼神通廣大,普通彩池就不會爆大冷了,大彩池也不會一直有累積多寶了。客觀地說,大集團比散戶優勝的地方,並非他們有更強的預知能力,而是他們犯大錯誤的機率較小。

      刪除
    6. 大戶應該可找到更多有效因子吧?
      如搵人分析賽事影片, 又如PP 兄自己量度最後200M 時間等, 另外可能還有統計學、物理學家團隊解決數學問題
      散戶應很難做到

      刪除
    7. 也對。可能大戶面對更高的公眾賠率R^2也能存活,散戶肯定是越高越吃力。

      刪除
    8. 投注集團仲可以用程式去計算點樣買一條飛去得到最高回扣, 以提高利潤或者減少虧損, 人力同財力去比較, 個體戶好難做到呢一點

      刪除
    9. 係。小數怕長計,食回扣係大戶優勢。

      刪除
    10. That is the question of "frequency" vs "severity".

      刪除
  4. this new post from 池兄 really inspiring and yes, we are betting against the public. The model itself is to "price" the risk.

    回覆刪除
  5. 池兄好久沒出文了. 祝生活與其他一切安好.

    小弟我今年就真係不太順利. 但時好時壞都是人生的一部份. 所以我唯有淡然應對.

    回覆刪除
    回覆
    1. Joseph兄好。也祝你否極泰來,日子過得一天比一天愜意。
      池某習慣了懶懶閒,凡事隨心隨性,今年生活與投資都很順利,也許是自己對生活的要求比較低吧。

      刪除
  6. 池兄有樣嘢想問, 如我沒有理解錯誤,池兄在這裡一路的理念,投注長遠可贏,事必要有edge,獨贏用MLR找有edge的對象下注,長遠可贏這個很容易理解,用kelly只不過是將這個利潤最大化. 但在大彩池中找最高機率下注這個方法的edge在那裡呢? 例如我在六環彩中,共7百多萬個組合中, 找前10%的組合投注,也不會憑空產生edge的, 這個原理是怎樣呢? 如要在投注組合中落filter, 又會落入overfitting的魔咒中, 這個其實大約可怎麼操作呢?

    回覆刪除
    回覆
    1. 大彩池與獨贏等普通彩池最大不同之處是下注時完全不清楚賠率,故不能用Kelly分配注碼及累積本金。但不能說大彩池就一定沒有edge,只是沒那麼單純而明確罷了。所謂edge,就是與公眾相比的相對優勢,只要是Pari-mutuel的彩池,參與者就一定有優劣之分,最直接的比較就是看誰能以最少的注數覆蓋最大的可能性,其中涉及概率的計算、排序,甚至填「飛」的技巧等等。請參考「孖膽」系列,原理是一樣的:
      http://poolshunter.blogspot.com/2016/06/90000.html

      刪除
  7. 多謝指教, 我就是卡在這裡, 寫了一個小程式, 可計算所有組合的概率及排序, 以六環彩為例, 2020年4月1日, 有4場14隻,2場12隻, 最多可有5,531,904個組合, 我用程式可輕易掃出前列10%最大勝出概率共有466個組合, 如不運用填「飛」的技巧, 只10元一注, 成本要 $4,660, 這466個組合中最終中了7注正獎, 派$938, 即共收$6,566, 只有微利, 同買place差不多.

    再用2020年6月10日為例, 最多可有2,280,960個組合, 掃出前列10%最大勝出概率共有1316個組合, 但這個數目遠遠不足以到達中獎之數, 第一個中獎組合要去到第3191個, 即是好彩的話, 要用$31,910投注, 收回正獎$7,128.

    如加大投注去到cover 30%, 要大約1萬注, 這1萬注最終中了9注正獎, 共收$64,152, 慘敗收場.

    以上只是計算, 唔係實戰, 我只是奇怪要在什麼情況下, 在大彩池中有機會找到明顯的edge.

    回覆刪除
    回覆
    1. 最基本的edge,當然在於所計算的eo,若這部份沒有優勢,什麼技巧都是空談。至於結果,是要碰運氣的,就以六環彩為例,如果六關賽果都包含了該場的大熱或次熱,派彩一定會極低;但如果開出五關大熱或次熱,而有一關是半冷,派彩就會好得難以置信,即使這個組合在概率排序中很靠前。
      需要重申的是,大彩池的抽水率甚高,不建議將之闢為每役必與的主戰場,最好有累積獎金墊下底才玩。

      刪除
    2. 都是的, 個根本在個eo這裡, 這個搞不好, 後面的都錯哂. XD

      順便請教, 我在網上找了很久也找不到各大彩池的多寶資料(歷史), 有無提示?

      刪除
    3. 呢方面資料真係不曾留意,也不認為有用。
      池某仲收到過不少blog友email來問有沒有以往的隔夜賠率、賽前兩分鐘賠率等等,池某都好搲頭其實呢啲資料有咩用?

      刪除
    4. 其他人我不知, 我的只是用來backtest, 看看多寶的時機及數目, 對投注策略的影响.
      站在科學精神的立場上, 凡事要大膽假設, 小心求證, 求證是要有足夠資料的, 雖然結果未必有用, 但都可幫助釐清事實, 對其他主戰場或有幫助呢

      刪除
    5. 都兄的目的池某當然清楚,只是不認為有用。
      池某早期賭孖膽時以及開始用model賭馬時也經常做各種backtest「求證」效果,結果只證明了一件事,就是歷史是不會重演的,最多只會在某個時間某些部份有點兒相似。所以現在池某對於「觀往」的想法跟當初是不一樣的,不再偏執於對過去的解釋,而是著重於如何應付歷史可能不會重演的情況。

      刪除
    6. 我想這是對大部份serious player的情況, backtest這回事, 我不單只在賽馬上做, 股票及外匯也經常的在做, 情況嚴重時, 也玩到很high的, 曾經為backtest這事情鑽研很久, 什麼Monte Carlo, safe-f, CAR, TWR 玩了一大堆, 但我的結論是, 跟池兄一樣, 歷史是不會重演的, 黑天鵝會不斷出現, 我現在的賽馬/股票/外匯也不會單靠backtest/forward的結果(有些人喜歡backtest再加自己喜愛的filter,越filt死得越快), 但參考價值是確定的, 就好像盲人用盲公竹一樣, 它不會帶你到要去的地方, 但最少比到你一點安心, 一點啟示, 就只是這樣. 所以我認為資料不彷收集多一點, backtest也可做, 但點用就要再想多一點.

      刪除
    7. 所以池某覺得backtest唔係一個科學做法,而係一個心理學或哲學問題。XD

      刪除
    8. Backtest如果做得對的話,是十分科學。問題只係多數人都做錯,因為當你FIT完一個MODEL之後,效果唔理想,你改PARAMTER,再去"BACKTEST",其實你已經"Look into the future"。

      刪除
    9. 如果說對應同一組data有多個唔同砌法的model,backtest是比較出model對data擬合度好壞的科學做法,這點池某是認同的。
      但如果用這個結果去應對未來可能局部偏差極大的數據分佈,池某認為是危險的。backtest「好」的model,實際效果可能會很壞;反之,backtest沒那麼好的model,實際效果可能會更好。

      刪除
    10. 「backtest「好」的model,實際效果可能會很壞」

      這裡不太懂,如果backtest做得嚴謹的話,time vatiant的程度應該是可以看得出的,那不太可能在backtest中表現穩定,實際效果卻差天共地,除非在backtest中其實已"look into future" 而不自知。另外如果當backtest無用時,池兄如何相信自己的model是可行的呢?

      Wanderer

      刪除
    11. 原來是Wanderer小師弟。
      若只是面對自然分佈的數摢,池某也會選擇backtest好的model。但賭馬面對的不只是自然分佈數摢,還有一組100%人為的數據,那就是賠率,而且這組飄忽不定、瞬息萬變的數據才是決定輸贏的關鍵。
      Backtest好的model只能說明model對過去的數據擬合得好、解釋得好,不代表可以更好應對未來的高度不確定分佈(包括賠率)。比如上面說到的局部偏差問題,假設一個騎師三、四個月沒贏過頭馬,突然一日贏了三、四場,那麼之前backtest好的model,特別是偏重於騎師這個factor的model,結果將非常慘烈。
      故此,在賭馬方面,池某不會以backtest結果選擇model,而會更看重model中各個factor的影響是否能大致保持平衡,這樣面對未來的分佈偏差會安全一點。

      刪除
    12. // 原來是Wanderer小師弟。

      哈哈,只有有留名那個才是我。

      // 假設一個騎師三、四個月沒贏過頭馬,突然一日贏了三、四場

      感覺上加一些weighing或regularization可以避免某些factor有太大影響。不過沒玩賭馬model,可能有一些實際原因難以做到。本來打了一大段,不過想了想,自己對賭馬的數據類型沒有甚麼概念,比較難具體地討論,所以還是看大家討論吧。

      Wanderer

      刪除
  8. I want to say: backtesting with final odds is not going to work.
    For most of the races I place bets when the horses start to enter the stalls, but there are always 30-40% of bets placed after my bets . I want to emphasize the number. I would consider this 30-40% of bets are from professional gamblers and insiders sitting inside the VIP rooms.

    There are two currently two ways :
    1) delay my bet until last second. (but unless I gamble in HKJC VIP rooms, I dont know when is "last second")
    2) enhance my model such that beta becomes less and less significant (but my progress is like a log graph..)
    3) backtest using the odds at bet (instead of final odds) when doing step 2 Kelly, and estimate the profits using final odds

    haha.. forgive me typing so much Hong Kong style english...

    Thanks Mr.池 keep updating this blog!

    回覆刪除
    回覆
    1. 在實際操作上這個確是無法克服的問題,即使盡可能在last second下注,其實下注時的賠率和最終賠率很多時都差距甚大。更何況,像連贏這些瓣數多的彩池,由於提交注項需時,就算用上自動落注系統,也不可能用last second的賠率計算下注。
      有時真覺得賭大彩池輕鬆些。XD

      刪除
  9. Let me supplement with some numbers.
    take today's first race as example.
    WIN
    pool size when I bet final pool size
    HKD 12.0M HKD 19.7M

    TRI
    pool size when I bet final pool size
    HKD 1.3M HKD 1.9M

    Textbook formula of Horse Racing investment is that
    expected profit E(profit) = Bet Size * (probability * odds - 1)

    But in fact,
    E(profit) = Bet Size * (probability * E(odds) - 1),
    where the variance of odds increase dramatically since early 2000.

    回覆刪除
    回覆
    1. 要估埋賠率的難度太高了,獨贏賠率尚可參照一下走勢,連贏等彩池又怎可能做到?

      刪除
    2. 池兄你好。我見池兄的留言說你是KELLY系統使用者,但KELLY系統對PROB的估算要求很高。我假設池兄的MODEL對PROB的估算十分準確,但對"MARKET PROB"應該不會太準。為甚麼使用KELLY能優化投注的利潤呢?是因為開跑前的賠率和最後賠率,沒有系統性的分別嗎?

      刪除
    3. 下注時賠率與最後賠率的差距確是會令Kelly使用者很困擾,我們可以試下這樣看,這個賠率差距造成的結果,不外乎以下四種:

      1.落飛馬贏。中。結果是比投注時賠率贏少了(因為賠率少了),比最後賠率贏多了(因為已投注額比應投注額更多)。
      2.落飛馬贏。唔中。結果是比最後賠率輸少了(因為已投注額比應投注額少了)。
      3.回飛馬贏。中。結果是比投注時賠率贏多了(因為賠率多了),比最後賠率贏少了(因為已投注額比應投注額少了)。
      4.回飛馬贏。唔中。結果是比最後賠率輸多了(因為已投注額比應投注額更多)。

      如果每種結果的機率是均等的,那麼因賠率差距而造成贏多、贏少、輸多、輸少的機會也是一樣的,沒有明顯的好處也沒有明顯的壞處。
      若Roger兄的假設(對PROB的估算十分準確)成立的話,那麼最有可能出現的結果應該是1。

      另外,對於單場的注碼分配,如果不用Kelly,還有更好的選擇嗎?特別是連贏等瓣數多的彩池。

      刪除
    4. 若果池兄的MODEL ESTIMATE非常準確,假設也有其他大額投注高手有相同功力但投注於池兄之後。大概只能知道池兄買的馬的賠率多數會落飛,但1)未必係最可能出現的結果,因為各高手只係買有差價的馬,若果多數係冷門有差價,4)出現次數較多也不出奇。
      客觀結論就係在未知最後賠率情況下投注會較"OPTIMAL" KELLY大,當然池兄應該是FRACTIONAL KELLY使用者,只要落飛唔係落得太勁,投注額可能更接近OPTIMAL,長遠贏更多也未可知。
      我不知有沒有其他方法去OPTIMIZE RETURN,因為KELLY太出名,好多人出PAPER都會叫KELLY CRITERIA UNDER XYZ CONDTION。:)

      刪除
    5. 其實要驗證也不難,大家只要賭幾次S1就會認同1是會出現得多過4的。

      刪除
    6. 我也估計現實中情況1出現多過4,因為想賭的大眾都喜歡以小博大。當冷門馬超買了一點,熱門馬有EDGE的機會就大了一點。
      但1出現次數多,並不能解釋為何在不知最後賠率下用KELLY長遠能獲利。舉個兩隻馬跑的簡單例子,A馬勝出機會為0.75,投注時賠率為1.6,最終賠率降至1.4。池兄說的情況1會在大約3/4的賽事出現,情況4大約出現在1/4賽事。用Kelly會因為投注額大於"optimal" kelly的2倍,長遠來講輸錢。反之若果差價出現在B馬,即使情況4出現次數較多,只要最終賠率的降輻不至於令投注額為"optimal" kelly的2倍,長遠還是有利可圖。
      以上的輸錢例子在現實中可能很少出現,因為只要最終賠率為1.45以上, KELLY長遠還是可以獲利,有能力影響賠率的投注者大概也會預留一些BUFFER, 加上投注時先設定要有相當EDGE才下注和用FRACTIONAL KELLY,只要MODEL的ESTIMATE夠準,相信還是會有不錯利潤。
      小弟只是希望把整個想法清楚寫出,讓各位同道一起討論一下到底不知道最後賠率對投注的影響有多大。若果最後結論是不太大的話,大家可以集中精力不斷改善MODEL和保守一點下注,不用花太多心思去研究最終賠率和投注時賠率的差異。

      刪除
    7. Fractional Kelly是必須的,如果用1個Kelly連輸幾場就會輸爆廠。

      刪除
  10. 點解咁執著要最後賠率呢?還原基本步,你地嘅方法唔係話要贏不理性嘅公眾嗎?開閘一刻大注嘅飛會係公眾飛嗎?你地個系統要改善嘅地方絕對唔係Kelly,最緊要係改善勝出率嘅估計,相信好多人贏唔到,都係呢部分出問題,但就偏向唔承認或接受自己嘅系統預測勝出率係唔掂

    回覆刪除
    回覆
    1. 呢個講法甚妙。落注一刻真係有如一群餓狼圍住同一個獵物(公眾飛)你爭我奪,最後當然是較強的一方搶到多一些,而強弱完全是model的反映,怪責Kelly是沒有道理的。

      刪除
  11. 仲有好多人以為,有KELLY加MLR配合,就算今次唔中,長遠加埋都會贏,依家負數只係KELLY注碼分配得唔好,其實唔係架,要個系統贏,有個臨界點,勝出率唔夠高(唔好以為場場都有頭馬買中就係高,仲要睇你買咗幾多隻),注碼點分都係得個吉

    回覆刪除
    回覆
    1. 師兄,你說得非常正確,Kelly是不能起死回生的,特別是不準確的模型。再者,準確度也要多個緯度評估才合適,就算模型可以完美地排列出賽馬匹的名次,在Kelly分配注碼之下,一樣可以輸大錢,因為大次熱門冇edge,引至冷門反過來有edge而投注,上述情況令老某困惑難解多時,這可能是內部資訊不足,沒能力評審熱門的真正價值。

      刪除
    2. 前面多篇文章和留言都有討論這個問題。上面的例子也說明了,即使結果是random的,使用Kelly因賠率變化造成贏多、贏少、輸多、輸少的機會是均等的,至少無利也無害;若model對機率的估算準確,使用Kelly肯定是利多於弊。

      刪除
    3. 老賭徙講得無錯,模型可以完美地排列出賽馬匹的名次,雖然看似好完美,但實際上仍然不足,因為重點唔單只係次序,更重要係相對大小,如果用Kelly分配後仍指引你去花無謂注碼買無乜機會嘅馬已反映模型係唔準確。

      另外,的的確確池生在留言講過好多次,罪不在Kelly,如果有細心留意池生嘅留言或文章應該好清楚呢點。在呢串留言中,池生亦咁講過「最基本的edge,當然在於所計算的eo,若這部份沒有優勢,什麼技巧都是空談。」

      又另外,有師兄想揾最後賠率做backtest,個人覺得係未嘗不可,但問題係要清楚想睇啲乜野;覺得用最後賠率計Kelly準啲,會令你本來贏唔到錢嘅系統贏錢?點解唔試下開跑前5分鐘、10分鐘、15分鐘嘅賠率?點解一定係最後賠率?最後賠率係最準確?何謂準確?(1)準確計算回報?(2)如果準確係代表落飛得手,咁點算呢?會唔會弄巧成拙。

      曾經睇過room 1702嘅文章(注︰number有可能記 XD),唔知真定假,啲著燈飛,有啲會係外圍佬大注搏殺,有啲只係將收多咗嘅注碼釋放做Hedging,所以著燈飛成功係一半一半,無論真定假,個人覺得用Kelly計算時最重要係要避開呢啲波動。題外話,有朋友經常跟著燈飛買,我同佢講中嘅機會一半半,有人做過統計架!佢就話,有一半咁多,買w/p好好啦,自己刨14隻馬,14分1機會都未必有!稍為諗一下,果然有道理,本來有啲鄙視佢,都立即改觀。的而且確,有時千計萬計,計極都贏唔過一個跟飛買嘅馬迷。

      刪除
    4. 池某真係強烈建議大家先由S1入手。

      首先,賭S1可以徹底放下對自己model的主觀偏見,客觀地觀察賠率變化(或說著燈)對投注輸贏的影響,並確立對注碼分配工具的信心。相信有試過的都會認同Kelly。

      其次,如果認同莊家的賠率set得「靚」,應該好好思考下自己model還差些什麼才能得出咁靚的eo分佈。所謂靚的eo分佈,正如匿名兄所說,排序不是重點,同場每匹馬的相對差距才是。

      想補充的是,因公眾馬迷對外國馬不熟悉,早段賠率的錯價甚大,非常適合用來驗證上述關於最後賠率變化對Kelly使用者影響的討論。以今天S1日本馬為例,開出樓上所列四種結果中「結果1」的比例就高達6/7。也就是說,如果跟得切「著燈飛」買,中嘅機會唔係一半半,係6/7,而且冇一隻係大熱,著完燈仍有分頭。當然,Kelly使用者並沒「跟」的問題,而是推動「著燈」的一份子。

      刪除
  12. 感覺到好多師兄對最後賠率有一種莫名嘅執著

    我將池兄嘅例子用另一個方法演繹
    如果遇上落飛情況, 即係落飛前的賠率比EO高好多, 根據kelly Criterion, edge愈高買得愈多, 某程度上係彌補咗落飛導致回報減少嘅損失 (以量補質)

    正常情況到最後各勝負數會互相抵銷, 實際影響不大只係心理影響較多
    因為大家只係記得賺少咗果部分, 忘記咗「輸」少咗果部分

    回覆刪除
    回覆
    1. 補充一句所謂「輸」少咗果部分, 就係根據EO原本買得唔多嘅同場馬, 因為回飛令到edge提高, 在kelly Criterion下要買多

      刪除
    2. 各位師兄討論熱烈, 我這類門外看亦加插一兩句.....
      實戰過的經驗, 同純拿model做test, 出來的感覺亦不一樣的.....
      落飛贏出的情況成日出現, 如果事前就知道最終賠率, 通過model再加上kelly作投注, 可能贏出那匹馬根本沒有edge出現而1蚊都沒有買下去才對.
      但結果你下注了原本應該不投注的項目而有派彩, 這不就是randomness帶來的收益, 同樣道理反之, 所以最終結論還是不必理會最終賠率是否完全正確, 只要在模糊正確的可控範圍就可以了.

      門外看拙見

      刪除
    3. 兄台分享實戰經驗,有說服力。

      刪除
    4. I still think modelling and Kelly are the two main elements for professionals. Modelling is the handicapping tool while Kelly is the money management tool. Unless you have a perfect model to eliminate all non-contenders but the winner, you don't need to care much on the money management side.

      Many professionals all over the world still participate in this market because the market is still considered to be in-efficient, and using Kelly or money management tool can maximize the edges & profit based on the fact that their handicapping tools have edges over most of the participants. Serious handicappers spend days to prepare for a race day and if the market doesn't have the edges they look for or then market has become too efficient, then they will walk away.

      刪除
    5. 非常同意。除非有超能力,能準確預知頭馬,對我等一介凡夫來說,model + Kelly目前仍是最可行的選擇。

      刪除
  13. 老虎都霸翻个头页先,终于有新文章。谢谢

    回覆刪除
  14. 有點好奇大家係點做2 step model的
    假如我用16-19年data train個1 step model 再用返16-19年data 整2 step model黎計alpha beta值 咁我個alpha:beta比例實高到飛起 因為基本上亂塞堆factor都可以推高佢 如果實戰用呢個alpha beta比例黎計最終EO 肯定輸到飛起
    所以如果用16-19年train step1 model 係咪應該用19-20年data黎整2step model?

    回覆刪除
    回覆
    1. 高到飛起有幾高? 3:1?

      刪除
    2. 今年疫情, 公司生意慘淡, 換來有時間將幾年學到的模型重新整理, 將自己從這里知道的理論整合一下。
      小弟中學程度修商科, 沒能力入大學, 理科實在只懂皮毛, 而且沒有能力一口氣看完池兄文章, 不過幾年來反覆看了幾百次。

      現在小弟的認知及使用的2 step model, 分兩部分.

      step 1 :
      將自己考慮的勝負因素, 用統計學的方法做出一個model,
      比如只考慮 騎師勝率+最近一場名次, 結果是win與否, 即1/0,
      如果用binomial公式 = win~騎師勝率+最近一場名次,
      結果就會得到全場每一匹馬的probability, 繼而計算到得 EO。

      馬號 / probability / EO
      1號 / 50% / 2.0
      2號 / 25% / 4.0
      3號 / 20% / 5.0
      4號 / 5% / 20.0

      step 2 :
      是將 EO 跟 該場賠率(RO) 比較, 從而找出該場的edge

      馬號 / EO / 該場賠率(RO)
      1號 / 2.0 / 1.7
      2號 / 4.0 / 4.6
      3號 / 5.0 / 4.7
      4號 / 20.0 / 5.1

      step 1 是用factor 做model, 每個人找到的factor不同, 自然有不同的EO, 我理解池況一直以來所講的alpha, 應是這個 EO.
      step 2 是用EO 同 RO 做比較或融合(融合方法要找回macaupro的回覆或請教老賭徒兄取excel), 我理解池況一直以來所講的beta, 應是指 RO.

      如果要進行backtest, step2 的公式就是 win~EO+RO, 如果 EO 的p-value少於 RO, 代表你造出來的model能在統計學上壓過了賠率取得優勢。

      上面有好幾番討論就是探討究竟step2 的 RO 應是取final odds(跑完後的賠率), 還是取賽前5mins, 1min, 30s, 10s賠率比較好.
      所以如果以此方法做出model, 不存在用16-19年train step1 model 係咪應該用19-20年data黎整2step model的可能性, 或許是我沒讀理科, 弄錯原理亦不奇。

      門外看字

      刪除
    3. 唔係。2 step model是有規範做法的,並非門外看兄所說的做法,門兄說的是Kelly Calculator計算注碼部份。

      簡單地說(其實做起來也真是很簡單),2 step就是將1 step的過程重做一次,即使1 step有一百幾十個variables,2 step都一定只得2個variables,一個是model probability,另一個是public probability。這裡有個細節要注意,2個variables都是probability,無論是將1 step的EO化作model probability,還是將RO化作public probability,都一定要先normalized,否則「alpha:beta比例實高到飛起」。

      做2 step的regression後會得到2個parameters,對應model probability那個為alpha,對應public probability那個為beta。之後將alpha和beta乘入每匹馬的model probability和public probability,再normalize,得出一個新的EO(做法同計1 step EO一樣),這個新的EO就是2 step EO。

      用算式表達大概是這樣子(算式符號太難打,稍為省略少少,不過在Excel很易做,用SUMPRODUCT就得):

      新EO = (alpha*model probability + beta*public probability)/∑ (alpha*model probability + beta*public probability)

      刪除
    4. 多謝池兄的回覆, 畢竟我只是門外看, 沒有正規老師指點, 只靠自己瞎猜瞎撞, 犯錯實在難免, 有幸得大家討論指點, 實在倍感欣慰。
      小弟現在用R寫code來做regression, 做出的東西都不知有沒有其他大錯, 不過經池兄提點, 我將step2 variables由odds轉回probability, 然後update做一次test, 結果如下 :

      Call:
      coxph(formula = Surv(rep(1, 9101L), WOR) ~ EO.p + RO.p + strata(Race.id),
      data = final, method = "exact")

      n= 9101, number of events= 738

      coef exp(coef) se(coef) z Pr(>|z|)
      EO.p 0.5556 1.7431 0.5581 0.996 0.319
      RO.p 6.9511 1044.3316 0.5061 13.735 <2e-16 ***
      ---
      Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

      exp(coef) exp(-coef) lower .95 upper .95
      EO.p 1.743 0.5736994 0.5838 5.204
      RO.p 1044.332 0.0009576 387.3128 2815.885

      Rsquare= 0.062 (max possible= 0.334 )
      Likelihood ratio test= 585.1 on 2 df, p=0
      Wald test = 589.8 on 2 df, p=0
      Score (logrank) test = 866 on 2 df, p=0

      其實上面堆數字, 只知P值少於0.005就有用, 餘下的我根本看不明白,

      但在R只要做出以上model, 再行predict, 就可以用這個model去預測新的data, 但當中原理, 我實在不懂的, 只會這樣用,
      所以想請教池兄一下, 上面的coef 0.5556 及 6.9511, 是否就是alpha:beta ?

      門外看字

      刪除
    5. R池某唔識,池某是用SAS做regression的。在SAS,alpha和beta應是在Parameter Estimate那個column的數值。

      池某也不太肯定兄台所做結果中exp(coef) 的意義,在SAS中,exp(Parameter Estimate)是指Hazard Ratio,反過來說,Parameter Estimate就是log(Hazard Ratio),注:係natural logarithm ,即base e

      從結果來看,alpha:beta的比例不應這麼懸殊。

      要強調的一點是,2個variables化作probability時一定要normalized,這樣才不會出現懸殊比例。

      刪除
    6. train step 2 時用train step 1 的同一堆data?

      刪除
    7. HM兄係咪問緊小弟(門外看) ?
      這個問題令我有點困惑, 理論上是的.
      即EO.p 是今季001-738記錄下來的step1 model在賽前的"EO" in probability form.
      而RO.p 是今季001-738每匹馬賽後賠率轉化回probability form.

      門外漢

      刪除
    8. R 有好幾個function可做 regression, 我嘗試用另外一個精準度略次的function, 結果如下 :

      Call:
      glm(formula = WOR ~ EO.p + RO.p, family = "binomial", data = final)

      Deviance Residuals:
      Min 1Q Median 3Q Max
      -2.2681 -0.3705 -0.2996 -0.2655 2.6197

      Coefficients:
      Estimate Std. Error z value Pr(>|z|)
      (Intercept) -3.43148 0.06473 -53.014 <2e-16 ***
      EO.p 0.53577 0.60067 0.892 0.372
      RO.p 8.26740 0.55908 14.788 <2e-16 ***
      ---
      Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

      (Dispersion parameter for binomial family taken to be 1)

      Null deviance: 5122.5 on 9100 degrees of freedom
      Residual deviance: 4432.8 on 9098 degrees of freedom
      AIC: 4438.8

      Number of Fisher Scoring iterations: 5

      雖然多了一個截距, 但有一項叫Estimate, 唔知呢個係咪就係池兄講的Parameter Estimate了

      另外, 唔知係咪錯覺, R用上odds好像效果比probability好.....
      因為用odds的話, EO.odds 的P-value可以少於0.05, 但用probability就唔得....

      刪除
    9. //train step 2 時用train step 1 的同一堆data?
      係用同一時段的data。2 step用的部分data是1 step的結果。

      刪除
    10. //R用上odds好像效果比probability好.....
      R池某真係唔識,但睇結果不太好。如果用這個結果下注應該會被RO dominate咗,沒有明顯edge。

      刪除
    11. 沒事.
      砌模型像打麻雀, 整火箭, 沒理由一直要人拉住你的手去做.
      池兄抽出時間的回覆、經驗分享及專業意見, 對我已受用無窮.

      上面那個是我的賽馬模型Android 8號, 屬初階作品,
      step1 model只有騎師,練馬師,檔位,近仗名次等6組data或factor, 資料非常簡單。

      從上面統計學結果來看, 正如池兄所說, RO在step2會dominate左 EO, 我亦有同感。
      所以之前目標是等model的EO 在P-value少於RO時, 才會將他們用step2 regression并在一起, 今次真是一次不錯經驗。

      雖然Android 8號的統計指標爛透, 但用Kelly Calculator配合EO去做backtest, 效果比公眾回收率0.825還是好很多,
      尤其谷草....

      Completed : 1819817 Profit : 0.86255 ST : 0.84589 HV : 0.98858 AWT: 0.62205 2020-06-18 20:56:06
      Completed : 1920738 Profit : 0.92422 ST : 0.70527 HV : 1.02928 AWT: 1.38106 2020-07-07 18:30:13

      現在埋頭去整理data, 畢竟rubbish in rubbish out, 微分暫時真係非為我所用, 只能盡力下功夫在raw data上

      在此多謝各位。

      門外看字

      刪除
    12. bill benter 的文章說step 2 要用另一時段的data
      用同一時段data 沒問題嗎?

      刪除
    13. 做regression找alpha、beta與1 step是用同一時段data(但不是同一堆data重複使用),使用alpha、beta結果計算2 step EO才是用另一時段data。

      刪除
    14. 嗯, 莫非我理解錯?
      2 step 計alpha beta 我一直用另一時段的data。等我都試下用同一段時間data 計alpha beta 先
      另外, bill benter的文意話2 step 兩個variable 要take log

      刪除
    15. 門外看兄,
      你有沒有計算R2?
      你step1 model和step2 model的R2如何?

      刪除
    16. 在下亂塞左120個FACTORS入1STEP MODEL
      之後再用同一段時間DATA計alpha beta
      計到alpha0.75,beta 0.25(normalization果D野應該冇錯 check左好多次 個coefficent都好合理)
      但感覺如果用呢個比例投注會令注碼大起大落好易破產
      例如星期日第3場喜盈運我計到8倍 實際22倍勝利 大賺 但係第9場超勁勇士我計到1.8倍 實際2.6倍第2 大輸
      咁樣令我覺得跟住呢個alpha beta做 好快就破產 因而覺得個比例好似冇咩用咁
      係咪應該手動調個alpha beta比例令自己冇咁易破產?

      刪除
    17. 要避免快速破產唔應該人為調整alpha、beta,而應調整Fractional Kelly個比例。

      刪除
    18. //你有沒有計算R2?
      HM 兄, 你好,
      我用的是R, 上面你看到的就是model summary, 相信跟池兄用的SAS有很多區別.

      我將model拆開三個路程train, 今季截至R738場次, 顯示如下
      田 Rsquare= 0.073 (max possible= 0.326 )
      谷 Rsquare= 0.050 (max possible= 0.341 )
      泥 Rsquare= 0.046 (max possible= 0.338 )
      相信跟大家討論的範圍有很大差距.

      不過我亦好奇, 一個線性model, 我很易理解他的R2如何計出來,
      但不知一個binomial model, R2要公式化的原理.

      因此, 我沒有用R2都檢視model,
      我最注重的是test時
      (1) model整體命中率與RO相距多少 (目標如何壓倒RO) 及
      (2) model的回收率 (盈利能力)

      如果有上傳空間, 我不介意上傳EO找人幫我計下R2, 呵呵, 因此真係唔識計, 唔洗自己計又有結果, 多幸福

      門外看字

      刪除
    19. 匿名兄,
      亂塞120 個factors? 無理p-value??

      刪除
    20. 門外看兄,
      bill benter的文章有計算R2的公式

      刪除
    21. //匿名兄,
      亂塞120 個factors? 無理p-value??

      有50個左右<0.05吧 其他的懶得tune所以先有咁多個

      刪除
    22. //bill benter的文章有計算R2的公式
      HM兄,
      上文已提及過, 小弟並非數理出身, 中五畢業, 根本看不明白他的文章.
      在這里知道大慨模型的資訊, 一切由零開始, google search, 看沉悶的youtube, 去到linear regression, 都用左1-2年時間。
      不過我上面已提到, 就算我不知R2是幾多, 只要model克服(1)及(2), R2是怎樣已不重要。

      //有50個左右<0.05吧
      匿名兄, 真神人也!
      我作為普通馬迷, 要將平時刨馬考慮到的factor放"一個"入model都不易, 匿名兄竟然可以塞120個, 還有50個左右<0.05, 我只能望塵莫及。
      我現在準備放一個factor入model, 估計單是準備資料可能要半年... 可惜我沒捷徑可走, 只能像烏龜慢慢前走~

      門外看上

      刪除
    23. 我就絕對唔係神人啦 小弟係個programmer 平時工作上日日都會接觸DATABASE 比較容易整合到D賽馬DATA 所以就多D亂試FACTORS既機會吧

      刪除
    24. 門外看兄, 如要行regression這條路, 我建議看一看cxwong的「計得精彩」,這位精算師在第五章已介紹詳細步驟,另R雖然強大,但SAS的操作比較簡單,找code看說也容易些,input data及export result也方便點。

      另外,你的model R2只有0.046-0.073,但public R2照我所知由0.19-0.22不等,有點距離喎,可能計錯,「計得精彩」第五章結尾有教點計R2,中文寫,不難理解

      刪除
    25. 匿名兄,平時有無睇馬,睇馬經?

      刪除
    26. 再另外,用data計出來的coeff,不可用返係這組data度再計R2,要用forward data,否則只是自欺欺人

      刪除
    27. 會同呀爸一齊睇馬 但佢講果D咩轉腳咩白汗完全唔識... 馬經就完全冇睇過 自己都有1年半賭齡了 一開始就用自己個爛鬼linear regression model賭 當然輸晒XD 之後就試下自己賭 亦都係輸晒XD 呢個月就試左用logistic regression model賭 暫時試左4個賽馬日有微利 不過我覺得係因為試既日數仲未夠多 遲D試多D既話好大機會都係輸 畢竟好難夠D高手(例如池兄)勁XD

      刪除
    28. 匿名兄,有計算過step 1, step 2 model 的r2嗎?

      刪除
    29. 冇試過用testing data測R2 因為懶得攞forward data...

      如果用返train果組data計R2, 咁就肯定好高, 但就會好似樓上咁講自欺欺人了

      刪除
    30. 懶得攞forward data? 唔明
      唔係split 開你而家有的data, 一部份做training, 剩返做testing 咩?

      刪除
    31. 我諗我應該犯錯了?
      依家我理解係應該首先要將一堆同一時段既DATA分開兩批 一批TRAIN STEP1 另一批TRAIN STEP2 之後再用另一個時段既DATA黎做TESTING?

      刪除
    32. 都好客兄, 多謝寶貴意見。
      計得精彩的PDF版, 我一直有存在電腦, 在第191頁開始, 可惜他只提供他手作的excel圖片, 我沒法用excel復制其公式。
      至於 R 的問題, 估計是program的設定output與大家討論的不一樣, 並非來自model, 因為只要將賠率單一地直接放入binomial model就一清兩楚, 結果如下 :

      Rsquare= 0.063 (max possible= 0.334 )
      Likelihood ratio test= 606.6 on 1 df, p=0
      Wald test = 207.6 on 1 df, p=0
      Score (logrank) test = 194.4 on 1 df, p=0

      由此可見, 不必太在意這個function出來的結果...呵呵, 至於software方面, 我認為R較適合自己, 因為寫code比較方便。

      //比較容易整合到D賽馬DATA 所以就多D亂試FACTORS既機會吧
      匿名兄, 電腦底子好, 要請教一下如何試FACTOR?
      比如"馬匹在港出賽次數", 這個factor比用馬齡優秀, 因為p-value很容易少於0.05,
      但這個factor過唔到我model test, 一是它會降低命中率, 二是會將model的盈利減低, 反覆測試兩三星期都只能唔用
      想看看有沒有簡單的試法

      刪除
    33. //馬匹在港出賽次數//
      這是假有效Factor,如你是將沒加工的整體數據(不論班次或路程)放入Logistic Regression,一定會發現越跑多越有機會勝出,點解?想一想賽事結構就會明白。"馬齡"Factor雖然不是太有效但整體方向是正確的,越年青越有機會勝出,所以結果會好一點。

      刪除
    34. //一定會發現越跑多越有機會勝出,點解?想一想賽事結構就會明白
      多謝老賭徒兄前輩的回覆, 你的經驗及努力程度一直是我學習對象。
      不過小弟仍處門外看馬迷級數, 實在不明白賽事結構是指什麼, 所以也沒能力發現越跑多越有機會勝出。
      小弟用自家model test, 馬匹在港出賽次數跟馬齡是相同方向, 出賽次數越少, 越有機會勝出, 想一想老一輩馬迷說法就知, 越年青越有機會勝出嘛。
      至於馬會公佈的馬齡, 每一點切法太粗暴, 每年12月31日跟第二天1月1日就有一大批馬匹級數變身, 所以這種factory就算方向正確, 都不及馬匹在港出賽次數細緻而有效。
      很可惜的是, 小弟能力有限,
      馬匹在港出賽次數 不論試過分班次,班程,場地...等等
      全部結果都是統計有效, 實際無效甚至有害.
      至於馬齡, 連統計都無效, 小弟都沒去想它實際如何變得有效.

      門外看上

      刪除
    35. 門外看兄,請問你如何定義實際無效?

      刪除
    36. //門外看兄,請問你如何定義實際無效?
      用加這個factor的model vs 無加這個factor的model, 其他factor不變,
      test兩三季, 對比兩個model的回收率,
      如果加左一個factor, 每季/每時段輸的錢都多左, 我就確認它實際無效。

      刪除
    37. //計得精彩的PDF版, 我一直有存在電腦, 在第191頁開始, 可惜他只提供他手作的excel圖片, 我沒法用excel復制其公式。//

      隨書個舊版R^2 test Excel template池某應該搵得返,兄台若有需要可留個email。

      刪除
    38. //兄台若有需要可留個email
      感謝池兄慷慨相助。
      小弟電郵 : goldenkinglaundry@gmail.com

      門外看字

      刪除
    39. 回門兄,老某的模型沒有這因子的,覺得不可靠。老某的意思是,十年來4-5班賽事佔整體一半多點,5班約佔一成,4-5班多跑的馬匹會多(質素普通有關)。加上5班勝出馬平均出賽總數約22次,4班是14次,1-3班平均次數更少,LR模型只看「贏輸」,估計系統會受4-5班賽事較多所影響,賽事結構及分佈是不平均的,在LR估算下,本質完美的「完成時間」是冇效的,但相對條件較差的「名次」卻有效。老某不知怎樣解說,總之感覺不妙,希望這感覺會幫到你。

      刪除
    40. 從反映馬匹能力的效果來看,應是名次 > 勝負距離 > 完成時間。
      實際上也很好解釋,完成時間很受場地和步速的影響;勝負距離會因馬匹收韁或末段洩氣不再催策而影響準確度;而名次是有獎金的,大部份騎師在陣上都會全力爭取最佳名次。

      刪除
    41. 老賭徒兄對班次結構顧慮, 我明白, 曾幾何時小弟都會在這點思考良久.
      不過如果套用老兄的想法, 更值得顧慮的應是3-4班, 因為每個賽日幾乎必然有的, 佔去整體賽事數目比4-5班更多。

      若從路程方面睇, 就ST-1400, HV-1200, HV-1650, 印象這些路程未斷過纜, 又會不會在LR效應下, 令其他路程估算失準呢?
      為求安心, 讓每次model test後, 小弟會將final result分拆班次, 路程, 場地, 再逐個看一次report才安心。

      對於賽事結構不平均, 小弟最擔心反而是非讓磅賽,
      因為"蝕分"是個強而有力的factor, 但從賽事比例計, 所佔比率少得可憐。
      之前好些請教池兄關於data不均衡處理方法, 其實亦關係於此。

      情況如下.
      (1) 只分拆平磅賽出來train, 蝕分factor 強而有力
      (2) 不分拆平磅賽出來train, 蝕分factor P-value仍少於0.05, 但影響力變少很多

      如果用方法(1), 即使用10季, 又可train幾多場? train的數量越少, 出來誤差越大, 但data太舊, 準確率又有懷疑。
      如果用方法(2), 會唔會平磅賽的分佈幾乎受讓磅賽的分佈左右, 如果平磅賽的數目在少於5%, LR中有超過95%是讓磅賽, 會不會好些平磅有用的factor早已過唔到0.05呢一關?
      這類技術問題, 並非我這類門外看能解決了, 有人能討論指點就更好。

      刪除
    42. //從反映馬匹能力的效果來看,應是名次 > 勝負距離 > 完成時間
      勝負距離+完成時間 的尾部可以無限伸延, 會不會是這個出問題?
      這只是門外看想法

      刪除
    43. //尾部可以無限伸延
      設個上限封頂試試就知道不是。
      而且問題似乎在頭部而非尾部,亦即一匹馬能造出快時間的外在因素太多,從完成時間去判斷一匹馬的能力誤差會很大。
      印象中「恆駿寶駒」也曾是全港1400米的紀錄保持者,所造的時間同今季的「金槍六十」差不多,但相信不會有人認同這兩匹馬的能力差不多,即使是拿全盛時的「恆駿寶駒」來比較。

      刪除
    44. Sectional times before last section are more useful.

      刪除
    45. 成日以為PPG兄同PP兄係同一個人,都係對Sectional times特別有心得。XD

      刪除
  15. 請問normalized的意思是每"場"參賽馬probability加總為1嗎 ?

    回覆刪除
    回覆
    1. 係,每場的model probability之和及public probability之和都要係1。

      刪除
    2. 那就確認沒錯啊

      刪除
    3. 要強調的是2 step只是一個修正bias的過程,常見的作用是當一方的probability分佈較極端時經2 step調節後可以輸少啲,但2 step絕不可能將一個爛透的1 step結果化腐朽為神奇。

      刪除
  16. 老賭徒兄,其實除了平磅賽外,還有很多比重少但奇怪的馬(比如新馬、第一季新跑新場地等)Agree this is difficult to find features for these horses.

    回覆刪除
    回覆
    1. 記得Benter是會排除新馬賽和四歲系列的。

      刪除
    2. Excluding them is an effective way to deal with these horses.

      But if you can find some "effective" features for these horses, your edges will be higher.

      刪除
    3. 所以除非一場馬全部馬匹都是初出,像新馬賽和四歲系列這些池某都是照賭的,當然結果波幅會較大。

      刪除
  17. 非常同意,這是一直思考的問題,分類計算又怕數據小而不準,合併計算又怕雜音多,試來試去成果有限。很小因子像騎師勝率一樣這麽直接而有效!如馬齡亦越小越有勝率,2歲就不是了,但 LR只給出一個結果。

    回覆刪除
    回覆
    1. 想問下有冇師兄認為LR在現今賽馬下是沒有勝率的?又或者我們需要更有效的方法,如AI,不過老某不懂。

      刪除
    2. 池某認為不管何種方法,對LR model統計效果的過度追逐是走錯方向,理順文章裡所提及「觀往」與「知來」之間的關係才是關鍵。或者今季煞科後有時間可以再展開寫寫。

      刪除
    3. 各位留言的師兄好明顯有自己個人想法或者唔理解或者唔同意池兄既講法。

      刪除
    4. 好現象呀,池某非常願意學習各家之長。自彈自唱有何意思?

      刪除
    5. //師兄好明顯有自己個人想法或者唔理解或者唔同意池兄既講法//
      池兄所說是宏觀的,老某是非常認同,觀往而知來,正是大數據法則。只要我們能將賽馬的過去能用數據還原,就可以成功地「知來」。老某所針對的是「方法」本身是否仍然有效。

      刪除
    6. 池某認為這樣的討論很好,可以刺激自己不斷思考。
      說到//將賽馬的過去能用數據還原,就可以成功地「知來」//,池某認為是沒有方法可以完美做到的,但實際上並不需要,真正落場是偏差小者贏,追求完美方法反而是個作繭自縛的陷阱。

      刪除
  18. 老賭徙, the important thing is always how well you interpret horse racing itself, rather than choosing a model.

    Advanced models such as neural network are useless if you input rubbish features.

    回覆刪除
    回覆
    1. 老賭徒兄之問真是很有意思,就如問金庸小說中哪門武功天下無敵,其實不必想得那麼玄之又玄,像郭靖那樣單純地把降龍十八掌練到極至也可以很無敵。至於真正落場比拚,同一式少林龍爪手也有高下之分呢。而現實中也是這樣,我們只需要贏公眾一招半式就夠,並不需要天下無敵。

      刪除
    2. 其實內功可能更加重要,好似張無忌咁,練成九陽神功已經係頂尖高手。

      刪除
    3. 作者已經移除這則留言。

      刪除
  19. 很小因子像騎師勝率一樣這麽直接而有效<--Agreed. This is because jockey ability is somehow like an odd determined by the jockeys. Strong jockeys often can choose the strongest horses among a race.

    回覆刪除
  20. 請問有無高手可以解釋下benter文章中DP6A的因子具體怎樣做?
    一開始用所有train data還是每隻馬各自的往蹟 train model估名次?
    residual 又怎樣用來估算表現和賽程的關係?
    standard error又怎樣計出來?
    謝謝

    回覆刪除