跳转到内容

Kelly 准则与仓位大小

连续时间下,Kelly 准则给出使几何增长率最大的杠杆:

f∗=μ−rfσ2,f^* = \frac{\mu - r_f}{\sigma^2},

μ\mu 为算术年化收益,σ2\sigma^2 为方差。对应的最大增长率为 g∗=rf+(μ−rf)22σ2=rf+SR22g^* = r_f + \dfrac{(\mu - r_f)^2}{2\sigma^2} = r_f + \dfrac{\mathrm{SR}^2}{2}——增长率只由夏普比率的平方决定,与收益绝对水平无关。这解释了为什么量化把 SR 而非收益奉为核心指标,见夏普比率。

离散版本(胜率 pp、赔率 bb):f∗=p(b+1)−1bf^* = \dfrac{p(b+1) - 1}{b}。

完整 Kelly 的问题:回撤不可承受

Section titled “完整 Kelly 的问题:回撤不可承受”

Kelly 最优在数学上完美,在心理上不可用:

  • 完整 Kelly 的最大回撤分布意味着任意时点有约 1/3 的概率已从峰值回撤 50% 以上;
  • 增长率对 ff 是平坦的极大值:f∗/2f^* / 2 只损失 25% 的增长率,但回撤减半——半 Kelly 是行业标准;
  • 参数是估计出来的:μ\mu 的估计误差远大于 σ\sigma(见均值与协方差的估计误差),而 f∗f^* 对 μ\mu 线性敏感。用高估的 μ\mu 算出的 Kelly 是过度下注——增长率下降、回撤无限放大,比下注不足糟糕得多。

结论链:完整 Kelly → 半 Kelly(回撤可承受)→ 估计误差下进一步打折。三重折扣的理由:

  1. μ\mu 被高估的概率大于 50%(数据挖掘偏差使然,见多重检验与 Deflated Sharpe Ratio);
  2. 过度下注的不对称性:下注不足损失少量增长率,过度下注可能破产(几何增长率在 f>2f∗f > 2f^* 后为负);
  3. 实践中的多策略组合:每个策略按自己的 Kelly 下注,总杠杆仍有上限。
kelly.py
import numpy as np
def kelly_fraction(returns: np.ndarray, kelly_fraction: float = 0.5,
mu_discount: float = 0.5) -> float:
"""returns: 日收益。默认半 Kelly + 均值打五折(估计误差折扣)"""
mu = returns.mean() * 252 * mu_discount # 年化,均值打折
var = returns.var() * 252
f_star = mu / var
return float(np.clip(kelly_fraction * f_star, 0, 5.0)) # 杠杆上限
  • 单策略仓位:Kelly 给出策略层面的下注比例上界;
  • 跨策略分配:多策略时用组合层面的 Kelly(对组合的 μ,σ\mu, \sigma),而非各策略独立 Kelly 之和;
  • 与波动率目标化的关系:σtarget=∣f∗∣ σ\sigma_{\text{target}} = |f^*|\,\sigma 即 Kelly 的波动率表述,见波动率目标化——两者是同一件事的两种语言。
  • 半 Kelly + 均值折扣为默认;杠杆上限写死在配置里;
  • 增长率目标用 g=rf+SR2/2g = r_f + \mathrm{SR}^2/2 换算,检验策略的 SR 是否撑得起期望;
  • 跨策略分配用组合层 Kelly,不叠加各策略独立 Kelly。
  • 半 Kelly 损失 25% 增长率,但回撤大幅减小
  • 参数不确定时最优仓位比 Kelly 更小:过度下注的不对称惩罚
  • Kelly 与夏普的关系:g=rf+SR2/2g = r_f + \mathrm{SR}^2/2