📐 凯利公式 · 实战精解

资金管理 · 风险平价

🧮 1. 凯利公式的推导 Kelly Criterion

📌 核心思想

最大化长期复合增长率 G,通过下注比例 f 平衡收益与风险。

假设胜率 p,赔率 b(净赔率,损失为1),则单次期望对数增长:

E[log(1+f·b·win - f·loss)] = p·log(1+bf) + (1-p)·log(1-f)

对 f 求导并令导数为零,得到最优比例:

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

当 b=1(等额赔率)时简化为 f* = 2p - 1。

📈 推导路径

  1. 定义增长函数:G(f) = p·ln(1+bf) + (1-p)·ln(1-f)
  2. 一阶条件:∂G/∂f = p·b/(1+bf) - (1-p)/(1-f) = 0
  3. 求解 f:p·b·(1-f) = (1-p)·(1+bf)
  4. 整理得:f = (p·b - (1-p)) / b = p - (1-p)/b
  5. 边界条件:f 应介于 0 ~ 1 之间,若为负则不下注。
📌 经典案例 胜率60%,赔率1:1 → f* = 0.2 (20%)

⚖️ 2. 最优下注比例 & 半凯利公式

🧪 标准凯利计算器

参数数值最优 f*
p=55%, b=2净赔率 2:1f* = 0.325
p=60%, b=1盈亏等额f* = 0.20
p=45%, b=3高赔率f* = 0.183
p=50%, b=0.8赔率不足f* = 0.125

⚠️ 若 f* ≤ 0,表示没有正期望,不应下注。

🌓 半凯利 (Half Kelly)

f_half = 0.5 × f*

  • 优点:降低波动,减少回撤,更易坚持
  • 适用:主观交易、高不确定性、心理承受力低
  • 长期:复合增长率约为标准凯利的75%,但夏普比率更高
🧑‍🏫 实战中,多数专业交易员采用 半凯利或1/4凯利
📊 标准凯利 vs 半凯利 增长模拟 标准凯利 半凯利 账户增长 交易次数 →

✅ 3. 优缺点 & 实战应用

⭐ 优点

  • 最大化长期几何增长,避免破产风险(f* 永远不会超过1)
  • 数学最优:在独立重复博弈中,使资金增长最快
  • 风险控制:自动考虑损失比例,不会押注全部
  • 可扩展:适用于股票、期货、加密货币等头寸管理

⚠️ 缺点

  • 参数敏感:p 和 b 估计不准会导致严重偏差
  • 过度激进:标准凯利可能导致较大回撤(如80%)
  • 连续下注假设:实际市场存在相关性、滑点、手续费
  • 心理考验:大幅波动时难以坚持执行

🚀 实战应用框架

📉

头寸规模

根据信号期望计算 f*,再乘以账户权益

🔄

动态调整

每笔交易后重新评估 p 和 b,使用半凯利平滑

🧩

组合凯利

多资产风险平价,用凯利分配各品种权重

胜率 p 赔率 b 凯利 f* 半凯利 ×0.5 动态仓位

💻 4. Python 凯利计算器 实战代码

def kelly_criterion(p, b, half=False):
    """
    p : 胜率 (0~1)
    b : 净赔率 (例如 2 表示盈利为2倍本金)
    half : 是否使用半凯利
    返回最优下注比例 f*
    """
    if p <= 0 or b <= 0:
        return 0
    f_star = (p * (b + 1) - 1) / b
    if f_star < 0:
        f_star = 0.0
    if half:
        f_star *= 0.5
    return round(f_star, 4)

# 示例
print(kelly_criterion(0.6, 1))       # 0.2
print(kelly_criterion(0.55, 2, half=True))  # 0.1625
print(kelly_criterion(0.5, 0.8))     # 0.125

📌 输出:0.2, 0.1625, 0.125