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,池某就不一一回信了,請見諒。