Skip to content

September 1, 2020

9

凯利判据在美股中的应用:计算最佳杠杆率

作者: physixfan

之前在《用凯利判据玩转前文中的“一个有趣的小数学游戏”》中我提到过凯利判据 (Kelly Criterion),在赌博游戏中可以通过最大化 expected log return 来计算最佳投注比例。这个世界上最大的赌博游戏当然就是股市了,所以凯利判据在股市中的应用也是一个很重要的问题。在股市中应用凯利判据的话稍微有一点不同的就是股市可以视作一个连续函数,而不是离散的结果。在Wikipedia的这个页面里讲了这个问题,本文稍作翻译介绍一下结果。

一个简化的模型是把股市看做几何布朗运动 (Geometric Bronian Motion),即 \(S_t\) 满足如下的微分方程:

\[dS_t = \mu S_t\,dt + \sigma S_t\,dW_t\]

其中 \(W_t\) 是维纳过程 (Wiener Process),其性质包括增量独立于历史值、服从正态分布。\(\mu\) 是漂移百分比 (the percentage drift),\(\sigma\) 是波动百分比 (the percentage volatility)。这里的 \(\mu\) 我稍微强调一下,其含义应该是股市年回报率的算术平均值 (arithmetic average)。

根据伊藤积分 (Ito Calculus),可以得到上面微分方程的解析解:

\[S_t = S_0\exp\left( \left(\mu – \frac{\sigma^2}{2} \right)t + \sigma W_t\right)\]

其中 \(\mu – \frac{\sigma^2}{2}\) 是股市年回报率的几何平均值 (geometric average),即 CAGR (Compound Annual Growth Rate)。这里稍微强调一下 \(\mu\) 和 CAGR 的区别以便准确理解。\( S_0 \) 是初值,不重要,设为1即可。

当标的只有股市的时候,expected log return 即:

\[\mathbb{E} \log(S_t)=\log(S_0)+\left(\mu- \frac {\sigma^2}{2}\right)t = \left(\mu- \frac {\sigma^2}{2}\right)t\]

现在我们假设资金可以不投入股市,而是放在银行里赚一个无风险利率 \(r\),设我们应该把比例 \(f\) 的资金投入股市,于是现在凯利判据的目标就是 \(f\) 应该是多少才能最大化 expected log return。我们只关心单位时间的话,其 expected log return 是:

\[G(f) = f\mu – \frac {(f\sigma)^2}{2} + ((1-f)\ r)\]

最大化 \(G(f)\),可得:

\[f^*=\frac{\mu-r}{\sigma^2}\]

上式就是最终结果,很简洁明了,对我们来说具有很强的现实指导意义。

这个网站里,我们可以查询到美股标普500指数在过去上百年的历史中,回报率和波动率具体有多少。根据选取的时间段不同,数值可能会略有不同。现在我们选取1919-2019这一百年的时间段,不考虑通胀,计算入分红。于是查询到的结果是:arithmetic average return 即 \(\mu=12.33\%\),volatility 即 \(\sigma=19.66\%\),risk free rate \(r\) 我们就假设为3%吧。代入数字即可算出:

\[f^*\approx 2.3\]

等等,\(f^*\) 的含义不是投入资金进股市的最佳比例吗,为什么会得到大于1的结果?是不是哪里出错了?

并非出错了,而是:美股标普500指数的历史回报确实足够高,波动足够小,以至于100%投入股市都不是最佳的,而是应当上2倍多的杠杆!

这个结果给了我们一个很重要的启示:杠杆不一定是坏东西,如果你投资的标的预期回报率足够高、波动足够低,比如美股标普500指数就是很好的例子,那么很可能只有上一定的杠杆才是最优的。当然,另一方面,也说明杠杆率不是越高越好的,假设市面上可以买到标普500指数的10x杠杆的ETF,我们应该买吗?凯利判据告诉我们答案是否定的。

这一事实也需要和《年轻时候应该加杠杆:让一生中的风险变均衡》结合起来:年轻时和中年以后相比资产太少,如果一生中用同样的比例投资股市,那么年轻时承受的波动绝对值就过小了,年轻时需要加杠杆才能让风险在一生中变均衡。加杠杆的坏处是会让波动变大,如果你这笔投资很短时间内就有可能需要卖出的话,那么波动太大对你来说真的是不行的;但若你的投资 time horizon 有30年或更长那么久,那么短时间的波动就不是风险,你完全可以在年轻时加杠杆获得最佳回报率。等年纪越来越大以后,就不要再继续追求 max log return 了,需要把杠杆率逐渐降回1。


P.S. 我认为上面的标准答案其实有一点不合理,即:股市其实并不是按正态分布走的,股市有非常明显的肥尾效应 (fat tail)。所以凯利判据算出来的最佳杠杆率仅供参考,不要把它当做信仰。我认为为了克服掉这个缺陷,最佳杠杆率不能是一个恒定的值,而是要经常频繁的根据近期的volatility来计算并rebalance。Volatility 有显著的 volatility clustering 现象,所以用近期的历史 volatility 来预测接下来一小段时间的 volatility 是能起到一定效果的。

Read more from Investment
9 Comments Post a comment
  1. 阿露
    Sep 1 2020

    把这个模型改进下,用莱维飞行代替布朗运动。结果是不是更好?

    Reply
    • Sep 1 2020

      Levy flight 能更准确的描述股市吗?我持怀疑态度😂

      Reply
      • 阿露
        Sep 1 2020

        搞点数据实证下?😉

  2. Sherman
    Sep 5 2020

    那么2倍杠杆合适还是3倍合适呢?

    Reply
    • Sep 5 2020

      大概只买股票的话2x就差不多了。股票长债一起买才是3x比较好 这也就是为啥HEDGEFUNDIE那个策略把杠杆率定在了3x。

      Reply
  3. Sherman
    Sep 7 2020

    那么我们是不是做一个2.3倍杠杆最合适?

    Reply
    • Sep 8 2020

      这个数字仅供参考 模型太简单不要太当真

      Reply

Trackbacks & Pingbacks

  1. 年轻时应该加杠杆:让一生中的风险变均衡 - 宇宙的心弦
  2. 股市回报率的时间尺度问题 - 宇宙的心弦

Leave a Reply to 阿露

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments