查看原文
其他

凯利公式,从赌场到量化投资

量信投资 川总写量化 2022-05-14


作者:石川,量信投资创始合伙人,麻省理工学院博士,精通各种概率模型和统计方法,擅长不确定性随机系统的建模及优化。


1

引言


今天我们来聊聊大名鼎鼎的凯利公式(英文叫 Kelly FormulaKelly Criterion,所以中文也译作凯利准则)。


凯利公式由 John R. Kelly, Jr. 于1956年提出(Kelly 1956)。它指出在一个期望收益为正的重复性赌局或者重复性投资中,每一期应该下注的最优比例。凯利公式在“拉斯维加斯”和“华尔街”久负盛名。很多数学天才将它在赌场和投资中发扬光大,取得了非凡的成就。这其中最著名的大概就是 Dr. Edward Thorp,他开辟了战胜 Blackjack(21 点)的策略,并使用凯利公式计算出来的比例进行下注(Thorp 1962);玩转赌场后,Thorp 博士将它在统计学和概率论上的天赋用在投资中,他创建的 PNP 对冲基金曾在近 30 年内取得了年化 20% 以上的收益率(Thorp 2017)。此外,学术界也对凯利公式的各种数学性质以及实践应用进行了大量的研究,这些成果汇总于 MacLean 等人编辑的论文集 MacLean et al. Eds (2010) 中。


凯利公式的计算非常简单,但它背后所传达的数学含义至关重要。本文从一个扔硬币游戏出发介绍凯利公式以及它的性质,之后会揭示凯利公式背后的实质。最后文章介绍如何把凯利公式推广到量化投资中确定投资的最优杠杆比例。


鉴于凯利公式的知名度,网上介绍它的文章自不在少数。本文是我和另一位合伙人高老板思想碰撞的产物,虽不求另辟蹊径,但也希望能给小伙伴们理解凯利公式提供一些新的思路。


2

赌桌上的大学问 —— 从扔硬币到凯利公式


让我们从扔硬币说起。


假设在一个赌局游戏中,我们一直不断的扔硬币。每局中,硬币出现正面的概率为 p > 0.5(出现反面的概率为 q = 1 – p < 0.5)且局与局之间扔硬币的结果独立。每局中我们下注一定的金额,如果出现正面我们赢钱(假设赔率为 1,即不算本金,我们赢的钱和下注的金额相等),反之我们亏钱。由于 p > 0.5,这个游戏长期的期望收益为正,因此玩下去对我们是有利的。

 

在这个游戏中,我们需要做的决策是决定每局下注的金额。令 B_i 表示第 i 局的下注金额;T_i = 1 表示在第 i 局中我们获胜、T_i = -1 表示在第 i 局中我们失败。假设我们的初始资金是 X_0,则第 n 局之后的资金量 X_n 满足:


 

假设我们的目标是最大化 X_n 的期望 E[X_n]。由上面的关系时可知,E[X_n] 的表达式如下:



由于 p – q > 0,最大化 E[X_n] 相当于在每一局都最大化当期下注金额的期望 E[B_i]。这意味着,每一局中我们都应该有多少押多少。举例来说,在第一局中,我们应该押注所有的初始资金,因此 B_1 = X_0;如果我们赢了则 X_1 = 2X_0,在第二局中下注 B_2 = X_1 = 2X_0,以此类推。


这个游戏的期望收益虽然为正,但我们每局获胜的概率 p 毕竟不等于 1,而是小于 1。也许我们能连赢几次,但总有“运气用尽”的那一局。一旦在某一局中硬币出现反面,由于押注了全部资金,我们将会输掉所有。由于 p < 1,随着赌局数n的增加,“输掉全部”这种结果一定会出现。所以,以最大化E[X_n]为目标的下注策略(即每把都“满仓干”)并不是最优的。


下面让我们看另一个策略 —— 固定比例投注(fixed fraction betting)。假设我们按照 B_i = fX_{i-1},0 < f < 1 的方式投注。每一局中,我们下注现有资金量的一个固定比例 f。用 S 和 F 分别表示在 n 局中获胜和失败的次数,S + F = n。n 局后的资金 X_n 为:



由于0 < f < 1,那么我们永远不会输光。但是,n 局之后的资金 X_n 显然和 f 的取值有关。应该如何决定最优的 f 呢?因为扔硬币有随机性,因此 S 和 F 的取值也是不确定的,那么这个最优又是从什么意义上来说的呢?这就是凯利研究的问题。


定义函数 G_n(f) 如下:



这个(1/n)ln[X_n/X_0]是什么呢?由 exp{n×(1/n)ln[X_n/X_0]} = X_n/X_0 可知,(1/n)ln[X_n/X_0] 就是单局资金的指数增长率(即单局的对数收益率)。在决定最优的下注比例 f 时,凯利选择最大化单局对数收益率的期望(下文会解释为什么),记为 g(f):



令 g(f) 的一阶导数等于 0 可以求出最优值 f* = p - q,此外不难验证在 (0,1) 区间上 g(f) 的二阶导恒为负,因此 g(f) 在 f = f* 时有最大值。


f* = p - q 就是最优的下注比例,它就是凯利公式。在上面的例子中,我们假设每局的赔率等于 1。更一般的,如果用 b 表示每局赔率,则凯利公式的一般形式为:



如果我们一直将这个游戏玩下去,按 f* 比例下注将最大化对数收益率的期望。对于任何给定的局数 n(和初始资金 X_0),按此比例下注实际上就是在最大化 E[ln(X_n)],即 n 局后资金量的对数的期望。


按照凯利公式,我们在每局下注时都在最大化 E[ln(X_n)];而按照之前说的每局都全押,我们是在最大化 E[X_n]。由对数函数的特性可知,E[ln(X_n)] < E[X_n],所以我们自然会问,为什么要最大化 E[ln(X_n)]?这么做如何就最优了?


按照 f* 比例而非其他比例下注有如下这两点颠覆性的优势(在数学上都被证明了,我们只需要牢记就行了):


1. 随着局数 n 的增大,按照凯利公式 f* 下注的资金 X_n(f*) 将远远超过按照任何其他比例 f 下注的资金 X_n(f);


2. 对于任何给定的目标资金额 C,以凯利公式 f* 下注的策略超过该资金额所需要的期望时间(即期望局数)最少。


上述两点是按照凯利公式 f* 下注时,X_n 的重要性质。尤其是第一条,用白话来说,它的意思是只要我们一直玩下去(n 足够大),那么想赢得最多的钱(X_n 尽量大),那么就应该按照 f* 下注。事实上,当 n 小的时候,X_n(f*) 很有可能小于 X_n(f) —— 即凯利公式策略的资金额比不过其他下注比例的资金额。但只要 n 足够大,凯利公式一定会笑到最后,战胜其他任何比例。下面我们就来解读凯利公式背后的实质。


3

理解凯利公式 —— 初探


从上一节的数学表达式可知,凯利公式的推导中考虑的是当局数 n 趋近于无穷时,资金量 X_n 逼近其极限情况的一些特性。X_n(f*) 一定超过其他 X_n(f) 也是以 n 足够大为前提的。但是在现实中,足够大是多大呢?毕竟无论是在赌场中还是在投资中,我们的局数(投资期数)n 都是有限的。对于有限次数的赌局或者投资,无法保证按照凯利公式下注能产生最高的期末资金量 X_n;当 n 有限时,使用凯利公式最优比例下注得到的 X_n 在多大概率上优于其他下注比例?是否有比凯利公式更好的下注比例呢?


为了搞清楚这些问题,考虑下面这个实验。令 p = 0.6,q = 0.4,b = 1,初始资金为 1。由凯利公式易知 f* = 0.2。假设我们玩 20 局,即 n = 20。除了 f* 外,考虑另一个下注比例 f = 0.6。通过一百万次蒙特卡罗仿真来比较这两个策略。每次仿真中扔硬币 20 局,并记录 20 局后这两个策略的资金额,最后对这一百万次结果取均值。


结果显示,按 0.6 比例下注的策略可以获得比按照凯利公式下注更高的平均期末资金,即 E[X_n(f=0.6)] > E[X_n(f*=0.2)]。这其实不难理解,因为凯利公式的目标是最大化 E[ln(X_20)],而不是为了最大化 E[X_20]。每次全押(即 f = 1)的策略最大化 E[X_20],任何大于 f* 的下注比例的期末期望 E[X_20(f)] 都会大于凯利公式的 E[X_20(f*)]。


