凯利公式深度解析:从理论推导到仓位模拟实战
速览: 凯利公式最大化长期复利增长率,但直接套用可能过于激进(如建议仓位32.5%)。半凯利可大幅降低回撤,仅牺牲约25%的增长,更适合实战仓位管理。
引言:为什么多数交易者用错了仓位管理
在加密货币市场里,大多数亏损不是因为方向判断失误,而是因为仓位管理失控。一个胜率 60% 的策略,可以因为单笔仓位过重而在一轮回撤中爆仓;而一个胜率只有 45% 的策略,通过精确的仓位控制,也可能长期稳定滚存。
1956 年,贝尔实验室的物理学家约翰·凯利(John L. Kelly Jr.)在研究信息论时,推导出一个描述最优下注比例的公式。这个公式后来被职业玩家、量化基金经理和对冲基金反复引用:在信息优势可量化的前提下,它能给出数学意义上的最大长期增长率,同时把破产风险约束在可控范围。
七十年过去,到 2026 年,加密市场早已从早期的单一现货博弈演化为永续合约、期权、结构化产品与自动化机器人并存的复杂生态。杠杆更易获得,波动也被进一步放大——这让仓位管理的重要性不降反升。而凯利公式在实战中依然充满“陷阱”:直接套用原始公式往往会给出大得离谱的仓位建议,导致净值曲线的波动剧烈到让人无法持仓。
理解凯利公式,不是记住一个数学式,而是理解它背后的期望对数增长逻辑,学会根据自己的策略参数进行模拟和调参。本文将从公式推导开始,覆盖全凯利、分数凯利的适用场景,结合蒙特卡洛路径模拟,给出一套适合加密货币交易者的实战仓位管理框架。
凯利公式的数学本质:不是最大化单次,而是最大化对数
从期望收益到对数增长
直觉上,最优策略应该是“最大化期望收益”。但这个逻辑在连续复利场景下是致命错误。
考虑一个简单的例子:你有 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(一个天文数字),但实际路径的中位数却趋近于 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%,多数交易者会在中途放弃。
- 半凯利:最大回撤通常收敛到更可承受的区间,同时保留大部分增长率。
- 四分之一凯利:适合高度不确定的策略与保守型交易者。
| 凯利分数 | 相对增长率(理论近似) | 典型最大回撤 | 适用场景 |
|---|---|---|---|
| 全凯利 (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/最大回撤分布]
只需几十行 Python(NumPy 向量化即可)就能跑完上万条路径。真正的价值不在代码,而在你会因此直观看到尾部风险,而不是被一个漂亮的中位数迷惑。
实战模拟案例:三种仓位策略对比
策略参数:胜率 55%,盈亏比 2:1,初始资金 10,000 USDT,模拟 200 笔交易,10,000 条路径。以下为一次典型模拟的量级示意(具体数值随随机种子波动,重点看相对关系):
| 指标 | 全凯利 (≈32.5%) | 半凯利 (≈16.25%) | 四分之一凯利 (≈8.1%) |
|---|---|---|---|
| 路径终值中位数 | 数十万级 | 十万级 | 数万级 |
| 路径终值 P10(最差 10%) | 可能跌破初始本金 | 高于初始本金 | 高于初始本金 |
| 路径终值 P90(最好 10%) | 千万级 | 数十万级 | 十万级以内 |
| 平均最大回撤 | 约 65%+ | 约 30% 上下 | 约 15% 上下 |
| 破产风险(净值 < 初始 50%) | 约三成路径 | 个位数百分比 | 极低 |
这组数据揭示一个关键洞察:全凯利虽然中位数最高,但相当比例的路径会让你的资产缩水超过一半。对于任何有风控意识的交易者,这个尾部风险是不可接受的。
半凯利是大多数量化策略的合理起点:长期增长率依然可观,同时把最大回撤压到心理可承受范围。结论不是记住某个具体终值,而是理解:仓位每减半,尾部风险的下降幅度远大于增长率的损失。
加密货币市场的特殊适配:胜率与盈亏比如何估算
回测数据的修正方法
加密市场有几个特性,使得原始回测数据通常过于乐观:
1. 幸存者偏差:你回测的是当前还活着的交易对,已经退市的垃圾币不在样本里,历史胜率被系统性高估。
2. 滑点和流动性损耗:BTC/USDT 等主流对的大单滑点相对可控,但流动性差的山寨币滑点可能高出一个数量级,直接侵蚀盈亏比。
3. 资金费率成本:永续合约在单边行情中,持仓方向若与市场多数一致,长期支付的资金费率可能显著吃掉小胜率策略的优势;这一项在高杠杆、长持仓时尤其致命。
4. 样本外表现衰减:策略在样本内测得的夏普比率,样本外通常明显衰减,30%-50% 的折损并不罕见。
修正建议(数值为经验性保守缓冲,非精确公式):
- 将回测胜率适度下调若干个百分点,为参数不确定性留出余地。
- 将回测盈亏比乘以一个小于 1 的折扣因子(如 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%
这个量级与不少专业量化团队的实际单策略仓位水平相当接近,并非巧合——保守的分数凯利本就是行业默认的“安全边际”。
多策略场景的凯利分配
当你同时运行多个不相关策略(如趋势跟随 + 均值回归),理论上可以使用多变量凯利公式。但在实践中,一个简单且有效的近似是:
各策略的凯利建议仓位加总,控制在总资金的一半以内。
这为意料之外的相关性(如黑天鹅事件导致所有策略同时亏损)留出缓冲。加密市场在极端行情下“所有资产一起下跌”的相关性会骤然升高,因此这条缓冲不是可选项,而是必需品。
凯利公式的动态执行:仓位如何随净值变化
固定比例 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
网格机器人与凯利的结合
如果你在使用网格交易策略(例如派网 Pionex 的网格机器人),凯利公式可以用来决定分配给整个网格的资金比例,而非单个网格的仓位。
具体做法:
1. 回测网格策略的整体胜率和期望盈亏比。
2. 用凯利公式计算最优资金分配比例。
3. 将该比例的资金注入网格机器人,其余资金保留为现金缓冲。
主流平台的网格机器人都支持设定投入资金量,天然适配这种按比例分配的操作方式:你只需决定“投入总资金的多少”,无需手动计算每格金额,策略逻辑与凯利仓位管理即可无缝配合。需要注意的是,网格策略的“胜率/盈亏比”并不稳定,行情单边突破时会失效,因此这里的凯利比例更应保守。
常见误区
误区一:胜率越高,凯利仓位越大,所以我要过度优化回测
过度优化回测(曲线拟合)让胜率虚高,直接导致凯利建议仓位虚高。一旦样本外胜率回归真实水平,你使用的仓位已经超过真实最优值,处于“过度下注区”,净值几何增长率转为负数。正确做法是使用 Walk-Forward(滚动前推)分析,确保样本外胜率在合理范围,再计算凯利仓位。
误区二:凯利公式能保证不爆仓
凯利公式在理论上假设可以无限细分仓位(连续资金),且每次亏损不会超过 f 的比例。但实盘中,跳空缺口(Gapping)、交易所故障、极端行情下的强制平仓,都可能导致实际亏损远超预设。凯利公式给的是仓位上限,不是护身符,必须同时设置止损和最大仓位硬性上限。
误区三:连续亏损后应该加大仓位“捞回来”
这是典型的赌徒谬误。凯利公式给出的是相反方向的指令:连续亏损后账户净值下降,下一笔的绝对仓位应该更小(虽然比例不变)。加大仓位“捞回来”是在偏离凯利最优路径,进入指数型毁灭区间。
误区四:用凯利公式做高杠杆
凯利公式算出的 f 是占总账户资金的比例。如果 f = 20%,意味着你应该用 20% 的资金开仓,而不是用 100% 资金去开一个“名义规模 20%”的高杠杆仓位。高杠杆放大了每笔交易“亏损 1R”的绝对幅度,使实际亏损远超计划,让凯利建议的比例彻底失效。
误区五:只要 E[收益] > 0 就可以任意下注
期望正收益只意味着在无数次博弈后趋向盈利,但路径风险(Path Risk)会在你抵达“长期”之前先把你淘汰出局。凯利公式正是为解决这个问题而存在:它限制单次下注上限,确保账户净值的随机游走不会轻易触及破产边界。
总结
凯利公式不是一个简单的数学公式,而是一套关于在不确定性下最大化长期财富增长的完整思维框架。站在 2026 年、杠杆与自动化工具愈发普及的加密市场来看,掌握它需要三个层次:
第一层是理解数学本质——最大化对数增长而非线性期望,这决定了为什么全仓梭哈即使胜率高也会导致长期破产。
第二层是学会参数修正——回测数据不能直接喂给凯利公式,必须考虑滑点、资金费率、参数估计误差与样本外衰减,并采用保守的分数凯利(通常 0.25f 到 0.5f)。
第三层是结合蒙特卡洛模拟——理解在最差路径下你的账户会经历什么,这比中位数更重要,因为你只活一次,不能体验期望值。
将这套框架与自动化执行工具(如网格机器人、量化脚本)结合,可以有效去除情绪干扰,严格按照数学最优解来管理每一笔仓位。真正的交易优势,一部分来自策略边际,另一部分来自仓位管理——而凯利公式,正是后者的基石。



