索普量化第一章:凯利公式——概率优势与最优仓位数学
Read in English凯利公式的严格数学推导、几何复利最大化、分数凯利配置,以及为什么过度下注必然导致破产。
🔊 聆听文章 (Listen to Article)
索普量化第一章:凯利公式——概率优势与最优仓位数学
"如果你下注过多,即便每一把都有统计优势,几何复利的魔鬼也会最终将你清零。" —— 爱德华·索普
为什么量化革命始于索普
在华尔街还依赖内部消息、直觉和传统图表形态的 1960 年代,数学家爱德华·索普(Edward O. Thorp)用一台 IBM 704 计算机开创了现代量化交易的先河。索普的核心贡献不是预测未来,而是用纯粹的数学概率论与资金管理算法,在存在微弱正期望的市场中实现确定性的几何复利增长。
在本站已收录的 48 本经典著作中,我们讨论过巴菲特的价值护城河、塔勒布的黑天鹅防线以及内滕伯格的期权波动率,但从未从数学上推导过:面对一个已知的正期望交易机会,到底应该投入多少比例的资金?
下注太少,财富增长缓慢;下注过多,哪怕单次胜率高达 90%,在连续不利事件的冲击下也会发生不可逆的净值崩塌。凯利公式(The Kelly Criterion)正是解决这一两难问题的终极数学工具。
凯利公式的严格数学推导
假设一项投资的获胜概率为 $p$,失败概率为 $q = 1 - p$。获胜时的净赔率为 $b$(即投入 1 元,净赚 $b$ 元),失败时损失全部本金。
若初始资本为 $V_0$,每次投入固定资金比例 $f$,经过 $N$ 次独立重复交易(其中获胜 $W = Np$ 次,失败 $L = Nq$ 次),期末总资本 $V_N$ 为:
$$V_N = V_0 (1 + bf)^W (1 - f)^L$$
为了最大化长期资本增长率,我们对财富的几何增长率 $G(f)$ 求极值:
$$G(f) = \lim_{N o \infty} rac{1}{N} \ln\left(rac{V_N}{V_0} ight) = p \ln(1 + bf) + q \ln(1 - f)$$
对 $f$ 求一阶导数并令其等于零:
$$rac{dG}{df} = rac{pb}{1 + bf} - rac{q}{1 - f} = 0$$
解得最优下注比例 $f^*$ 为:
$$f^* = \frac{pb - q}{b} = \frac{p(b + 1) - 1}{b}$$
| 参数 | 含义 | 股票与期权交易对应 |
|---|---|---|
| $p$ | 交易胜率 | 策略经过严格样本外验证的胜率 |
| $q$ | 交易败率 | $1 - p$ |
| $b$ | 盈亏比(赔率) | 平均盈利金额除以平均亏损金额 |
| $f^*$ | 最优资金占比 | 该策略应分配的最大杠杆或资金比例 |
过度下注的致命陷阱:为什么满仓是死路一条
索普在《击败庄家》与《战胜市场》中反复强调:全凯利(Full Kelly)是资金增长的理论上限,绝非保守推荐。
几何增长率 G(f) 曲线示意:
^
G(f) | 最优峰值 f* (全凯利)
| / | / | / | / |----------/--------\-------------------> f (下注比例)
| / \ 破产悬崖 (2f* 处 G(f) = 0)
| / v
- 当 $f < f^*$ 时(欠注区): 资本增长率低于理论最优,但波动极小,破产概率严格为 0。
- 当 $f = f^*$ 时(全凯利): 几何增长率达到最高点,但波动率极大,历史回撤常达 50% 以上。
- 当 $f^ < f < 2f^$ 时(过注区): 承担了更高的波动,收益率却反而下降!
- 当 $f \ge 2f^*$ 时(毁灭区): 尽管单次期望为正,长期期望增长率变为负数,时间拉长后必然 100% 破产!
实战策略:分数凯利与多资产配置
在实际二级市场交易中,参数 $p$ 与 $b$ 不是抛硬币那样的物理常数,而是带有估计误差的随机变量。因此,专业量化对冲基金普遍采用分数凯利(Fractional Kelly):
- 半凯利(Half Kelly, $0.5 f^*$): 获得最优增长率的 75%,但将波动率降低 50%,最大回撤大幅压缩。
- 四分之一凯利(Quarter Kelly, $0.25 f^*$): 适用于存在参数不确定性及高波动品种(如 0DTE 期权、加密资产)。
def kelly_criterion(win_rate: float, win_loss_ratio: float, fraction: float = 0.5) -> float:
"""
计算分数凯利最优仓位比例
:param win_rate: 胜率 (0.0 到 1.0)
:param win_loss_ratio: 盈亏比 (平均盈利 / 平均亏损)
:param fraction: 凯利乘数 (默认 0.5 为半凯利)
:return: 建议单笔仓位资金百分比
"""
q = 1.0 - win_rate
f_star = (win_rate * win_loss_ratio - q) / win_loss_ratio
optimal_f = max(0.0, f_star) * fraction
return round(optimal_f * 100, 2)
# 示例:胜率 55%,盈亏比 1.5 的稳健趋势策略
print(f"全凯利仓位: {kelly_criterion(0.55, 1.5, 1.0)}%") # 输出 25.0%
print(f"半凯利仓位: {kelly_criterion(0.55, 1.5, 0.5)}%") # 输出 12.5%
可执行的操作规则
- 严禁在未统计胜率与盈亏比前开仓。 任何交易系统在没有至少 100 笔独立回测样本得出 $p$ 和 $b$ 之前,仓位不得超过总资本的 2%。
- 默认使用半凯利(Half Kelly)作为硬性风控上限。 将计算出的全凯利值直接乘以 0.5,以此对冲黑天鹅冲击与滑点摩擦。
- 多策略并行时的协方差约束。 当多个交易策略同时触发时,总凯利暴露比例不得超过 100%(无杠杆)或账户净资产的安全保证金倍数。