然而有意思的是,在这一百万次实验中,按照 0.6 比例下注的策略最终的 X_20(f) 取值仅仅在 12.6% 的情况中战胜了按照凯利公式下注得到的 X_20(f*)。在现实中显然无法将这 20 局的赌局进行一百万次,我们只能进行一次。虽然按照 0.6 下注的期望更高,但就只进行一次 20 盘的赌局最终能得到的资金 X_20 来看,使用凯利公式下注战胜使用 0.6 的比例下注的概率高达 87.4%。


这是为什么呢?


下图显示了当 f 取 0.1,0.2,…,0.9 时,X_20(f) 的概率质量函数(probability mass function)。扔硬币 20 局,出现正面的次数取值是 0 到 20 这 21 个数,因此对于每一个 f,X_20(f) 的取值只有 21 个。图中横坐标是 X_20(f) 的可能取值,纵坐标是取值对应的概率。随着 f 的增大,X_20(f) 的取值范围随指数增长,X_20(f) 的最大、最小值都按指数的速度在横坐标的左右两端延伸。由于 X_20(f) 无论如何也不会低于 0,所以它能变小的范围有限,而它可能变大的范围则要大得多(比如 f = 0.2 时,X_20 的最大值为 38.34;而当 f = 0.6 时,X_20 的最大值为 12089.26)。因此,X_20(f) 的分布是非常右偏的。这种病态的右偏造成了 E[X_20(f=0.6)] > E[X_20(f*=0.2)]。由于严重的右偏,E[X_n] 在横坐标上的位置非常靠右,但是在现实中根本无法实现。因此以最大化 E[X_n] 为目标的下注一定不是最优的。



随着 f 的增大,X_20(f) 分布的右偏越来越严重,其越来越多的取值被压缩在整体分布的左侧,因此 X_20(f) 大于任何给定常数 C 的概率 —— prob(X_n(f) > C) 随 f 的增大而快速下降。举例来说,当 f = 0.2 时,X_20 > 1 的概率为 0.416;而当 f = 0.6 时,X_20 > 1 的概率骤减到 0.126。这暗示着在 20 局结束后,X_20(f*=0.2) 比 X_20(f=0.6) 更高的概率很大。即便是对于有限局数(本例中的 20),凯利公式计算出的下注比例仍然是非凡的。


我们将上面的结论推广到更一般的情况。对于现实世界中任意给定的 p、q 以及赔率 b(下面假设 b = 1),我们都能利用凯利公式算出 f*,那么最少需要玩多少局我们就能拍着胸脯说使用 f* 下注一定比其他任何别的 f 所获得的收益更高呢?


下面这个热图为 f* 以 90% 的概率(足够拍着胸脯说了)战胜其他f所需要的最小局数。其中每一行左边的数值为出现正面概率 p 的取值,每一列最下方的数字代表下注比例 f。每个 p 对应的 f* 也相应的标注在图中。举个例子,如果我们看 p = 0.6 那一行,f* 的格子所在列为 f = 0.2,说明 f* = 0.2。该行的其他列中的数字说明了 X_n(f*) 以 90% 的概率打败 X_n(f) 所需要的最小的局数 n。比如当 f = 0.6 时,对应的格子里的数字是 28,说明仅仅需要 n = 28 局,X_n(f*=0.2) 就能以 90% 的概率战胜 X_n(f=0.6)。



当 f 接近 f* 的时候,f* 打败 f 所需要的最小局数要高一些。但在现实中,如果 f* = 0.2,那么我们刻意去拿它和 f = 0.24 或者 f = 0.16 这些很接近它的比例去比也没什么意义。f 越接近 f*,X_n(f) 也就越接近 X_n(f*),所以我们会用一个和 f* 显著不同的 f 来对比。从上面的热图可以看到,对于任意给定的 p,当 f 和 f* 显著不同时,X_n(f*) 仅仅需要很少的局数(一般不超过 50)就可以以 90% 的概率战胜 X_n(f)了。50 是一个什么概念?如果我们在赌场待几天,重复的玩一个赌局 50 次恐怕很容易。如果我们做投资,以周频为单位的话,50 次只不过是短短一年,以月频为单位的话,50 次也不过区区 4 年出头。所以,50 次以内在现实生活中是非常容易达到的次数。因此,对于现实中的 n 有限的情况,凯利公式也能在很大的概率上保证是最优的。


第二节直接给出了结论说明当 n 足够大的时候,X_n(f*) 一定是最高的;本节通过实证说明即便在 n 有限的情况下,X_n(f*) 也大概率是最高的。那么,到底是什么保证了凯利公式的 f* 如此非凡呢?下一节就来给出答案。


