Kelly 准则与仓位大小
连续时间下,Kelly 准则给出使几何增长率最大的杠杆:
为算术年化收益, 为方差。对应的最大增长率为 ——增长率只由夏普比率的平方决定,与收益绝对水平无关。这解释了为什么量化把 SR 而非收益奉为核心指标,见夏普比率。
离散版本(胜率 、赔率 ):。
完整 Kelly 的问题:回撤不可承受
Section titled “完整 Kelly 的问题:回撤不可承受”Kelly 最优在数学上完美,在心理上不可用:
- 完整 Kelly 的最大回撤分布意味着任意时点有约 1/3 的概率已从峰值回撤 50% 以上;
- 增长率对 是平坦的极大值: 只损失 25% 的增长率,但回撤减半——半 Kelly 是行业标准;
- 参数是估计出来的: 的估计误差远大于 (见均值与协方差的估计误差),而 对 线性敏感。用高估的 算出的 Kelly 是过度下注——增长率下降、回撤无限放大,比下注不足糟糕得多。
参数不确定时:比 Kelly 更小
Section titled “参数不确定时:比 Kelly 更小”结论链:完整 Kelly → 半 Kelly(回撤可承受)→ 估计误差下进一步打折。三重折扣的理由:
- 被高估的概率大于 50%(数据挖掘偏差使然,见多重检验与 Deflated Sharpe Ratio);
- 过度下注的不对称性:下注不足损失少量增长率,过度下注可能破产(几何增长率在 后为负);
- 实践中的多策略组合:每个策略按自己的 Kelly 下注,总杠杆仍有上限。
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 的正确位置
Section titled “Kelly 的正确位置”- 单策略仓位:Kelly 给出策略层面的下注比例上界;
- 跨策略分配:多策略时用组合层面的 Kelly(对组合的 ),而非各策略独立 Kelly 之和;
- 与波动率目标化的关系: 即 Kelly 的波动率表述,见波动率目标化——两者是同一件事的两种语言。
量化中的用法
Section titled “量化中的用法”- 半 Kelly + 均值折扣为默认;杠杆上限写死在配置里;
- 增长率目标用 换算,检验策略的 SR 是否撑得起期望;
- 跨策略分配用组合层 Kelly,不叠加各策略独立 Kelly。
- 半 Kelly 损失 25% 增长率,但回撤大幅减小
- 参数不确定时最优仓位比 Kelly 更小:过度下注的不对称惩罚
- Kelly 与夏普的关系: