第3章 凯利公式详解:标准凯利公式推导、半凯利与分数凯利、凯利公式的局限性

凯利公式,说白了就是一个帮你决定「每次下注多少」的数学工具。我最早接触它是在做期货策略回测的时候,那时候我总想着怎么让资金曲线更平滑,结果发现仓位管理比策略本身还重要。嗯,今天我们就来把这个公式彻底讲透。

3.1 标准凯利公式的推导

先别急着看公式,我们从一个简单场景开始。

假设你有一个交易策略,胜率是60%,盈亏比是2:1(赚的时候赚2块,亏的时候亏1块)。每次你该用多少仓位?直觉告诉你,肯定不能全押,但具体多少?

凯利公式给出了答案:

f* = (bp - q) / b

其中:

  • f* = 最优投资比例(占总资金的比例)
  • b = 盈亏比(净收益率,比如赚2亏1,b=2)
  • p = 胜率(盈利概率)
  • q = 败率(亏损概率,q = 1 - p)

代入刚才的例子:

f* = (2 * 0.6 - 0.4) / 2 = (1.2 - 0.4) / 2 = 0.4

也就是说,每次应该用40%的资金去下注。这个数字不是拍脑袋出来的,它是在「长期复利最大化」这个目标下推导出来的最优解。

核心思想:凯利公式追求的是长期几何增长率最大化,而不是单次收益最大化。你想想看,如果你每次都全押,哪怕胜率再高,一次亏损就归零了。

推导过程其实不复杂。假设你连续交易n次,每次用f比例的资金,胜率p,盈亏比b。那么n次后的资金总额是:

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

取对数,求导,令导数为0,就得到了上面的公式。我在项目中遇到过不少交易员,他们觉得推导太数学,直接跳过。但我建议你至少理解这个逻辑——它决定了你的资金曲线是向上还是向下。

3.2 半凯利与分数凯利

标准凯利公式算出来的仓位,说实话,有点激进。40%的仓位,如果连续亏3次,你的资金就缩水到21.6%了。这在实盘中很难接受。

所以就有了「半凯利」和「分数凯利」的概念。

半凯利

半凯利就是把标准凯利算出来的仓位砍一半。比如上面例子中,标准凯利是40%,半凯利就是20%。

为什么要这么做?

  • 降低波动性:半凯利的最大回撤大约是标准凯利的一半
  • 减少心理压力:连续亏损时,你不会那么慌
  • 容错性更强:如果你的胜率估计有偏差,半凯利不会让你亏得太惨

我的习惯:我个人在实盘中通常用1/4凯利。标准凯利算出来是40%,我只用10%。虽然理论增长率降低了,但资金曲线的平滑度让我能睡得着觉。记住,交易是马拉松,不是百米冲刺。

分数凯利

分数凯利是半凯利的推广形式。你可以用1/3凯利、1/4凯利,甚至1/10凯利。公式很简单:

f_分数 = k * f*

其中k是分数系数,0 < k < 1。k越小,仓位越保守。

我曾经见过一个做高频交易的团队,他们用1/8凯利。为什么?因为高频交易胜率高但盈亏比低,标准凯利算出来仓位很大,但实际执行中滑点和手续费会吃掉利润。用分数凯利后,他们的夏普比率反而提升了。

3.3 凯利公式的局限性

凯利公式不是万能的。我在项目中踩过不少坑,这里给你列几个最重要的局限性。

局限性一:需要精确的胜率和盈亏比

凯利公式要求你知道p和b的准确值。但实盘中,这两个参数都是估计的。你回测出来的胜率是60%,不代表未来也是60%。一旦估计偏差,凯利公式给出的仓位可能让你亏得很惨。

避坑指南:我曾经用历史数据回测得到一个胜率65%的策略,直接用了标准凯利。结果实盘前三个月胜率只有45%,资金回撤超过50%。从那以后,我再也不敢直接用标准凯利了。现在我的做法是:用最保守的参数估计,然后取1/4凯利。

局限性二:假设交易是独立同分布的

凯利公式假设每次交易的结果是独立的,且胜率和盈亏比不变。但金融市场哪有这么简单?趋势行情中,连续盈利的概率更高;震荡行情中,胜率会下降。这些相关性会破坏凯利公式的假设。

举个例子:如果你的策略在趋势行情中胜率80%,在震荡行情中胜率40%,那么用固定参数算出来的凯利仓位,在震荡行情中就会过度交易。

局限性三:不考虑资金提取和流动性

凯利公式假设你可以随时按比例调整仓位。但实盘中,你可能需要提取资金(比如生活开销),或者遇到流动性问题(比如小市值股票无法按理想价格成交)。这些都会影响实际效果。

局限性四:心理承受能力

这个最容易被忽视。标准凯利的最大回撤可能达到30%-50%。你问问自己,能接受账户从100万亏到50万吗?如果不能,那就别用标准凯利。

我的建议:凯利公式是一个很好的参考工具,但不要把它当成圣杯。我通常的做法是:先用凯利公式算出一个理论仓位,然后根据以下因素调整:

  • 策略的稳定性(回测时间越长,系数可以越大)
  • 当前市场环境(波动大时降低系数)
  • 个人心理承受能力(保守就选小系数)
  • 资金规模(资金越大,越要保守)

3.4 知识体系总览

下面这张图帮你理清本章的核心逻辑:

凯利公式知识体系 标准凯利公式 推导过程 f* = (bp - q) / b 目标:长期复利最大化 对数效用函数求导 分数凯利 f_分数 = k * f* 半凯利:k=0.5 1/4凯利:k=0.25 四大局限性 ① 参数估计偏差 ② 独立同分布假设 ③ 资金提取/流动性 实战建议 用凯利公式算理论仓位 结合策略稳定性、市场环境、心理承受力调整 推荐:1/4凯利起步,逐步优化

3.5 代码实战:凯利公式计算器

光说不练假把式。下面这个Python函数,你可以直接拿去用:

def kelly_calculator(win_rate, profit_ratio, loss_ratio=1, fraction=1):
    """
    凯利公式计算器
    
    参数:
        win_rate: 胜率 (0-1)
        profit_ratio: 盈利时的收益率(如赚2块,则profit_ratio=2)
        loss_ratio: 亏损时的损失率(如亏1块,则loss_ratio=1)
        fraction: 分数凯利系数 (0-1),默认1表示标准凯利
    
    返回:
        f_star: 标准凯利仓位比例
        f_actual: 实际建议仓位比例
    """
    # 计算盈亏比
    b = profit_ratio / loss_ratio
    p = win_rate
    q = 1 - p
    
    # 标准凯利
    f_star = (b * p - q) / b
    
    # 分数凯利
    f_actual = f_star * fraction
    
    return f_star, f_actual

# 示例:胜率60%,盈亏比2:1,使用半凯利
f_star, f_actual = kelly_calculator(0.6, 2, 1, 0.5)
print(f"标准凯利仓位: {f_star:.2%}")
print(f"半凯利仓位: {f_actual:.2%}")

# 输出:
# 标准凯利仓位: 40.00%
# 半凯利仓位: 20.00%

小提示:你可以把这个函数封装到你的回测框架里。每次跑完策略,先算凯利仓位,再根据你的风险偏好调整。我个人习惯在回测报告中同时输出标准凯利和1/4凯利,方便对比。

好了,凯利公式的核心内容就这些。记住,它是个工具,不是规则。用得好,它能帮你控制风险、提升复利;用得不好,它也能让你加速亏损。关键还是在于你对策略的理解和对风险的敬畏。


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