4

理解凯利公式 —— 本质


上一节的介绍让我们对凯利公式已经有一定的理解。本节就来揭示凯利公式背后的实质。


前文说到,以最大化 E[X_n] 为目标制定下注比例根本不靠谱。那么来看看靠谱的目标。第二节指出,凯利最大化的是单期对数收益率的期望,对于任何给定的 n,这等价于最大化 E[ln(X_n)],即 X_n 的对数的期望。在上一节中,我们给出了 n = 20 时,X_n 的概率质量函数,并指出随着f的增大它呈现出越来越显著的病态右偏。


下面就请睁大眼睛,我们要变魔术了!


将上一节中 X_n 的概率质量函数的横坐标变成以 e 为底的对数坐标,那么它们就变成了下面这个样子。由于进行了坐标变换,下面这个其实就是 ln(X_n) 的概率质量函数



怎么样?ln(X_n),n = 20 的概率分布不再右偏,而是呈现出几乎左右对称的钟形(bell-shaped)形状(当然 ln(X_n) 的取值还是随着 f 的增大越来越宽)。这个钟形不太平滑是因为 n 的取值比较小。假如 n = 200,那么不同比例 f 下 ln(X_n) 的分布如下图所示,分布更加平滑,钟形左右更加对称。



你一定已经猜到了我为什么多次提到“钟形”。因为正态分布的形状就是“钟形”的。随着 n 的增大,ln(X_n) 的分布越来越接近正态分布!此外,上面了两张图说明随着 f 的增大,ln(X_n) 的众数(即 ln(X_n) 的所有取值里面概率最高的那一个,就是图中概率质量函数的那个"尖儿"对应的 ln(X_n) 的取值)先变大、后变小,在 f = f* 时达到峰值。对于正态分布来说,它的众数就是它的期望。因此,分布上这个“尖儿”对应的 ln(X_n) 的取值向右移动的过程就是 E[ln(X_n)] 向右移动的过程。这意味着 E[ln(X_n)]在 f = f* 时最大,而这正是凯利求解f*时的初衷。


对于初始资金 X_0(假设等于 1),ln(X_n) = ln(X_n/X_0) 就是整个 n 局的对数收益率。对数收益率的最大好处是它的可加性,把单期的对数收益率相加就得到整体的对数收益率。



由于不同期之间是相互独立的,n 期对数收益率相加相当于 n 个独立的随机变量相加。由中心极限定理(Central limit theorem)可知,它们的和 ln(X_n) 逼近正态分布,这解释了为什么上面 ln(X_n) 的概率分布呈现出“钟形”。


由于 ln(X_n) 是整个 n 期的对数收益,因此 (1/n) × ln(X_n) 就是每期对数收益率的均值。由大数定律(Law of Large Numbers)可知,(1/n) × ln(X_n)  随着 n 的增大一定会收敛于它的期望,即 E[(1/n) × ln(X_n)];对于给定的 n,n 期的总收益会收敛于 E[ln(X_n)]。


我们玩一个赌局或者投资,最终是想让 X_n 越大越好,但我们不知道 X_n 最终会变成什么样,或者会收敛到什么值。但上面的分析说明只要 n 足够大,大数定律保证了 X_n 的对数,即 ln(X_n),一定会非常接近它的期望 E[ln(X_n)],那么我们自然就想找到一个下注比例使得 E[ln(X_n)] 尽可能的大。而凯利公式的 f* 恰恰就是使 E[ln(X_n)] 最大的下注比例。这就是凯利公式为什么 NB 的原因。


由于中心极限定理和大数定律的特性,我们并不要求单期的收益率满足特定的分布。因此即便本文中使用扔硬币这个例子 —— 它的单期收益率是个伯努利分布 —— 凯利公式的思想,即最大化单期对数收益率,可以应用到任何不同的分布中。


最后想提一句的是,凯利当初选择使用对数收益率是受了伯努利对数效用函数的启发。伯努利于 1738 年发表了一篇关于风险下做决策的重要论文(原作不是英文版,后来为了推广,于 1954 年被一个大牛教授翻译成英文出版,见 Bernoulli 1954)。在那篇文章中,伯努利提出了对数效用函数以及著名的圣彼得堡悖论(St. Petersburg paradox)。



