摘自 股票干貨/總算把凱利公式說明白了,最后還有福利送。 - 簡書 (jianshu.com) 導語:眾所周知,凱利公式揭露了信息論與賭博之間的本質聯系,簡約而不簡單。 但是,重點來了!只有正確運用凱利公式,才能讓你的凈值增長如虎添翼。打開方式不對,就看不到成效。本文旨在給出凱利公式的正確使用方法,讓我們了解在有限的信息里,如何下注能使得資本增值的速度最大化。 為了發掘博弈的奧秘,大家都去用凱利公式,網上凱利公式被人提到很多,文章多如牛毛,遺憾的是很多都是錯誤的,就是弄對概念的意義了,說得也有點隔靴搔癢的感覺,今天我決定一起寫篇東西吧,好好介紹介紹。 你沉住氣,慢慢看,這篇文章至少值十萬塊錢。 如果不去證明,只看凱利公式本身,它有著非常簡潔的形式。但須知差之毫厘,謬之千里。有如天龍八部中的易筋經,打開方式不對,你就看不到武功秘籍。而正確的使用凱利公式,有一個正確的方法論,才能讓你的凈值增長如虎添翼。 那怎么做呢?請繼續往下看 一、凱利公式產生的背景 人物介紹什么的就不多說了,總之,就是有那么一個牛人,找到了連續賭博中的最佳投注比例公式,橫掃賭場。后來他又以此構建了一個對沖基金,戰績不俗。 二、賭博怎么用凱利公式? 最早的凱利公式是運用在賭博游戲中的,我們先看看賭博情形下凱利公式的特殊形式: 其中Pwin表示勝率,Ploss=1-Pwin,b表示賭贏了的賠率(扣除本金后的收益/本金)。f表示單次下注占總資金的比例。 就是這個精巧簡潔的公式,將信息論與賭博之間的本質聯系揭露出來,告訴我們在有限了解的信息下,如何下注能使得資本增值的速度最大化。 這個公式怎么來的,怎么推到出來,自己去百度。 一個簡單的例子 假想一個賭博游戲。贏的概率是60%,輸的概率40%,入場費隨意交。如果贏了獲得2倍的入場費金額(b=1),輸則輸掉入場費。假如我有100元做本金,請問我每次給多少入場費,若干次游戲后幾何期望收益能最大? 答:f = (1×0.6-0.4)/1 = 0.2。 也就是說最佳的策略是每次投剩余本金的20%。 這塊不難理解,帶入公式就能算出來。 但是,有兩點要注意: 1. 從概率的角度說,一個期望凈收益為負的游戲是不值得參與的,凱利公式也完美的體現了這一點。還是上面的游戲,如果贏的概率40%,輸的概率60%,那么,期望凈收益就是(1×0.4-0.6)<0;求得的f為-0.2。 負數倉位意味著你有上中兩策可以選。中策選擇不下注,上策是誘騙別人來跟你下注。 2. 賭博版凱利公式只有在穩贏(贏概率=100%)時才會支持押下全部本金,否則都是本金的一定比例。隨著本金的減少,下的注也越來越少。如果沒有交易手續費用,下注又可無限分割,就是沒有最小押注單位,(切記這兩個假設條件,現實中很多局里是不存在這兩個假設條件的。)我們是虧不完的(留得青山在,不怕沒柴燒)。 下圖能更直觀的看到凱利公式對倉位的控制:如果押注的比例限制在0和1之間,對應不同的勝率(Pwin)和賠率(b)時,f會在三維空間上形成一個曲面。這個曲面與f=0對應的平面相交的那條黑線就是期望為0所形成的曲線。 (這一條一點兒都不重要,你不用深入研究和看圖了。) 接下來我們在股票操作中構建一個類似上述的賭博模型,然后引入凱利公式,這才是文章的重點,注意力集中起來哦。 三、把股票模型轉換為賭博模型 股票的假設和賭博有點不一樣。 股票是一個連續的過程,未來某一個時刻的收益率不是固定的一個值,而是一個分布。 那么我們怎么做捏? 怎么做可以發揮各種想象力,以下我們提供一個思路。 首先,在西方那一套理論中,往往用隨機游走來描述股價的波動: 怎么把模型轉換成與賭博模型類似的呢?方法有很多,這里來一個簡單粗暴的-------設置一個止盈價格和止損價格,碰到了就出局(就賣出),股價先觸碰到哪個就按哪個賣出。 如果取對數后的股價服從隨機游走假設,并且初始點(也就是買入價格點)是上沿和下沿的正中間,按照理論,先碰到上沿和先碰到下沿的概率是一樣的。 但是在實際情況中呢,股價不是所有的時候都服從這個隨機游走模型。股價先碰到上沿的概率會高于先碰到下沿的概率。比如說,突然出一個利好,財報公布后超預期,降準降息啦,或者單純的資金面涌入造成短時間多空失衡,等等。 我們管這些事件,或者與這些事件同時發生的一些現象稱為信號。比如說,降息的事件本身,就是一個信號。利好之前可能會有人提前知道偷偷買,造成股價跌不下去,這個該跌不跌就是一個信號。資金的涌入造成成交量放大,這個成交量放大也是一個信號。 上圖表示事件對股價形成了影響,整體概率分布向上偏移,先碰到止盈的概率大于先碰到止損的概率。 交易所做的事情,就是這么一個尋找信號的過程,找到有效信號,意味著信號背后的事件會使股價的概率分布偏離,贏的期望變大。同時我們設置止盈止損線,這樣賠率也就固定了下來。 由此我們就把投資股票的過程轉換成一個連續賭博的過程。信號發出就是我們入場點。止盈止損發生的時候,就是我們的出場點。賠率和損失率就是止盈止損與入場價格之差。一次入場和出場就相當于賭博模型中的單次賭博,單次賭博的倉位由凱利公式確定。 邏輯好通順。(真爽,有沒有感覺像發現了武林秘籍的爽?) 各位童鞋注意,這個信號嘛,是需要同學自己去找的(這就是你們要做的事情啊喂!找到有效的信號就可以賺錢了,至于怎么找你們自己琢磨啊。)。而一旦找到有效信號,由某種方法固化了勝率賠率,凱利公式就華麗登場了。 四、凱利公式登場以后呢? 敲黑板啦,各位同學注意啦!前文的賭博公式中,賠一次會輸掉押注的所有金額。而由于在股市中,我們不會一次性賠光本金,而是賠掉本金的一定比例。所以我們需要使用一般性的凱利公式: (下面的公式才是凱利公式的一般性描述,一開始說的公式只是特殊情況的變種,特殊情況就是損失率是1,就是本金全部輸掉。當下面的c=1時候,一變換就是開始的凱利公式。網絡上太多的文章之所以錯誤就是混淆了這個特殊性。) 其中: f:倉位比例 Pwin:賭贏的概率—股市上漲概率,就是股價先觸碰到止盈價格的概率。 Ploss:賭輸的概率—股市下跌概率,就是股價先觸碰到止損價格的概率。 b:贏錢率(資產從1增加到1+b,比如止盈漲幅5%,那b就是5%) c:損失率(資產從1減少到1-c,比如止損跌幅2%,那b就是2%) 假設我們找到了一個有效信號。并且根據歷史上的統計,過去三年這個有效信號發生了1000次。以信號發出的價格為起點,在20%的正收益時止盈,在20%的負收益時止損。 那么在信號發出后,如果先觸碰盈的次數570次,先觸碰止損的次數430次(這里只是為了舉例而做簡化,實際中我們需要做更多的工作)。于是,我們就成功的把問題轉換成了一個連續賭博的問題:有這么一種賭博,贏一次的賠率為20%,輸一次的損失率為20%,贏率為57%。 對應公式,有Pwin=0.57,Ploss=0.43,b=0.20,c=0.20 此時f=Pwin/c – Ploss/b = 0.57/0.20 – 0.43/0.20= 70% 也就是說,不管你現在剩余多少錢,應該買入剩余部分的70%的倉位。 接下來,我們用蒙特卡洛模擬的方法做一組測試,看看凱利公式是怎么發揮作用的。(你也可以跳過不看,這部分只是套入一些真實數據做的實驗,你只看實驗結論就行了。)假設股票投機產生了T次信號。我們相應的按照上述參數隨機生成勝率和賠率,做了T次投機。把這T次投機算成一組完整的投資過程,這樣就會得到一個凈值的序列。對于任意的T,我們將這個投資過程重復1000次,求凈值的幾何平數。 我們看看在不同的投機次數T下的效果: T=100: 其中藍線表示每次投機都是滿倉; 綠線表示每次投機都是凱利公式給出的倉位(0.7); 紅線是接近凱利公式的倉位(0.6); 還選了一個每次0.9的倉位,誰知道那個線的顏色是什么名字…… 當T=100時,凱利公式倉位下凈值增長最快,但是與其他倉位相比,優勢不明顯。 T=500: 此時,最接近凱利公式倉位的紅線,尚能與凱利公式一戰。其他倉位的凈值已經與凱利公式拉開了距離。 T=1000: 各個倉位明顯看到差距。凱利公式完勝! 說明如果想有效的應用凱利公式,你找到的信號不能太稀疏。否則的話隨機的因素可能占據上風。但是隨著你的交易次數增加,你的凈值能否增長就是一個字: 大概率事件。 ——99.99%曰大概率。 直白地說按照凱利公式的倉位去玩,你一定是賺錢的。 接下來,還有些微小的工作(但是很重要): 加杠桿: 我們看看另外一種情況:現在你找到了一個信號,繼續延續上文的方法,但止盈止損線都是2%。歷史統計漲過2%的概率是0.7,跌破2%的概率是0.3。 那么帶入凱利公式,得到的f值是多少呢? 2000%,也就是20倍的押注。 這是什么鬼?!杠桿是要加這么大嗎? 背后的實際意義是什么? 凱利公式在告訴你這個因子太好了,值得你作20倍的杠桿來操作么?如果是那樣,我再貪心一點好不好,看下圖,加到25倍顯然就挫了。。 所以要理解,凱利公式判斷押注比例的時候,是綜合,贏錢期望和輸贏之間的差距(類似于方差的概念)進行的。如果說: 其中,c=0,計算出來的f是無窮大。在現實中就意味著找到了一個項目,要么賺錢,要么持平,怎么都不會虧。理論上,我們能借多少就要借多少啊! 但理論是理論,實際是實際。實際我們都知道是不存在穩賺不陪的的項目的。 前文中隱含的前提是借錢沒有難度,沒有費用,也沒有利息的。而在現實中,借錢是有成本的。一般人也借不到這么高的杠桿。 即使凱利公式告訴你要使用高杠桿,我們也不建議加過高的杠桿。除了上述的財務摩擦之外,還有如下原因: 「黑天鵝」 簡而言之,我們股票上所有的概率賠率,都是基于歷史數據的。而現實中,小概率事件的概率往往會被低估。 所以說,如果凱利公式告訴你,要壓大倉位,可千萬要三思。你要是不加思考傻乎乎的信了,出了一件在模型歷史統計之外的事情,爆倉分分鐘教你做人。 這么說有點抽象,打個比方,假設股災前,你找了一個很好的信號,比如跌5%時大概率會反彈的這種。然后如上文所述,凱利公式給你的倉位比例是10倍。你壓了兩倍杠桿,還嫌少,又配資加到了5倍。 接下來發生了股災,小概率事件一個接一個。第一天直接擊破止損,還沒等你反應過來,就跌停了賣不出去。第二天開盤跌停了,賣不出去;第三天開盤跌停了,賣不出去…… 就問你怎么辦。 永遠記住:這個世界充滿了因果性和蝴蝶效應。模型只是一個近似的替代。 其次,我們思考一個問題,一個嚴肅的問題-----真正的本金是什么? 有人說,凱利公式計算的倉位總是偏大。其原因嘛,除了上文中提到的,實際股票收益率的分布具有長尾因素,導致極端情況發生的次數比預計要多以外,還有一個原因是很多人沒明白凱利公式的投注比例所對應的本金到底是什么。 人們往往會認為凱利公式所針對投注比例是全資產,但其實上并不是,凱利公式所針對的投注比例是你可承受損失的資產。比如說,有一個私募,投入了1000w,但是有0.8的清倉線,其實只能承受200w的損失。 那么在凱利公式里,f針對的本金其實只有200w,也就是說,如果f=0.7,你一次壓上去的錢只有 200w*0.7=140w。 明白了沒有?如果現在這個1000w虧的只剩 910w了,那么本金只有110w,一次下注的錢只能是110w*0.7=77w,而如果這個1000w賺到了1150w,那么本金就變成了(1150w-800w)*0.7=350w,需要壓的數量就是350w*0.7=245w。 所以說,如果一個人雖然有100%的倉位,但是實際心理能承受的損失就是20%,那么此時就應該用這個20%作為本錢來帶入凱利公式。如果用100%的倉位帶入,結果會讓你很煩躁。 我們在網上找到了一個錯誤的例子。剖析一下: 我們畫了一張圖來理解本文的假設: 上面那段話的暗含的條件是,如果一年內最高價H=2,一年內最低價L=1,不論當前你的價格在那里,未來價格先碰到H的概率和先碰到L的概率都相等。 即Pwin = Ploss = 0.5的情況下,如果當前價為1.3, 此時該保持的倉位 f = (0.5×0.54-0.5×0.23)/(0.54×0.23) = 124.80%。 按照上文邏輯,挑選中信證券(600030.SH)進行回測(如果倉位大于100%,則調整成100%): 1.中信證券 哇塞,比一直持有更賺錢。~ 到這里,你以為你真的就可以一招吃遍天下,用凱利就可以躺著賺錢了嗎? 且慢,換一個標的試試。 2.嘉實滬深300ETF 納尼?大師的一世英名豈不是要栽在這張回測圖上了。說好的收益最大化呢??是不是哪里出錯了?? 問題出在哪? 問題出在假設中,文中假設任意的股票任意位置,先觸碰最高價和先觸碰最低價的概率都是0.5,這顯然是不合理的強假設。因此可能一個股票剛好回測效果比較好,另外一個股票回測效果就比較差。 如果假設改進一下,比如先判斷一下目前是不是一個震蕩中樞里。如果在震蕩中樞里,我們假設先碰到震蕩下沿和上沿的概率相等,都是0.5。如果突破上沿,說明新的趨勢形成,可以滿倉追進去。如果跌破下沿,說明反向趨勢形成,暫時避開。我覺得可能更合理一些。(這只是一個猜想,大家有興趣可以驗證) 一個思考: 如果長期即碰不到上沿也碰不到下沿怎么辦。其實這個問題就出在將股票模型轉換為連續賭博模型的方法上,這就是該方法的缺陷所在。 如果各位仔細看,可以看出本篇文章中轉換為賭博模型的方法,其實是加強了對賠率的控制,舍棄了對時間的控制。因為我們不知道何時才會觸碰上下沿。我建議的方法是,你可以人為價格時間區間,在這個區間內,一直上下都不觸碰的情況,做個人工干預,我相信這種情況都是極少的情況。 好啦,少年。利用凱利公式和我們變換的模型,我們把贏率和虧率,以及倉位問題解決了。可是還有一個變量-----贏錢的概率,沒有解決。 就是前面的說到的,真正賺錢的是找到有效的因子或者信號,使得Pwin盡可能大。而這個因子或者信號的挖掘,就是作為股民孜孜不倦追求的終極目標了。當你找到這樣一個神奇的因子,你需要做的就是,用一種方法將其近似成連續的賭博模型。接下來,凱利公式就會給你指引一條正確的道路。 。。。略 |
|