2018年2月5日 星期一

Runtime Error

在正常情況下,當程式代碼運行的時候,會完全不受影響地運行直至終止執行。但如果電腦程式的運作時期出現問題,此為-Runtime Error。 有時候內存數據損壞/程式間的衝突會導致這樣的錯誤。前文提到賭人在建立賭馬模型並實際使用的初期,發現不少錯誤。就是那種情況。記得賭人第一次接觸賭馬/波時亂買都係輸錢,但正因為這挫敗感令賭人有動力去繼續研究,屢敗屢戰!

如果導致錯誤的原因是軟件問題, 程式員需要一行一行地審視程式代碼,試圖尋找軟件中的runtime error。所以軟件/程式調試對程式設計非常重要,調試時間/資源投放越大,出現問題的機會越底。

本文記錄賭人5 個主要的runtime error以警惕自己,同時希望其他人不要重覆賭人的敗路。


  1. 用作計算機率的數據出錯:誤把馬匹的總獎金當作今季獎金計算
  2. Excel function 錯誤
  3. 程式錯誤量化資料計算
  4. 自動化程式出錯
  5. 未能及時更新計算數據
雖然知道部份問題所在並作出相應的改善,新模型不見得有利潤空間。下圖為賭人以今年新建立的賽馬模型對最近6個賽馬日進行測試的結果。


上述的運行錯誤只令計算每駒機率時出現錯誤,最令賭人憂慮的卻是另一個錯誤-致命錯誤(Fatal Error) 

下回再談。

2018年1月9日 星期二

2018 -退

Gambler's prayer: Dear Lord, please let me break even, because i could really use the money.

但可借的是賭人在過去一年不但沒有做到break even, 並錄得嚴重虧損。最令人痛心的是花了不少時間和精神「揼」出來的賽馬模型實際成效跟預期有很大落差,成為過去一年賭人失利的重要因素。既然過去一年的努力換來如此成果,賭人不得不承認失敗。其實失敗並不可怕,可怕的是人們拒絕承認自己的錯誤,一錯再錯。

因為令賭徒拒絕承認錯誤的理由和藉口太多:賭人大可以站在馬埸,責怪馬會抽水太深,高手/大戶太多,分薄了大家的利潤。或是怪馬經的Tips,利用了我們。責怪馬評人的分析,教唆了我們。怪Adam Smith, 當初發明了資本主義。怪金錢分化了我們。但這都不是真正的原因,事實是,罪魁禍首是賭徒自己,自己是問題所在。這都要怪自己。若投注者忽略這一點,將因為錯誤付出高昂的代價。

又以1月1日第三埸沙田馬為例,賭人的模型計算出3號武術冠軍的勝出機會超過9成,轉換成賠率只值1.09,kelly 建議不惜動用9成資金買武術冠軍獨贏。因為隨機性和不確定的因素影響之下,武術冠軍居然以一個頭位勝出。若然賭人跟足kelly建議投注,此埸的利潤超過900%。


在同日第五埸賽事,雖然首飾大帝以項位之差贏出此埸賽事,但也反映出賭人的模型計算結果不合理的情況。理由非常簡單,Even a Broken Clock is Right Twice a Day. 有時候僥倖也會成功,就算瞎猜也可能會猜中。



可幸的是,賭人重覆檢查數據庫/模型/程式/方法,發現當中有很多問題。用的方法亦相當粗疏,這奠定了賭人過去一年的敗局。知道自己一開始走的路已經是錯,再也沒有必要繼續下去,如果再弄錯的時候,就沒有人可以再幫到你。儘管隨機性和運氣是博彩的關鍵,但其中也包括技巧這項元素。有見及此,賭人在2018年先退下來,改善自己在賽馬中的技巧。

正如Malcolm Gladwell在《Outliers: The Story of Success》一書中提出一萬小時定律。意思是要成為某個領域的專家,需要10000小時。一日工作8小時,一周工作5天來計算,至少需要五年時間。對於賭人這類slow learner 可能還要加倍時間,但時間不是問題,問題是賭人能否以一人之力勝過集體智慧。這也是2018年要研究的問題。