运气与凯利公式:运气不好时,仓位要打折
内容持续修订,过时部分会及时剔除
凯利公式只有一个目标:让长期平均增长最快。它不知道“回撤”是什么,也不知道你的账户只有一条路。同样的胜率,只是把亏损排在了前面,你就可能在看到“长期最优”之前先出局。
1. 凯利公式只最大化几何平均增长率,目标函数里没有“回撤”这一项。
2. 胜率、赔率全不变,只换结果的顺序,终点一样,中途最深回撤能从 10% 变成 52%——而账户是死在路径上的。
3. 所以仓位打折不是因为公式算错了,是给它补一条它不管的约束:回撤容错。
一、凯利公式只做一件事:把增长速率开到最大
二元赌局里,凯利公式是 f* = (b × p − q) ÷ b;赔率 1:1 时简化为 f* = 2p − 1。它最大化的不是“这一把赚多少”,而是每一局的期望对数增长,也就是几何平均增长率:
g(f) = p × ln(1 + f) + (1 − p) × ln(1 − f)
p = 胜率,f = 下注比例。g 为正,长期复利向上;g 为负,交易越多账户越接近零。
使 g(f) 最大的 f 就是满凯利 f*。
看这个式子,会发现三个特点:只有一个输出——一个速率;只对“无穷多次”有意义;不含任何跟先后顺序有关的项。
所以严格说,凯利公式回答的不是“我该怎么下注”,而是:在无限次重复、每次都能完整参与、中途不会被踢出局的前提下,哪个比例让平均增长最大。
符合这个前提,f* 就是精确答案。问题是,你的账户不符合这个前提。所以它不是错的,它只是答的不是你问的问题。
二、它不关心回撤:14 笔交易的两种排列
设真实胜率 55%、赔率 1:1,满凯利 f* = 10%。现在拿 14 笔交易,7 赢 7 亏,只改顺序:
| 排列方式 | 中途最深回撤 | 14 笔后的净值 |
|---|---|---|
| A:先连亏 7 笔,再连赢 7 笔 | −52.2%(0.97 ≈ 0.478) | 0.478 × 1.949 ≈ 0.932 |
| B:亏一赢一,交替 7 轮 | −10.0% | 0.997 ≈ 0.932 |
两种排列的终点一模一样——因为乘法可交换,0.97 × 1.17 跟排列顺序无关。但中途最深的地方差了五倍:一个是腰斩,一个只是擦破皮。
凯利公式对这个差别完全没有意见。它只算终点,而这两条路径的终点都是 0.932,所以它认为两个都是“最优执行”。你对回撤的容忍度,它一个字都不知道。
这就是“运气”在数学上的准确定义:运气不是胜率,是顺序。你无法选择顺序,只能选择仓位——而仓位决定了同一段坏运气会把你打成什么样。
如果账户有一条“回撤 40% 就停机”的规则,路径 A 在第 5 笔亏损之后就退出了,永远拿不到那个 0.932 的终点;路径 B 全程无事。
凯利公式算的是“活到最后的人能拿多少”,没算“有多少人活不到最后”。
三、满凯利的回撤到底有多大
换个问法:假设胜率 55% 是真的、赔率 1:1 是真的,没有参数误差,只跑 200 笔,不同仓位的回撤会是什么样?下面是 2 万次模拟的结果(最大回撤指任意时点相对前高的跌幅):
| 单笔风险 | 每笔几何增长 | 200 笔后净值(中位) | 最大回撤(中位) | 最大回撤(95 分位) |
|---|---|---|---|---|
| 1% | +0.10% | 1.21 倍 | 10% | 18% |
| 2% | +0.18% | 1.43 倍 | 19% | 33% |
| 2.5% | +0.22% | 1.55 倍 | 23% | 39% |
| 5% | +0.38% | 2.12 倍 | 42% | 66% |
| 10%(满凯利) | +0.50% | 2.72 倍 | 70% | 91% |
读法有三条:
- 满凯利确实是增长最快的。终值中位 2.72 倍,比四分之一凯利的 1.55 倍多约 75%。这一步公式没说错。
- 代价是中位最大回撤 70%,95% 的情形里要扛 91%。这不是黑天鹅,这是“胜率货真价实 55%”时的日常。
- 70% 的回撤需要 +233% 才回本。多数人不是败在期望值上,是败在这个位置改了规则、加了仓、或者离场。
把这件事说成一句话:凯利公式用“多赚 75%”换“中位回撤从 23% 涨到 70%”。在公式眼里这笔交换是免费的,因为回撤不在它的目标函数里;在你眼里它不是免费的,因为你是那个要一路扛过去的人。
四、为什么公式可以无视回撤,你不行
凯利公式有四个隐含假设,全都藏在“长期”两个字里:
- 能无限次下注。没有“无限”,那个平均增长率就只是一个渐近线。
- 没有吸收壁。亏损不会让你被迫退出,下一局你还坐在桌上。
- 中途不取钱。没有生活开支、没有赎回、没有考核周期。
- 心理成本为零。回撤到一半时,你还能一模一样地执行下一笔。
现实中这四条全破。最硬的一条是保证金:期货亏损到维持保证金以下会被强平,这是真正的吸收壁——一旦打到,后面的行情与你无关,即使它后来证明你是对的。
有吸收壁之后,“平均增长率最优”和“我能拿到这个平均”就是两件事。凯利公式给的是前者,你要的是后者。
这也是遍历性那篇的延续:集合平均不等于时间平均。这里再补一句更狠的——时间平均也不等于你的这条路径。你只有一条。
五、把“打折”写成一条约束
不加约束,公式没有任何理由往左走。所以做法不是“凭感觉打个折”,而是把它改成一道约束优化:
原问题:max g(f)
实战问题:max g(f),约束是 P(最大回撤 > 我的上限) ≤ 5%
加上这条约束,最优解必然落在满凯利左边——这才是“打折”的数学来源。
用同样的模拟反查,就能读出折扣(满凯利 f* = 10%,所以 1% 等于十分之一凯利):
| 你能接受的回撤上限 | 允许的仓位(95 分位不越界) | 相当于几分之几凯利 |
|---|---|---|
| 20% | 约 1% | 十分之一 |
| 30% | 约 1.75%–2% | 五分之一 |
| 40% | 约 2.5% | 四分之一 |
| 60% | 约 4.5% | 二分之一弱 |
这张表比任何口诀都实在:想把回撤压在 30% 以内,仓位只能是满凯利的五分之一。能接受腰斩级别回撤的人,才谈得上四分之一到二分之一凯利。
所以“分数凯利”不是一个凭感觉挑的系数,而是回撤约束的解。容错大,折扣就小;容错为零,就不该用凯利公式,而该用固定小风险。本站的取向是把回撤放在收益前面,所以常见的落点是十分之一到五分之一,而不是教科书里的“半凯利”。
落地三步:
- 先把上限写下来。比如“账户从高点回撤 20% 就必须停机复盘”。这是账户层面的硬约束,不是感觉。
- 反推 f。用回测或模拟找出“95 分位最大回撤 ≤ 上限”的最大仓位,而不是用满凯利乘以一个随手挑的系数。
- 再用两层上限压一次。单笔风险上限(如 1%)和组合 heat(所有持仓同时打到止损的总亏损,如 6%),取三者最小。
六、连亏的时候,折扣要更大
胜率 55% 并不代表连亏是意外。200 笔交易里:
至少一次 5 连亏:约 88%
至少一次 7 连亏:约 33%
至少一次 9 连亏:约 8%
在满凯利 10% 的仓位下,7 连亏是 −52%,9 连亏是 −61%。也就是说,“正常范围内的坏运气”就能把你送到停机线附近,不需要任何黑天鹅。
所以需要预设降仓规则,而不是等回撤发生了再决定:
- 回撤 10% → 单笔风险减半
- 回撤 20% → 只留观察仓,等新样本
- 任何情况下不加倍摊平——凯利公式假设每局独立,“加倍回本”是赌徒谬误,不在公式的保护范围内
降仓是个特殊动作:在你分不清“运气差”还是“策略失效”的时候,它是唯一能同时防住两种可能的做法。运气差,降仓让你少亏;策略失效,降仓让你亏得慢一点、有时间证伪。两种情况下它都对。
七、三个常见误用
- 把 f* 当下注指令。它只是“无约束”条件下的最优点。少了回撤约束,它必然偏大。
- 忽略相关性叠加。三个同向品种各按 1R 下注,同时止损就是 3R。组合层面的实际仓位,可能早就是单笔凯利的好几倍。
- 用估出来的胜率算出精确的仓位。参数误差会让 f* 系统性偏高(这一层在伯努利与凯利那篇讲过)。这是第二层原因;本文讲的第一层更根本——就算参数全对,公式也不管回撤。
八、一张自检清单
| 检查项 | 不合格 | 合格 |
|---|---|---|
| 止损/停机线写了吗? | 没有,凭感觉扛 | 有明确百分比,事前写好 |
| 仓位是反推出来的吗? | 拿 f* 乘个好看的系数 | 由“95 分位回撤 ≤ 上限”反推 |
| 算过最大回撤吗? | 只看了胜率和期望 | 有中位和极端两种情形 |
| 能扛住 9 连亏吗? | 没算过 | 算过,回撤仍在容错内 |
| 连亏之后怎么做? | 加倍回本 | 按预设规则降仓 |
| 会强行平仓吗? | 保证金占用到接近满额 | 留足缓冲,死不了 |
九、三个常见问题
半凯利就安全了吗?
不一定。半凯利大约把回撤砍一半,能不能扛住要看你的上限。55% 胜率下,半凯利的中位最大回撤还有 42%,95 分位 66%。如果你的上限是 25%,半凯利依然越界。判断标准不是你用了几分之几,而是它跑出来的回撤在不在你的容错内。
运气不好时,该停手吗?
先分清两件事:亏损是否还在规则内。如果止损都按计划执行、回撤还在预设曲线附近,那是运气的正常波动,按规则降仓即可,不必停手。如果连续出现“不该做的单”——追单、放宽止损、超仓——那是执行失效,必须停。判断标准写在事前,不要留到亏钱之后现编。
小账户该用几分之一凯利?
从五分之一甚至更低开始。小账户的优势是灵活,不是杠杆;它的回撤容错反而更小,因为一次深亏就再没有翻身余地。等跑过 50 笔以上、参数稳定,再按回撤上限往上调一档。往上调的时候要重算回撤,不要只看收益变漂亮了。
1. 先写回撤上限,再问仓位该多大。
2. f* 是上界,实际仓位由“95 分位回撤 ≤ 上限”反推。
3. 连亏按规则降仓,任何情况下不加倍。
索普在赌场和市场上的做法,据其相关论述意译,也是这个顺序:先确认优势真实存在,再用远低于理论上界的方式下注,确保自己能长期留在牌桌上。他关心的从来不是“这一把赚最多”,而是“不破产”——因为只有不破产,那个几何平均才有机会兑现。
“凯利公式算的是活到最后的人能拿多少,没算有多少人活不到最后。回撤不在它的目标函数里,所以你要自己把它加进去。”