ln(X_n) 随 X_n 的变化如上图所示。由于对数函数的特性,它说明当 X_n > 1 时(即我们在期末赢钱了),我们挣得越多,感受到的边际喜悦越低;当 X_n < 1 时(即我们在期末亏钱了),我们亏的越多,感受到的边际痛苦越高,这十分符合人在投资时的主观感受。所以,从最终收益 X_n 的效用的角度来说,最大化期望效用 E[ln(X_n)] 也是对凯利的初衷的一种解释。当然,对数收益率可以相加,这样单期的收益率能和总体的收益率联系起来。因此从业务实际出发,选择对数收益率作为优化目标实属必然。


5

凯利公式在量化投资中


最后就来看看如何将凯利公式应用于量化投资中确定投资品的最佳杠杆比例(仓位)。


首先来看一种“生搬硬套”的方法。对于很多策略(特别是技术分析策略),一般都有胜率和盈亏比的概念。这里胜率就是每次交易赚钱的概率,即 p;盈亏比就相当于赔率 b,即每单位亏损对应的收益。所以,我们可以使用凯利公式计算每次交易的仓位 f* = (b × p – q) / b。当然,考虑到投资者对于风险的诉求,还可以在这个仓位控制上加一个风险系数,从而进一步降低仓位。


但这种方法并不是很好。这里的赔率的计算方法是所有盈利交易的平均收益除以所有亏损交易的平均亏损。由于每个交易的开仓、平仓时间并不固定,因此每次交易的持续时间都是不同的。这种方法在计算收益率时完全不考虑交易时间这个因素。比如两次赢钱的交易,一次开仓时间为 2 天,收益 1%;而另一次开仓时间为 3 小时,收益为 1%。它们的平均收益为 1%,但是显然这两次交易的风险特性完全不同。所以,这个不考虑交易时间的赔率计算方式是有问题的,以此计算的 f* 并不合理。


下面就来看看更合理的应用凯利公式的方法。我们并不是生搬硬套第二节中的那个 f* 公式,而是利用凯利公式的思想,即最大化单期对数收益率。由于收益率都是相对一个给定的频率而言的(如日收益率、周收益率等),因此这种方法更加合理。


假设一个投资品的单期的百分比收益率(即期末价格 / 期初价格 - 1)满足均值为 μ、标准差为 σ 的正态分布。可以证明,在这个假设下,该投资品的单期对数收益率的期望为 μ - 0.5σ^2。我们来看看最大化该对数收益率的杠杆率 L 是多少。


当我们使用 L 倍的杠杆时,均值和标准差分别变为 μL 和 σL,因此对数收益率变为 μL - 0.5(σL)^2。以 L 为自变量来最大化 μL - 0.5(σL)^2。对其求一阶导数并使它为 0,并检查其二阶导数有:



由一阶导数等于 0 可得最优的杠杆率为 L* = μ / σ^2,由于二阶导数恒小于 0,因此对数收益率在 L = L* 有最大值。因此,凯利公式确定的最优杠杆率就是:



在实际使用中,μ 和 σ 难以估计,此外不同期之间的收益率也很难保证绝对独立,因此业界普遍的观点是凯利公式的理论杠杆率风险较高。为此,普遍的做法是把 L* 看作是杠杆率的上限,而使用 L*/2 的杠杆率,这称之为“half-Kelly”。投资者可根据自己愿意承担的最大风险来决定是否进一步降低杠杆率。


最后想说明的是,无论如何应用凯利公式,重复性投资毕竟不是玩一个有固定且独立收益特征的赌局。投资的收益参数随时间不停的变化,这就给我们在投资中应用凯利公式带来了更多的障碍。有人说凯利公式的核心是控制风险,我比较认同这句话。毕竟,控制好风险才能在市场中活得长,活得长才有可能获得更高的收益。


 

参考文献

Bernoulli, D. (1954). Exposition of a New Theory on the Measurement of Risk. Econometrica, Vol. 22(1), 23 – 36.

 

Kelly, J. R. Jr. (1956). A New Interpretation of Information Rate. Bell System Technical Journal, Vol. 35, 917 – 926.

 

MacLean, L. C., E. O. Thorp, and W. T. Ziemba, Eds (2010). The Kelly Capital Growth Investment Criterion. World Scientific Handbook in Financial Economics Series, Vol 3.

 

Thorp, E. O. (1962). Beat the Dealer. Random House, New York.

 

Thorp, E. O. (2017). A Man for all Markets: from Las Vegas to Wall Street, How I beat the Dealer and the Market. Random House, New York.



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存