對於投資或投機或賭博有所關注的人,相信對於「凱利公式(Kelly Formula)」都不會陌生,甚至於稱其為「大名鼎鼎」也不為過。
網絡上關於凱利公式的資料相當豐富,本文並談不上有什麼新的信息量或切入點,純粹只是通過整理輸出,來為自己加深些印象。同時,借著凱利公式的數學推導過程,熟悉一下數學公式編輯神器Latex的語法規則。
凱利公式,最早起源與AT&T貝爾實驗室的科學家約翰-凱利對於賭徒賭馬問題的研究,凱利希望研究出在這種可重複博弈的賭局中,如何通過優化下注策略,來使得整體收益最大化。在得出了「凱利公式」後,據說這一研究成果首先被一位嗅覺靈敏的名為「愛德華-索普」的人應用於21點賭局以及股票市場,並以此大殺四方賺了個盆滿缽滿。網絡上關於凱利公式的文章,通常也有些傳奇意味,甚至有些標題黨,例如將其稱為「倉位管理神器」,更誇張一些的甚至說「巴菲特憑藉正是凱利公式成為了世界首富」。
到底是不是如此神奇?難道真的可以以此橫掃拉斯維加斯和華爾街?顯然一個簡單的邏輯可以給出答案是——「不可能」。倘若當真如此的話,數學老師們應該通通轉行當金融大亨了,學校裡的數學真的只能靠體育老師來教了,再則拉斯維加斯也應該早就倒閉了。投資是一個系統工程,倉位管理只是其中的一個環節,當然是不可或缺的環節。所以理性來說,凱利公式肯定有價值,但期望一招定乾坤?那顯然就是小龍女的大侄子——過兒了。
從賭局說起在數學語境下,「賭博」並算不上是一個貶義詞,畢竟現代數學的重要分支——統計學及概率論,最早就起源於17世紀數學家帕斯卡、費馬等人對賭博的研究。數學中討論的賭博,更像是對抽象的不確定性及隨機性事件的一種通俗易懂的指代和建模。當然,我想數學家們在潛心研究隨機性事件時,也可能都有過拿拉斯維加斯或華爾街當ATM機的美好理想。
圓規正傳,先看這樣一個最簡單的賭局:
甭管扔硬幣也好,扔骰子也好,賭馬也好,總之在這個賭局中,已知你有45%的概率勝出,也就意味著你有55%的概率失敗。如果失敗,你將虧損掉你所有下注的本金。但如果勝出,你將獲得2倍於下注本金的收益。簡單來說,就是你下注1元,如果輸掉,則1元輸光。如果勝出,則可以賺到2元(連同1元本金,拿回3元)。在這裡,你的勝率是45%,你的賠率為2(本文的賠率都特指淨賠率,或稱為盈虧比。例如本次賭局中,賠率等於2,而不是3。一些賭球平臺經常拿毛賠率來替代淨賠率,若不注意的話很容易掉進這樣的小陷進中)。且前後兩次賭局事件完全獨立,並且可以不停的重複下注,當然前提是你手裡仍有籌碼可繼續下注。
那麼在這樣一種情境下,是否存在某種特定的下注策略,使得你最終的期望收益最大化呢?
首先,我們可以這樣想,每盤都all in肯定是一個壞策略。因為假設你每盤都all in,也即每盤都將所有本金下注,那麼哪怕你前面運氣爆棚連贏99把,在第100把輸的話,也將瞬間歸0出局。
那麼是否存在另一種下注策略來使得期望收益最大化呢?例如下注固定的一個金額?或者一個固定的比例?或者一個動態浮動的比例?
對於每次固定金額(例如每次下注10塊錢)的這種策略,我們可以較為簡單地判斷它不可能是最優。因為假設手裡有100塊籌碼,和100萬籌碼甚至100億的籌碼,顯然是截然不同的情境,不可能都採用同樣的一個下注金額。
憑藉數學直覺,如果有最優解,那應該是某個固定比例的金額。當然,數學不能憑藉直覺,必須通過嚴格的推導證明。對於固定金額的這種策略,也可以通過嚴格的數學證明,證明它肯定不是最優解,但篇幅有限本文不展開證明。我們直接討論固定比例的策略,也就是每次下注相當於本金的固定比例的金額(例如每次下注手上本金的30%或50%等)。
當然,答案是存在這樣一種最優的下注策略,其結論就是凱利公式。
網絡上關於凱利公式的最常見版本是這樣的,假設每次下注的倉位比例為f,那麼凱利公式表述為:
這其中,b代表了淨賠率(或盈虧比),p代表了勝率,q代表了失敗率。在特定的賭局中,b、p、q都是已知的且固定的參數,那麼我們就可以代入上面的公式,算出最佳的倉位比例。
例如我們上文提到的賭局,,代入公式可得:
這也就是說,我們的最佳下注比例是本金的,也就是說,只要我們每次下注,都嚴格按照當時所擁有本金的17.5%進行下注,那麼經過大量的足夠多的重複下注之後,我們最終的收益,會是所有不同下注方式中表現最優的。
這個結論對不對呢?首先比較容易想到的是通過計算機模擬,也就是常說「蒙特卡洛方法」。我們給定相應的概率和賠率,通過計算機模擬隨機性,進行數百萬次甚至數千萬次的下注。給定不同的下注比例,最終會得到不同的下注結果,並得到一條不同的收益曲線。
這部分模擬我並沒有親自去做,其代碼並不複雜,已經有非常多的人去做了模擬。可以確定的是,當你的模擬下注次數足夠多時,我們得到的結論都是——「按照凱利公式得到的倉位比例下注」,最終得到的曲線是最優的。
那麼是否經過大量的計算機模擬,甚至賭場實踐,都得到了凱利公式是最優下注方式之後,我們就可以認定凱利公式一定是最優解了呢?
從數學的角度看,可以肯定的說這是不行的,因為我們僅僅通過實驗和模擬,我們仍無法確定,這個凱利公式,到底是基於凱利的經驗總結呢?或是基於計算機進行函數擬合呢?還是嚴格的數學推導呢?倘若只是單純的經驗總結,或者擬合得到的公式,顯然它的根基並不那麼牢靠。但如果是經過嚴格的數學推導得到,那麼它就絕對值得信任。如果是嚴格基於題目給出的前置條件,甚至可以說是絕對正確的。
在物理化學等實驗科學層面,倘若一個結論,經過了大量的實驗驗證且都正確,其基本邏輯解釋又是合理的,那麼通常就有機會將其歸為某種定律,並正式地納入當下的科學體系。但數學不同,數學是形式科學而不是實驗科學,一個結論哪怕進行了上百億次的實驗驗證,也無法替代邏輯演繹本身。一個最典型的例子就是黎曼猜想,如今人們已經藉助計算機,進行了百億次甚至更大數量級的模擬驗證,黎曼猜想的結論都是正確的,但這並不能代替數學的邏輯演繹本身,因此黎曼猜想仍然只是猜想,還不能成為黎曼定理。這就是形式科學和實驗科學的本質性不同。
為了追求數學級別的嚴謹,我們也需要完全基於數學公理體系之下的邏輯演繹推導凱利公式。
下面,就讓我們一起走一遍這個充滿美感的數學過程。
凱利公式的數學推導在正式開始推導過程之前,先說一個簡單的結論,也就是上面所表述的凱利公式是對的,但又不全對,因為它缺乏通用性,實際上是特殊化的公式。也就是僅僅適用於失敗時虧損比例為本金100%的這樣一種特殊情況。顯然這種情況有很大的局限性,例如股票的投資場景,當我們投資失敗時,虧損比例通常是本金的一定比例,例如20%,50%等,所以以上版本的公式就缺乏了通用性。
為了推導出更具普適性的公式版本,我們需要對變量名重新做一次約定。
變量名及符號約定假設初始資產(也即本金)為,在進行了N次下注後資產變為Xn,
該賭局或者投資行為的成功概率為,失敗概率為,顯然有,或。
(收益比例): 當下注成功時,以本金作為基準的收益比例為
(虧損比例): 當下註失敗時,以本金作為基準的虧損比例為
b(淨賠率或盈虧比):定義,稱為淨賠率(或盈虧比)
N(總下注次數):須假定N足夠大(在概率論中的大數定律,當N足夠大,頻率會最終收斂於概率)
f(固定下注比例): 每次固定的下注比例。
我們的基本解題思路是,將作為自變量構建收益函數,進而將其轉化為數學中的求極值問題。
根據以上符號約定,當第次下注後資產為,第次下注後資產為。
如果第次下注成功,下注比例為,顯然有,等式右側提取公因數後,即。
同理,如果第次下註失敗,則
根據大數定律,則當總下注次數足夠大時,期間成功的總次數為(嚴謹地說應該是收斂於)次,失敗的總次數為次
則不難得出,當進行完全部次下注後,的表達式為:
將等式兩邊同時除以,等式左側變為了,其含義就是投資中常說的「淨值」,給其一個新的函數代號,則有:
顯然,是一個關於的函數,可記為。至此,問題完全轉化一個經典的並不算複雜的函數求極值問題:自變量取什麼值時,函數取得最大值?
先將等式兩邊同時取對數。為何要同時取對數?主要原因在於:
對數函數是在其定義域內是嚴格的單調遞增函數。對某個函數取對數之後,不會改變原有函數的極值點。也即如果有某個函數在某處取得最大值或者最小值,對其取對數之後的新複合函數,仍然在相應的點取最大值或最小值,因此在求極值問題時常常使用。
根據對數的運算法則,取對數可以起到「降維」效果,可將指數運算轉化為乘積,將連續乘積變為連加。
等式兩邊同時取對數後,我們給予新的函數一個新的函數名,仍然是關於的函數,記為,則有:
根據對數基本運算法則,可得:
令對求導,根據複合函數求導法則,可得:
為求極值,令導數為,也即:
等式兩邊同時除以N,並交叉相乘,可得:
進一步展開,並移項整理,可得:
又由於,整理可得:
等式右側約分,可得:
至此,我們基於嚴格的數學證明,得到了一個通用性更強的凱利公式版本。
此外,我們還可以引入常見的賠率(盈虧比),來得到另一個等價版本。
將淨賠率(盈虧比) ,代入以上公式,並進行一系列等式變換後,可得到
以上就是凱利公式的另一個等價版本。
如果回歸到文章開頭所指的賭局類型問題時,當時,則公式簡化為:
這就是網絡上最常出現的凱利公式版本,顯然,它只是當的特殊形式,不具備通用性。
當我們代入不同的參數,計算得到不同的f,如<=0則代表不應該下注。如>0則代表可以下注,如>1則代表不僅可以下注,還應該開槓槓。
若要使得,則必須有,也即,期望收益為正才值得下注,若期望收益為0或為負,計算得到的倉位比例
賭 局勝率