3、凯利公式基础:数学推导、最优仓位与局限性

说到资金管理,凯利公式是个绕不开的话题。我最早接触它是在做期货CTA策略的时候,那时候总想着怎么让利润跑起来,结果回撤大得吓人。后来一位前辈跟我说:「你去看看凯利公式吧。」嗯,这一看,就回不去了。

凯利公式的核心思想其实很简单:在已知胜率和赔率的情况下,找到一个最优的下注比例,让长期资金增长最快。说白了,它解决的是「我该押多少」这个问题。

3.1 凯利公式的数学推导

我们先从最简单的场景说起。假设你有一个交易策略,每次交易胜率是p,赔率是b(赔率的意思是,你赚的时候赚b倍,亏的时候亏1倍)。你每次投入本金的比例是f。那么,一次交易后,你的资金变化有两种可能:

  • 盈利:资金变成 1 + bf
  • 亏损:资金变成 1 - f

经过n次交易后,你的资金增长率G可以写成:

G = (1 + bf)^(np) * (1 - f)^(n(1-p))

取对数,得到对数增长率:

log(G) = n * [p * log(1 + bf) + (1-p) * log(1 - f)]

我们要最大化这个对数增长率。为什么取对数?因为对数增长率对应的是「复利增长」,这才是我们真正关心的。你想想看,单次赚多少不重要,重要的是长期能滚多大。

对f求导,令导数为0,得到:

f* = (bp - (1-p)) / b

化简一下:

f* = (p(b+1) - 1) / b

这就是凯利公式的经典形式。我习惯把它记成:最优仓位 = (胜率 × 赔率 - 败率) / 赔率。嗯,这样好记多了。

核心公式:

f* = (p × b - q) / b

其中 p = 胜率,q = 1-p = 败率,b = 赔率(盈亏比)

3.2 最优仓位计算实战

公式有了,怎么用?我拿一个实际例子来说。假设你开发了一个趋势跟踪策略,历史回测显示:

  • 胜率 p = 40%
  • 赔率 b = 2.5(平均盈利是平均亏损的2.5倍)

代入公式:

f* = (0.4 × 2.5 - 0.6) / 2.5
   = (1.0 - 0.6) / 2.5
   = 0.4 / 2.5
   = 0.16

也就是说,每次交易应该投入本金的16%。

我在项目中遇到过一个问题:很多人算出来f*是0.16,就直接用16%去交易了。结果呢?连续几次亏损后,心态崩了。为什么?因为凯利公式假设你的胜率和赔率是精确已知的,但实际中这些参数都是估计值,有误差。

所以我的习惯是:用半凯利或者四分之一凯利。比如上面算出来16%,我实际只用到8%甚至4%。这样既能享受复利增长的好处,又不会因为参数估计偏差而爆仓。

实用建议:

我个人建议,实盘时使用凯利公式计算值的25%-50%。

即:实际仓位 = f* × 0.25 到 f* × 0.5

再来看一个例子。假设你的策略胜率很高,比如p=70%,但赔率只有b=0.5(赚的时候赚0.5倍,亏的时候亏1倍)。算一下:

f* = (0.7 × 0.5 - 0.3) / 0.5
   = (0.35 - 0.3) / 0.5
   = 0.05 / 0.5
   = 0.1

只有10%。你看,胜率高不代表仓位可以大,还得看赔率。这就是凯利公式的妙处——它同时考虑了胜率和赔率两个维度。

3.3 凯利公式的局限性

凯利公式很漂亮,但别把它当圣杯。我曾经吃过它的亏,这里把坑给大家列出来。

⚠️ 凯利公式的五大局限:

  1. 参数估计误差:胜率和赔率都是历史数据算出来的,未来可能完全不一样。你想想看,一个策略在回测里胜率60%,实盘可能只有40%。用60%算出来的仓位,实盘就是灾难。
  2. 连续亏损风险:凯利公式假设每次交易独立,但实际中亏损经常是连续的。我记得有一次,我的策略连续亏损了8次,按凯利公式算的仓位,回撤直接到了40%。
  3. 忽略交易成本:公式里没考虑手续费、滑点。高频交易中,这些成本会吃掉很大一部分利润。
  4. 不适用于非对称风险:有些策略的亏损不是固定的1倍,可能亏0.5倍也可能亏2倍。凯利公式的原始形式处理不了这种情况。
  5. 心理承受能力:凯利公式追求的是长期最大增长,但中间的回撤可能超过你的心理底线。我曾经见过一个朋友,按凯利公式算出来仓位30%,结果回撤20%就受不了了,割肉离场。

那怎么办?我的做法是:把凯利公式当作一个参考上限,而不是目标仓位。具体来说:

  • 用凯利公式算出f*
  • 取f*的25%-50%作为实际仓位
  • 根据账户规模调整:小账户可以激进一点,大账户要保守
  • 结合最大回撤限制:如果凯利算出来的仓位会导致回撤超过你的容忍度,那就再减半

下面这张图展示了凯利公式的核心逻辑,我画了个流程图,方便你理解:

凯利公式核心逻辑 胜率 p 赔率 b 败率 q = 1-p f* = (p × b - q) / b 最大化对数增长率 最优仓位 f* 实际仓位 = f* × 0.25 ~ f* × 0.5(半凯利/四分之一凯利)

最后说一句,凯利公式是个好工具,但它不是万能的。我见过太多人把凯利公式当成「稳赚公式」,结果亏得一塌糊涂。记住:任何数学模型都有假设条件,脱离假设谈应用,就是耍流氓

我的经验总结:

1. 凯利公式算出来的f*,当作上限,别当目标

2. 实盘用半凯利或四分之一凯利

3. 结合最大回撤限制,动态调整仓位

4. 定期重新评估胜率和赔率,参数变了仓位也要变

嗯,凯利公式就讲到这里。记住它的核心:在不确定中寻找最优解,但永远给不确定性留足空间


公众号:蓝海资料掘金营,微信deep3321