🧠 量策派 自研的统计量化交易系统 · 每笔进出有数字理由 · OKX / Hyperliquid 查看 Quant Pro →
risk management

凯利公式深度解析:从理论推导到仓位模拟实战

量策派 编辑部 发布 2026-05-27 · 7 分钟阅读 · 3332 字
凯利公式深度解析:从理论推导到仓位模拟实战

凯利公式深度解析:从理论推导到仓位模拟实战

引言:为什么 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% 的资金。这对大多数人来说仍然过于激进,这正是我们需要分数凯利的原因。

公式背后的边界条件

凯利公式成立有几个严格前提,在加密市场中这些条件经常被忽视:

  1. 赔率固定:公式假设每次盈亏比一致,但实盘中每笔交易的盈亏比千变万化
  2. 独立同分布:各次交易独立,但市场有趋势性和相关性
  3. 无交易成本:手续费、滑点、资金费率会降低实际盈亏比
  4. 精确知道 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% 来自仓位管理——而凯利公式,正是后者的基石。

每周精选送到邮箱

周日一封邮件 · 本周深度文章 + 交易机会 + 策略更新