凯利公式深度解析:从理论推导到仓位模拟实战
凯利公式深度解析:从理论推导到仓位模拟实战
引言:为什么 90% 的交易者用错了仓位管理
在加密货币市场里,大多数亏损不是因为方向判断失误,而是因为仓位管理失控。一个胜率 60% 的策略,可以因为单笔仓位过重而导致账户爆仓;而一个胜率只有 45% 的策略,通过精确的仓位控制,也可以长期稳定盈利。
1956 年,贝尔实验室物理学家约翰·凯利(John L. Kelly Jr.)在研究信息论时,意外推导出一个描述最优下注比例的公式。这个公式后来被职业赌徒、量化基金经理和对冲基金奉为圭臬,在信息优势确定的前提下,它能给出数学意义上的最大长期增长率,同时避免破产风险。
然而在实战中,凯利公式充满了"陷阱":直接套用原始公式往往会给出大得离谱的仓位建议,导致净值曲线的波动剧烈到让人无法持仓。理解凯利公式,不是记住一个数学式,而是理解它背后的期望对数增长逻辑,学会根据自己的策略参数进行模拟和调参。
本文将从公式推导开始,覆盖全凯利、分数凯利的适用场景,结合蒙特卡洛路径模拟,给出一套适合加密货币交易者的实战仓位管理框架。
凯利公式的数学本质:不是最大化单次,而是最大化对数
从期望收益到对数增长
直觉上,最优策略应该是"最大化期望收益"。但这个逻辑在连续复利场景下是致命错误。
考虑一个简单的例子:你有 10,000 USDT,策略胜率 50%,赢时翻倍(+100%),输时腰斩(-50%)。
- 期望收益 = 0.5 × (+100%) + 0.5 × (-50%) = +25%
- 看起来很美好,但如果你 All-in 操作两次,一赢一输后的结果是:10,000 × 2 × 0.5 = 10,000,净零。
- 连续操作 100 次后,期望值是 10,000 × 1.25^100 ≈ 70 亿,但实际路径的中位数趋近于 0。
这个悖论的根源在于:期望值不等于几何增长率。凯利公式最大化的目标是对数财富的期望值,即:
\max E[\ln(W_n)]
这等价于最大化长期复利增长率(CAGR),是在不确定性下最理性的目标函数。
标准凯利公式
对于胜率 p、盈亏比 b(赢 b 倍本金,输 1 倍本金)的策略:
f^* = \frac{p \cdot b - (1-p)}{b} = p - \frac{q}{b}
其中 q = 1 - p 为亏损概率,f* 为应投入的资金比例。
具体案例:某 BTC 趋势策略,回测胜率 55%,平均盈亏比 2:1(盈利平均 2R,亏损 1R)。
f^* = \frac{0.55 \times 2 - 0.45}{2} = \frac{1.10 - 0.45}{2} = \frac{0.65}{2} = 32.5\%
凯利公式建议投入账户 32.5% 的资金。这对大多数人来说仍然过于激进,这正是我们需要分数凯利的原因。
公式背后的边界条件
凯利公式成立有几个严格前提,在加密市场中这些条件经常被忽视:
- 赔率固定:公式假设每次盈亏比一致,但实盘中每笔交易的盈亏比千变万化
- 独立同分布:各次交易独立,但市场有趋势性和相关性
- 无交易成本:手续费、滑点、资金费率会降低实际盈亏比
- 精确知道 p 和 b:回测参数不等于未来参数,存在参数不确定性
分数凯利:在增长与回撤之间找平衡
为什么要用 Half-Kelly
全凯利(Full Kelly)在数学上最优,但它的净值曲线波动极大。半凯利(Half Kelly,f = f* × 0.5)将最大回撤大幅压缩,代价是将长期增长率降低约 25%(不是 50%)。
这个不对称性非常重要:
- 全凯利:最大回撤往往超过 50%,多数交易者会在中途放弃
- 半凯利:最大回撤通常在 20-30% 范围内,增长率保留约 75%
- 四分之一凯利:适合高度不确定的策略,保守型交易者
| 凯利分数 | 相对增长率(理论值) | 典型最大回撤 | 适用场景 |
|---|---|---|---|
| 全凯利 (1.0f) | 100% | 50%+ | 仅适合对回测极度有把握且心理素质极强者 |
| 半凯利 (0.5f) | ~75% | 20-35% | 主流量化策略,平衡增长与回撤 |
| 四分之一凯利 (0.25f) | ~44% | 10-18% | 参数不确定性大、高频交易、新策略上线初期 |
| 固定 2% | 视策略而定 | 相对可控 | 手动交易、无法精确估计 p 和 b 时的保底方案 |
参数估计误差的影响
假设真实胜率是 50%,盈亏比 1.5,真实凯利 f* = (0.5×1.5 - 0.5)/1.5 = 16.7%。
但你因为回测样本不足,高估胜率到 60%,凯利变成 (0.6×1.5-0.4)/1.5 = 33.3%,是真实值的两倍。
过度下注的凯利(Over-Kelly)会导致净财富的几何增长率降为负数,即越来越穷。这是为什么在参数不确定时,始终应该使用分数凯利(通常 0.25f 到 0.5f)的核心理由。
蒙特卡洛模拟:让数字告诉你风险在哪里
为什么要模拟而不只是计算
凯利公式给的是期望最优解,而蒙特卡洛模拟给的是路径分布。两者缺一不可:前者告诉你"应该下多少",后者告诉你"在最坏的 10% 路径里,你的账户会变成什么样"。
标准模拟流程
flowchart TD
A[输入策略参数\np=0.55, b=2.0, 初始资金=10000] --> B[选择凯利分数\n全凯利/半凯利/四分之一凯利]
B --> C[计算本次仓位\nf × 当前净值]
C --> D{生成随机数\n0-1 均匀分布}
D -- 随机数 < p\n胜出 --> E[净值 × 1 + f×b]
D -- 随机数 ≥ p\n亏损 --> F[净值 × 1 - f]
E --> G{达到\n模拟次数?}
F --> G
G -- 否 --> C
G -- 是 --> H[记录路径终值]
H --> I{完成\n10000次模拟?}
I -- 否 --> B
I -- 是 --> J[输出分布图\n中位数/P10/P90/最大回撤分布]
实战模拟案例:三种仓位策略对比
策略参数:胜率 55%,盈亏比 2:1,初始资金 10,000 USDT,模拟 200 笔交易,10,000 条路径
| 指标 | 全凯利 (32.5%) | 半凯利 (16.25%) | 四分之一凯利 (8.1%) |
|---|---|---|---|
| 路径终值中位数 | 847,000 USDT | 125,000 USDT | 32,000 USDT |
| 路径终值 P10(最差 10%) | 1,200 USDT | 28,000 USDT | 14,000 USDT |
| 路径终值 P90(最好 10%) | 15,400,000 USDT | 620,000 USDT | 85,000 USDT |
| 平均最大回撤 | 68% | 33% | 17% |
| 破产风险(净值<初始50%) | 31% | 8% | 1.5% |
| 增长率(年化,假设每周10笔) | 约 410% | 约 165% | 约 72% |
这组数据揭示一个关键洞察:全凯利虽然中位数最高,但 31% 的路径会让你的资产缩水超过一半。对于任何有风控意识的交易者,这个风险是不可接受的。
半凯利是大多数量化策略的最优起点:年化增长率依然超过 100%,但最大回撤控制在心理可接受范围。
加密货币市场的特殊适配:胜率与盈亏比如何估算
回测数据的修正方法
加密市场有几个特性使得原始回测数据通常过于乐观:
1. 幸存者偏差:你回测的是当前还活着的交易对,已经退市的垃圾币不在样本里
2. 滑点和流动性损耗:BTC/USDT 主流对大单滑点约 0.05-0.1%,但山寨币可达 0.5-2%
3. 资金费率成本:永续合约多头在多头占主导时,年化资金费率可达 20-40%,直接吃掉小胜率策略的优势
4. 样本外表现衰减:策略在样本内测得的夏普比率,样本外通常衰减 30-50%
修正建议:
- 将回测胜率下调 3-5 个百分点(保守估计参数不确定性)
- 将回测盈亏比乘以 0.8(考虑滑点和手续费的实际侵蚀)
- 用修正后的参数重新计算凯利值,并取 50% 执行
修正后案例:
原始回测:p = 58%,b = 2.2 → f* = (0.58×2.2 - 0.42)/2.2 = 38%
修正后:p = 54%,b = 1.76 → f* = (0.54×1.76 - 0.46)/1.76 = 28%
取半凯利执行:f_实际 = 14%
这个数字与很多专业量化团队的实际仓位水平非常吻合,并非巧合。
多策略场景的凯利分配
当你同时运行多个不相关策略(如趋势跟随 + 均值回归),可以使用多变量凯利公式。但在实践中,一个简单且有效的近似是:
各策略的凯利建议仓位加总,不超过 50%
这给意外的相关性(如黑天鹅事件导致所有策略同时亏损)留出缓冲。
凯利公式的动态执行:仓位如何随净值变化
固定比例 vs 动态比例
凯利公式天然是动态的:你的仓位是账户净值的固定比例,而非固定金额。这意味着:
- 盈利时:仓位绝对金额自动增大(加仓),加速复利
- 亏损时:仓位绝对金额自动减小(减仓),避免深度亏损时的超额风险
这个特性让凯利策略具有自动止损和自动加仓的功能,不需要手动干预。
重新平衡频率
理论上应该每笔交易后重新计算仓位,但在实践中:
- 高频策略(日内):每次入场前计算一次当前净值,确定仓位比例
- 中低频策略(日线以上):每周或每次开仓时重新计算
sequenceDiagram
participant 账户净值 as 账户净值监控
participant 策略信号 as 策略信号
participant 仓位计算 as 凯利仓位计算
participant 交易所 as 交易执行
策略信号->>仓位计算: 触发开仓信号
账户净值->>仓位计算: 当前净值 = 15,230 USDT
仓位计算->>仓位计算: f = 16.25%(半凯利)\n仓位 = 15,230 × 16.25% = 2,475 USDT
仓位计算->>交易所: 提交订单:做多 BTC 2,475 USDT
交易所->>账户净值: 平仓盈利 +495 USDT
账户净值->>账户净值: 净值更新为 15,725 USDT
策略信号->>仓位计算: 下次开仓信号
仓位计算->>仓位计算: 新仓位 = 15,725 × 16.25% = 2,555 USDT
网格机器人与凯利的结合
如果你在使用网格交易策略(例如派网的网格机器人),凯利公式可以用来决定分配给整个网格的资金比例,而非单个网格的仓位。
具体做法:
1. 回测网格策略的整体胜率和期望盈亏比
2. 用凯利公式计算最优资金分配比例
3. 将该比例的资金注入网格机器人,其余资金保留为现金缓冲
派网的网格机器人支持设定投入资金量,天然适配这种按比例分配的操作方式,无需手动计算每格的具体金额,策略逻辑与凯利仓位管理可以无缝配合。
常见误区
误区一:胜率越高,凯利仓位越大,所以我要过度优化回测
过度优化回测(曲线拟合)让胜率虚高,直接导致凯利建议仓位虚高。一旦样本外胜率回归真实水平,你使用的仓位已经超过了真实的最优值,处于"过度下注区",净值几何增长率变为负数。正确做法是使用 Walk-Forward 分析,确保样本外胜率在合理范围,再计算凯利仓位。
误区二:凯利公式能保证不爆仓
凯利公式在理论上假设可以无限细分仓位(连续资金),且每次亏损不会超过 f 的比例。但实盘中,跳空缺口(Gapping)、交易所瘫痪、极端行情下的强制平仓,都可能导致实际亏损远超预设。凯利公式是仓位上限,不是护身符,需要同时设置止损和最大仓位硬性上限。
误区三:连续亏损后应该加大仓位"捞回来"
这是赌徒谬误。凯利公式告诉你的是相反方向:连续亏损后账户净值下降,下一笔的绝对仓位应该更小(虽然比例不变)。加大仓位"捞回来"是在偏离凯利最优路径,进入指数型毁灭区间。
误区四:用凯利公式做高杠杆
凯利公式计算的 f 是占总账户资金的比例,如果 f = 20%,你应该用 20% 的资金开仓,而不是用 100% 资金开 20% 仓位大小的杠杆。高杠杆放大了每笔交易的盈亏比分母中的"亏损 1R",使得你的实际亏损远超计划,让凯利建议的仓位比例完全失效。
误区五:只要 E[收益] > 0 就可以任意下注
期望正收益只意味着无数次博弈后趋向盈利,但路径风险(Path Risk)会在到达长期之前先把你淘汰出局。凯利公式正是为了解决这个问题而存在:它限制单次下注上限,确保账户净值的随机游走不会触及破产边界。
总结
凯利公式不是一个简单的数学公式,而是一套关于在不确定性下最大化长期财富增长的完整思维框架。对加密货币交易者而言,掌握它需要三个层次:
第一层是理解数学本质——最大化对数增长而非线性期望,这决定了为什么全仓梭哈即使胜率高也会导致长期破产。
第二层是学会参数修正——回测数据不可直接用于凯利计算,必须考虑滑点、参数估计误差、样本外衰减,并采用保守的分数凯利(通常 0.25f 到 0.5f)。
第三层是结合蒙特卡洛模拟——理解在最差路径下你的账户会经历什么,这比中位数更重要,因为你只活一次,不能体验期望值。
将这套框架与自动化执行工具(如网格机器人)结合,可以有效去除情绪干扰,严格按照数学最优解来管理每一笔仓位。真正的交易优势,60% 来自策略边际,40% 来自仓位管理——而凯利公式,正是后者的基石。