【经典】巴菲特也用它来管理仓位 -- 凯利公式的前世今生

发布于: 修改于: 雪球转发:234回复:136喜欢:1608
Ricequant出品
当大市非常不好,飞刀乱下的时候,很多朋友会问我:“什么策略最好”。我个人的回答是“多做测试(模拟),少做操作,多学习知识和技巧,才是最好的策略[大笑]” 。下面让我们一起来看看仓位管理的一个经典策略 - 凯利公式吧!


爱好博彩业和投资学的同学应该都对著名的凯利公式不陌生。这是一个通过计算edge和odds来选择最佳投注比例的公式,目的是为了追求长期投资获利的最大化,根据赢输的概率及获利多少来决定投资(赌注)的大小。 


押太少了浪费机会,押太多了“牺牲”的风险大增。 什么才是不多不少的合适赌注(投资)呢?


让我们来看看凯利公式吧:(后面还有相关量化教学哦!






其中
f* 为现有资金应进行下次投注的比例;
b 为投注可得的赔率;
p 为获胜率;
q 为落败率,即 1 - p; 

举例而言,若一赌博有 40% 的获胜率(p = 0.4,q = 0.6),而赌客在赢得赌局时,可获得二对一的赔率(b = 2),则赌客应在每次机会中下注现有资金的 10%(f* = 0.1),以最大化资金的长期增长率。

其实公式的作者,John Larry Kelly,并不是一个资深赌徒,而是一位著名的物理学家,他发明这个公式的时候正是著名的AT&T的Bell Lab 中的一名研究科学家,研究方向是当时还算新兴前沿的电视信号传输协议。



这样一个理论科学家是如何把名字和博彩联系在一起的呢?那就不能不看下这本书了。


William Pound Stone, 把Kelly 公式和它发明者的故事写入了他的作品,Fortune’s Formula, the untold story of the scientific betting system that beat the casinos and Wall Street. 



1955年6月,美国出现了一个极其有名的电视节目,叫做64000 dollar question. 答题者通过不断答对题来累积奖金,一时风靡全美,黄金时段收视率达到85%,各路山寨节目不断。这样一个quiz show迅速吸引了场外下注来赌赢家的赌盘。这档节目的录制是在纽约,东海岸现场直播,而西海岸则有延时。当时的新闻爆出一些丑闻,有关西海岸的赌徒通过电话提前得知结果,赶在了西海岸直播前下注。


John Kelly 看了新闻之后,他想到这个如何使具备一定内幕消息(private wire)但是同时有一部分杂音(noise)的赌徒最大化长期获益的问题,可以使用他们实验室关于咨询学和噪音传递研究的公式来解决。于是,他以一个赛马的模型,推出了凯利公式的雏形。

John Kelly的理论是这样的,对于有一定private wire的赛马人来说,第一个自然的想法当然是放入全部的资金,但是这样就会造成万一输掉血本无归的惨境。而在Kelly想要解决的这个问题中,在任何一个时刻输掉全部资金显然是不符合最大化累积收益的需求的。
真正应该关心的是长期累积的收入(compounding return),对于累积的收益来说,最后的结果只和输赢的局数有关,而和输赢的顺序无关。所以他推出了一个最佳的投入仓位比,来最大化长期的累积收益:
bet = edge / odds = 预期获益/获益回报

这里的edge 在赌博中可以理解为 获胜的概率*赔率 - 失败的概率,当edge的数字为正的时候,这就是值得下注的比赛,而edge为0或者负数的情况说明赌徒不具备edge, 不应该下注(applies to most of games in casino)
而odds则是赔率,我们更可以把它理解为一种公众对概率的估计,是公开的消息。




我们可以用kelly formula模拟这样一种情况:小明现在有100元的起始资金,他现在将要投硬币4次,每一次他投出硬币为正面的时候,将获得6倍资金回报(1陪5),当他投出硬币为反面,陪光。请问小明要如何分配每次下注资金,才能最大化他4次投币之后的收益 (最大化的几何平均值:maximize geometric mean)呢?


根据Kelly 公式计算,我们可以建立起这样一个pascal triangle正反面的概率各为50%,edge = 0.5*5-0.5 = 2, odds为5,最佳仓位为40%,可以看到最终在16个可能出现的结果中(4次投掷),12.96和8100出现1次,64.8和1620出现4次,324出现6次,16次结果的geometric mean(几何平均值) 为324 - Kelly 公式的目的正是最大化这些结果的geometric mean。

由于Kelly 公式着眼于长期回报率和风险的控制,所以天然就吸引投资人想要把它应用在投资当中。比如著名的传奇数学家Edward Thorp读了John Kelly的论文之后,先是自学Fortran用IBM大型机开发了一套专门用于21点的算法(感兴趣的同学可以去看下电影21,电影里的算牌(card counting)的方法正是获得edge的来源),带上John Kelly的导师在拉斯维加斯大把吸金。

(趁机放张帅帅的Jim Sturgess有木有 >.<  )


之后又专门成立了一个hedge fund -  Princeton Newport Partners. 看看这个fund的表现吧


近年来,凯利公式已经成为投资理论的主流之一,巴菲特比尔·格罗斯也应用凯利公式进行投资。



Kelly Formula到底在投资中起到了哪些作用,又有哪些可以研究发掘的领域呢?


Kelly Formula在仓位控制中的应用

在股票市场中,kelly formula的形式和赌博中稍有不同,因为失败之后有一个expected loss,  我们将公式修改为 f = (bp - cq) / (bc),来做一个简单的回测。
假定赚钱(p)赔钱概率(q = 1-p)一样,均为0.5,我们认为净赢率(b)为最高价/当前价-1,净损失率(c)为1-最低价/当前价。

如果当前价大于一年内最高价,满仓,如果当前价小于一年内最低价,空仓,其他情况使用之前得到的f计算出持仓比例(0-1之间),每周调仓。

我们挑选了单只股票作回测,回测的参照物是该股票的买入持有策略(即为价格曲线),看看使用Kelly 公式调节仓位有什么样的效果。

在此基础上,我们再尝试一些优化,


p=q=0.5 的假设太简单粗暴啦, 我们来根据历史数据统计过去一年中5个交易日内的涨跌概率。
加入新的标准,统计过去一年内该股票的一周最大涨跌幅,以此计算b和c,得到的f与之前f的求平均。
设定止损。如果一周内跌幅超过8%,则清仓。

看看是不是优化以后的代码会有更好的表现呢?

有兴趣的同学可以在这里克隆代码 Kelly Formula 的仓位控制(网页链接

Kelly Formula在选股和建立投资组合方面的应用

Kelly 公式在投资组合的应用中,也经常以 f = excess return/variance 的形式出现,f的数值越高也就是投资的价值越大
1.计算股票池中每只股票的Kelly leverages 作为排序score(这里过去一年内每日收益的mean/var)
2.从大到小进行排序,选出前10名的股票,价格在5日均线之上时才购买,平均购买,每月调仓。


在此基础上仍然有进步的空间,因为我们通过kelly score选择股票的时候并未考虑之间的相关性,可以考虑在筛选出股票之后用 covariance matrix重新计算kelly 仓位并按照计算仓位比值来调仓。有兴趣的朋友可以自己克隆现在的策略Kelly Formula选股(网页链接)来进一步优化。

最后补充下
凯利公式在投资中可作如下应用:
1、凯利公式不能代替选股,选股还是要按照巴菲特和费雪的方法。
2、凯利公式可以选时,即使是有投资价值的公式,也有高估和低估的时候,可以用凯利公式进行选时比较。
3、凯利公式适合非核心资产寻找短期投机机会。
4、凯利公式适合作为资产配置的考虑,对于资金管理比较有利,可以充分考虑机会成本。

John Larry Kelly (1923 - 1965) 42岁的时候就不幸去世了,我猜想对于他个人来说,更希望被人铭记的不是拉斯维加斯赌场和hedge fund 之类的掘金工具,而是他作为科学家最骄傲的一个时刻 - 1961年,和同事Gertsman一起,在Bell Lab 用IBM704合成了人工声音(Synthesize Speech),Kelly 的 vocoder制作了歌曲Daisy Bell. 史上第一首由电脑合成的音乐.


就在这一年,一个叫做Arthur Clarke的作家访问了Bell Lab, 被这个人工合成的声音和音乐震惊,将这一幕写入了他的科幻小说。
又过了七年,一个叫做Kubrike的导演让一台濒死的电脑HAL在科幻电影里把这首歌曲唱了出来,这是对科学家Kelly最好的致敬和缅怀

这部电影就是2001: A Space Odyssey



感兴趣的可以去听听这首合成音乐:网页链接

-By Ricequant量化平台(网页链接


$中证500(SH000905)$          $创业板(SZ159915)$           $深证成指(SZ399001)$              $上证指数(SH000001)$               $恒生H股ETF(02828)$              $恒生指数(HKHSI)$           $沪深300(SZ399300)$  

@ETF拯救世界 @东边的小石头 @铁公鸡金融 @魏员外 @大只若鱼 @不明觉厉的小伙伴  @Mario@坚信价值  @一只特立独行的猪   @股民老K   @今日话题  @DAVID自由之路 @非典型伪价值投机  @数亮投资01 @502的牛 @漩涡鸣人NARUTO @耐力投资@猪头IRON @怪盗KuU @价值趋势技术派

精彩讨论

米大探花2016-02-29 16:30

有个问题,我怎样才能定量地知道b,p,q的值呢

小茗2016-02-29 22:38

@小茗: 算了一下,你后面拟合时用的公式(bp - cq) / (bc)无法将持仓比例控制在0-1范围内啊。按你的简化假设,p和q都是0.5,假设b=0.67,c=0.25,则算出来结果1.25

全部讨论

2016-02-29 16:30

有个问题,我怎样才能定量地知道b,p,q的值呢

2022-07-29 22:29

若一赌博有 40% 的获胜率(p = 0.4,q = 0.6),而赌客在赢得赌局时,可获得二对一的赔率(b = 2),则赌客应在每次机会中下注现有资金的 10%(f* = 0.1),以最大化资金的长期增长率

2020-10-13 23:30

2016-08-05 16:53

学习!

2016-06-14 23:32

Mark

2016-06-03 00:33

学习

2016-06-02 10:11

学习!

2016-04-19 20:52

公式很好~ 量化平台正在上手,mark

2016-03-26 05:48