写在前面
一个朋友给我看他的记录:最近四十笔,赢了二十四笔,胜率六成;平均赚的是平均亏的一点五倍。他说他查了凯利公式,代进去算出来该押三成三。
他的算术没有错。我用同一个公式代了一遍,也是三成三。
有问题的不是那一步。有问题的是代进去的那两个数——"六成"和"一点五倍",都是从他那四十笔里数出来的。
而上一次讲幸存者偏差时,我用十万个不做任何判断的人跑过一遍:四十笔这个长度上,成绩没有分辨力。 一个纯靠运气的人和一个真有本事的人,在四十笔上分不开。
那么,一个建立在"胜率"和"盈亏比"上的公式,拿四十笔喂给它,会算出什么?
这是《米粒论道》的第五篇。前面四篇分别算了回本的距离、怎么停下来、一共该拿多少、一个成绩能说明什么。
讲仓位那一篇的第一节,我刻意留了一个坑没填:我只说"一定存在某个位置,越过它之后再加仓位,是同时降低期望收益和提高风险的",但没说它在哪儿,也没给公式。
这一篇就是来填那个坑的。填完你会发现,坑底下不是一个答案,是另一个问题。
一、它最大化的不是收益,是增长率
先说这个公式是从哪儿冒出来的。
1956 年,贝尔实验室一个研究信息传输的人写了一篇论文,讨论的其实是信道容量——一个带噪声的通道,每次传过去的信息里有多少是可信的。他顺手用赌局做了个类比:一个赌徒收到一些有噪声的内幕消息,他每次该押上身家的多大比例,才能让财富长期增长得最快。
这个人叫 John Kelly,这个比例后来就叫凯利公式。
⚠️ 请注意"长期增长得最快"这七个字,它是整个公式的地基。
为什么最大化收益是错的目标
假设有一个赌局:赢了翻倍,输了归零,你有六成把握赢。
要让"这一把的期望收益"最大,答案是全押。 期望值 0.6 × 2 = 1.2 倍本金,押得越多期望越高,没有别的答案。
但你不会只赌一把。 连着赌下去,只要输过一次,账户就是零,后面赢多少次都乘不回来。
这就是问题的形状:账户是连乘的,不是连加的。 回撤那一篇已经把这件事的后果算过一遍——亏损和回本用的不是同一个分母,一涨一跌等幅之后你不在原地。
一串连乘的东西,长期表现由每一步的对数之和决定,不由每一步的算术平均决定。凯利做的事就是:不去最大化"这一把能赚多少",而是最大化"每一把的对数收益的平均值"。这个量有个名字,叫几何增长率。
凯利回答的问题从来不是"怎么赚得最多",是"怎么让账户长期增长得最快"。这两个问题的答案,差得非常远。
公式本身
在"赢了赚 b 倍、输了亏掉押上去那一份"的赌局里,设赢的概率是 p、输的概率是 q(q = 1 − p),凯利给的答案只有一行:
f* = p − q / b
代几个数进去看看:
| 胜率 p | 赔率 b | f* | 一句话读法 |
|---|---|---|---|
| 60% | 1.0 | 20% | 六成把握、赢亏一样多 → 押两成 |
| 55% | 1.0 | 10% | 胜率掉五个点 → 押的减一半 |
| 50% | 1.5 | 16.7% | 胜率只有一半,但赢得多输得少 |
| 50% | 1.0 | 0 | 没有优势,一分钱都不该押 |
| 45% | 1.0 | −10% | 负优势 → 公式让你反着下 |
⛔ 最后两行是这个公式最容易被跳过、也最要命的一半。
凯利不创造优势,它只分配优势。 你没有正期望,它给出的答案是零或者负数。讲仓位那一篇的第七节里那句话在这儿同样成立:再好的仓位管理也买不来正期望。
二、f 不是仓位比例——这一步几乎所有人都算错
现在假设你已经有了一个 f,比如 20%。它到底是什么的 20%?
绝大多数人的默认答案是"仓位的 20%"或者"保证金占用 20%"。两个都不对。
回到公式的原始设定:"输了亏掉押上去那一份"。凯利的 f 是你押上去、输了会全没的那部分本金。
而期货的一笔交易,不会亏光。你有一个止损,价格走到那儿你就出来了。所以:
f 不是你的仓位有多大,f 是"这一笔如果亏,账户会少百分之几"。
这两句话之间隔着一次换算,而那个除数是你的单笔止损幅度:
名义敞口 = 账户权益 × f ÷ 单笔止损幅度
举个数:账户十万,f 算出来 20%,你的止损设在离入场 4% 的地方。
- 你允许这一笔亏掉的钱 = 10 万 × 20% = 2 万
- 亏 2 万需要多大的敞口?2 万 ÷ 4% = 50 万
- 也就是五倍于账户权益的名义敞口
| f 算出来 | 止损幅度 2% | 4% | 8% |
|---|---|---|---|
| 2% | 1.0 倍敞口 | 0.5 倍 | 0.25 倍 |
| 5% | 2.5 倍 | 1.25 倍 | 0.6 倍 |
| 10% | 5 倍 | 2.5 倍 | 1.25 倍 |
| 20% | 10 倍 | 5 倍 | 2.5 倍 |
(同一个 f,止损放宽一倍,手数就得砍一半——这正是止损那一篇第一节说的"结构远就降手数,不是放宽止损",两边说的是同一件事。名义敞口和账户权益的比值,就是保证金那一篇第四节的真实杠杆。)
换算完你会撞见一个熟人
把 f 读成"这一笔我允许亏掉账户的百分之几"之后,有件事会立刻跳出来:
这个坐标系里,早就已经有一个数了。
讲仓位那一篇引过的 Elder 那两条规则,第一条就是"任何一笔交易的风险不超过账户的 2%"。
那个 2%,和凯利的 f,是同一个坐标系里的两个数。 区别只在于一个是定死的,一个是算出来的。
于是问题变得非常具体:
一个是四十年前凭经验定死的 2%,一个是你今天用四十笔战绩算出来的 33%。差了十六倍。
该信哪一个?
这一篇剩下的部分,全部在回答这句话。
三、曲线两侧不对称,而你不知道自己站在哪一侧
先说这条曲线长什么样。
把"每一笔押 f"和"长期每笔的对数增长率 g"画在一起,它是一条倒扣的弧:从 0 出发往上爬,在 f* 那儿到顶,然后掉下来,掉到某个位置之后变成负的——再往右,你是在稳定地、可预期地把账户做小。
Ralph Vince 把顶点那个位置叫 optimal f,讲仓位那一篇的第四节已经引过他最要命的那句提醒(那个 f 是拿历史算出来的,未来那个不是这一个),这里不重复。
我想补的是两侧到底差多少,这一段是我自己算的:
① 押到一半,增长率只掉四分之一。
把 f 砍成 f*/2,增长率不是掉一半,是掉到原来的 75%。我在优势从极小到很大的一整片参数上算了一遍,这个比值稳定落在 0.747 到 0.774 之间;优势趋近于零时,它精确地趋向 3/4。
而下注规模只有一半,账户的波动也就只有一半。
半凯利:拿走四分之三的增长,只承担一半的颠簸。 这就是场内人人都说"凯利算出来的要打个折"的算术出处。
② "押到两倍凯利,增长率归零"——这句话我原本打算直接写进来,核完之后没敢。
这是一句流传很广的话,我落笔前按规矩回头验了一遍,结论是:它只在赔率接近 1:1 的时候近似成立,赔率一高就不成立了。
- 赔率 1:1、胜率 55%:g(2f*) = −0.000138,确实约等于零,略微为负
- 赔率 1.5:1 起,g(2f*) 是正的(比如胜率 46%、赔率 1.5,g(2f*) = +0.00019)
真正恒等于零的是连续近似式(把增长率写成 μf − σ²f²/2 那个抛物线)在 2f* 处的值。那是近似式的性质,不是凯利公式的性质。
⚠️ 我把这段留在正文里,是因为赔率 1:1 上下恰好是绝大多数人实际所在的区间,那句话在那儿够用;但它不是一条定律,别当定律用。
③ 真正该记住的是不对称的方向。
比最优值小一点,你少赚;大一点,你不是"多赚一点风险",是同时少赚且多险。左边的代价是线性的,右边的代价是复利的。
这正是讲仓位那一篇第一节那句"不知道它在哪儿的时候,往小的那一侧站"的算术出处。
④ 而误差本身,会被这个公式乘大。
这一条是本篇最硬的一块,而且它是纯代数,不需要任何数据:
f* = p − q/b 对 p 求导,等于 1 + 1/b。
翻译成人话:你的胜率估偏一个百分点,算出来的 f 就偏 1 + 1/b 个百分点。
| 赔率 b | 误差被乘几倍 | 胜率估偏 5 个点 → f 偏 |
|---|---|---|
| 0.5 | 3.00 | 15 个点 |
| 1.0 | 2.00 | 10 个点 |
| 1.5 | 1.67 | 8.3 个点 |
| 2.0 | 1.50 | 7.5 个点 |
| 3.0 | 1.33 | 6.7 个点 |
赔率越低,这个公式对胜率估计误差越敏感。
⚠️ 而这里有一个绕不开的算术:在期望值固定的前提下,胜率越高、赔率就必然越低。 也就是说,「胜率高、每次赚得不多」这种做法,天生就落在这个公式最敏感的那一档上。
看一张更具体的:真值是胜率 50%、赔率 1.5,正确答案 f* = 16.7%——
| 你以为的胜率 | 算出来的 f* | 是真值的 |
|---|---|---|
| 45% | 8.3% | 0.5 倍 |
| 48% | 13.3% | 0.8 倍 |
| 50% | 16.7% | 1.0 倍 |
| 52% | 20.0% | 1.2 倍 |
| 55% | 25.0% | 1.5 倍 |
| 60% | 33.3% | 2.0 倍 |
胜率的十个百分点,在输出端变成两倍。 而胜率十个百分点,在四十笔里就是四笔的差别。
四、模拟:让十万个人用自己四十笔的战绩,去估凯利要的那两个数
⚠️ 先说清楚这一节的性质:它是模拟,不是实测
这个号前面做过二十次实测,量的都是市场上真实发生过的事;另有一次是模拟,就是讲幸存者偏差那一篇。这一次和那一次一样,是模拟。
我手里没有任何真实交易者的账户数据,所以这一节没有回答"市场上的人是不是把仓位算大了",那个问题我答不了,也不该答。
这一节回答的是另一个问题:
把真实的价格摆在那儿,让一批人用自己那几十笔的战绩去估凯利要的两个输入,算出来的那个 f,离真正的最优值有多远。
它证明不了任何一个人的仓位是错的。 它能给出的是另一样东西:这个公式的输出,对输入的误差有多敏感。 而这一条与人无关,是估计量自身的性质。
怎么做的
数据整套复用讲仓位那一篇用过的那批:30 个品种、1102 份代表合约、51462 个品种日,2019 年 1 月到 2026 年 8 月。价格是真的,一天都没编。
在这上面造十万个人,每人随机挑品种、随机决定方向、随机持有 1 到 10 个交易日,每笔往返扣一笔小成本。然后:
- 前 40 笔只用来估参数:数出自己的胜率 p̂、平均盈利除以平均亏损得到 b̂,代进 f* = p̂ − q̂/b̂
- 后 60 笔只用来评效果:拿刚才那个 f̂ 真下注,看六十笔之后账户在哪儿
⛔ 两批交易互不重叠——同一批交易既估参数又评效果,那是前视偏差。
⚠️ 参数(杠杆上限、成本、笔数、出局线、真实优势有多大)全部是我设的,所以每一个都扫过一遍,下面只报换完参数还站得住的。
结果一:一个完全没有优势的人,会给自己算出多少
先让这批人没有任何优势——随机进、随机出。这种情况下正确答案很干脆:f* = 0,不该下注。
四十笔之后,他们自己算出来的 f̂:
| 分位 | P25 | P50 | P75 | P90 | P99 |
|---|---|---|---|---|---|
| 算出来的 f̂ | −18.5% | −1.3% | +13.4% | +25.0% | +42.4% |
⚠️ 这里我开跑前猜错了。 我猜中位数会明显为正、落在 10%–20%,结果是 −1.3%,而且只有 47.9% 的人算出正数。
真正的结论不是"大家会系统性地把仓位算大",是这个:
真值是零,而十个人里有三个算出该押一成以上,一个算出该押两成半以上。
同一个公式、同一批价格、同样是四十笔,给出的答案从 −80% 到 +42% 都有。
这个公式在这儿没有犯错。它只是老老实实地把一个噪声,翻译成了一个看起来很专业的百分数。
结果二:那给一批真有本事的人呢
现在换一组:给他们每笔加一个真实的优势(沿用上一篇的设定,每笔名义收益上加 30 个基点,往返成本才 6 个基点)。
这批交易的正确答案,我不用公式算,直接在他们的真实盈亏分布上数值求解:f* = 4.34%。
四十笔之后,他们自己算出来的:
| 数 | |
|---|---|
| f̂ 的中位数 | 10.23%(真值的 2.36 倍) |
| f̂ 的四分位区间 | [−5.7%, +23.9%] |
| 这个区间有多宽 | 是真值的 6.8 倍 |
⚠️ 按规矩,报"下重的人比下轻的多"之前,两端得一样远。所以两边都取"和真值差一倍":
- 下重了(超过两倍真值):52.7%
- 下轻了(不到一半真值):36.3%(其中三成三是算出负数、干脆不下)
一半以上的人,会给自己算出一个超过正确答案两倍的仓位。而这些人是真有本事的。
结果三:拿这个数真下注,会怎样
接下来的六十笔,五条路各走一遍。⚠️ 下面只看真的下了注的那 67.2% 人(算出负数的那批不下注,权益恒等于 1,混在一起会把中位数拉平):
| 下注方式 | 期末权益中位 | 回撤中位 | 每笔增长率 |
|---|---|---|---|
| 全凯利(照自己估的 f 下) | 0.19 | 87.4% | −953bp |
| 半凯利 | 0.86 | 69.4% | −450bp |
| 四分之一凯利 | 1.04 | 39.9% | −98bp |
| 上帝视角(用真值) | 1.15 | 35.5% | +21bp |
| 固定 1% 风险(不估任何东西) | 1.06 | 10.0% | +10bp |
三件事值得停一下:
① 要缩到四分之一凯利,中位数才第一次转正。 不是半凯利,是四分之一。
② 上帝视角那一行是干净的正数——公式没问题,问题从来在输入。
③ 最该看的是最后一行。 一个完全不需要估胜率、也不需要估赔率的固定 1% 风险,拿到了上帝视角大约一半的增长,只用了它不到三成的回撤,而且六十笔里一个人都没出局。
它不是"更好的凯利"。它是在你估不准的时候,那条不去估的路。
⚠️ 而它那个 1%,正是第二节里撞见的那个熟人:Elder 定死的 2%,和它是同一个坐标系里的数。这批模拟里,半凯利落在 1.0% 到 3.5% 之间(取决于假设的优势有多大),而四十年前凭经验定死的那个数是 2%。
⛔ 这不是"经典被验证了"。参数是我设的,换一组它就挪了。它只说明一件事:那个凭经验定下的量级,和算出来的量级,本来就在同一个数量级上——不同的是,一个不需要你先知道自己的胜率。
结果四:哪些数会动,哪些不会
⚠️ 这一节里最不稳的是出局率的绝对值——它强烈依赖我设的那个敞口上限(上限三倍时全凯利出局不到一成,上限十倍时过半)。所以正文一个出局率的绝对值都没写,只写排序:四档上限下,半凯利的出局率全部低于全凯利。
而下面这两条,怎么换都不动:
① 把估计用的交易从 20 笔加到 120 笔——
| 估计用了多少笔 | f̂ 的离散度(四分位宽 ÷ 真值) | 下重一倍以上的人 |
|---|---|---|
| 20 笔 | 10.9 倍 | 53.2% |
| 40 笔 | 7.4 倍 | 52.9% |
| 80 笔 | 5.5 倍 | 52.9% |
| 120 笔 | 4.4 倍 | 53.5% |
多做八十笔,你的估计确实稳了一半多。可"算出来的数比正确答案大一倍以上"的人,一个百分点都没少。
② 有没有真本事,几乎不改变照自己估的数下注会不会出局。 把每笔的真实优势从 0 一路加到 60 个基点,全凯利那一档的出局率从 55.7% 走到 55.0%——基本没动。变的是半凯利那一档:期末中位从 0.67 抬到 1.07。
真本事改变的是"打完折之后还剩不剩得下",不是"不打折会不会死"。
五、期货把这道题加难在哪
上面那些对任何一个连续下注的场合都成立。到了期货上,还要再加四条。
① 一笔交易的结果不是两种,是一片。
凯利的原始设定是"赢了赚 b、输了亏 1",两个结果。真实的一笔可能小赚、可能大赚、可能在止损前后滑出去一点、也可能开盘直接跳过你的止损价。
把一片分布压成"平均盈利 ÷ 平均亏损"这一个数,本身就丢掉了尾巴——而尾巴恰恰是决定你会不会出局的那部分。
② 破产线来得比公式假设的早得多。
凯利的数学里,你押 f 输了就是少 f,账户永远为正,永远还能下一注。期货不是:账户每天被结算一次,保证金不够会被追保,追不上会被强平。
公式假设你输到只剩一块钱也还在牌桌上。真实的规则是,你输到还剩三成的时候,别人就替你把牌收了。
回撤那一篇第三节说过同一件事的另一半:深回撤最先拿走的不是你的钱,是你继续持有的资格。
③ 凯利假设一次只有一注,你手上有好几笔。
同时开着的仓位,如果彼此相关,它们在风险上就是同一笔。讲仓位那一篇实测过:黑色系四份合约加起来只相当于 1.36 个独立赌注。
把单笔的 f 原样套到五个品种上,你实际押的远不止 5f。 多笔同时持仓下该怎么分配,是另一个题目,等讲风险平价那一篇再写。
④ 那两个输入还会随时间变。
胜率和盈亏比不是常数。品种的波动会变、你的方法会磨损、主力换月的接缝还会往你的历史记录里掺假动作。
你用过去四十笔估出来的那个数,描述的是过去四十笔。凯利要的是下一笔。
⚠️ 还有一条不算难度、但会改答案:成本。手续费和滑点直接从每笔的期望里扣,扣完之后 f* 会明显往下走;本篇模拟里成本只扣了一个很轻的量,所以报出来的"下重了的人"占比,是偏保守的。
六、凯利公式不回答什么
① 它不告诉你有没有优势。
这是最要紧的一条。公式接收 p 和 b,不审查它们。你给它一串纯运气的成绩,它会一本正经地算出一个百分数。
想知道自己那点成绩里有多少是运气,去看幸存者偏差那一篇——四十笔上分不开,这一篇只是把那句话的后果算了一遍。
② 它不告诉你多少笔才够。
上一篇说了四十笔不够、八十笔还是不够。这一篇能补的只有一条:在 20 到 120 笔这个区间里,加笔数改善的是离散度,不是可用性。 真正回答"多少够"要靠稳健性检验和蒙特卡洛,那是量化栏目的题目。
③ 它不管你同时开着几笔。
第五节③ 已经说了。要处理这件事,先看有效独立品种数,别拿单笔的 f 去乘品种数。
④ 它不保证你能按那个价格出来。
f 到手数的换算,除数是你的止损幅度。而止损那一篇第五节讲过:你的止损价是你算的,你的成交是别人给的。跳空一次,那个除数当场作废。
⑤ 它尤其不告诉你该做哪个品种、哪个方向。
这一篇从头到尾没有出现任何一个品种的方向、点位或建议,以后也不会有。
七、一张可以贴在显示器边上的表
| 你手上的东西 | 公式怎么处理它 | 你该怎么处理 |
|---|---|---|
| 四十笔算出来的胜率 | 当成真值代进去 | 当成一个范围,不是一个数 |
| 平均盈利 ÷ 平均亏损 | 当成赔率 b | 它越接近 1,公式对胜率误差越敏感 |
| 算出来的 f | 就是答案 | 是答案的上限,且这个上限本身估偏了 |
| f 这个数本身 | 押上去会全没的那份本金 | "这一笔亏,账户少百分之几",⛔ 不是仓位比例 |
| 从 f 到手数 | 公式不管 | ÷ 单笔止损幅度 = 名义敞口倍数 |
| 你不确定该信哪个数 | 公式没有这一栏 | 往小的那一侧站——两侧的代价不对称 |
三条能直接用的结论
① 先分清你缺的是哪一样。
凯利解的是"有了优势,该押多重"。如果你还不确定自己有没有优势,这个公式一分钱风险都挡不住——它不是用来找优势的,它是用来分配优势的。
② 把算出来的那个数,读成"这一笔我允许账户少多少",然后除以止损幅度。
这一步做完,多数人会发现自己算出来的数大得离谱。那不是你算错了,那是这个公式在正常工作。
③ 估不准的时候,用一个不需要估的数。
模拟里那条"固定 1% 风险"的路,拿到了上帝视角一半的增长、不到三成的回撤,而且不需要你先知道自己的胜率是多少。
半凯利不是保守版的凯利。它是把"我可能估错了"这件事也算进去之后的凯利。
而这句话还有一个更朴素的版本:如果你根本不知道自己的胜率,那么"该押多少"这个问题的正确答案,本来就不该由一个需要胜率才能算的公式来回答。
下一篇预告
下一篇写做市商——盘口里那个一直在挂双边价的人。上期所的做市商管理办法刚修订过,正好借这个由头,把讲套利者那一篇里"市场里的角色"这条线往下接一个。
⚠️ 风险提示 本文仅为期货知识分享与研究交流,不构成任何投资建议。文中第四节的数字全部来自在真实历史价格上做的随机模拟,⛔ 不是任何真实交易者的成绩,⛔ 也不构成对任何仓位比例的推荐;模拟结果不代表未来。期货交易具有高杠杆特性,可能导致本金全部损失甚至产生穿仓负债。文中涉及的规则、比例、时间等信息以各期货交易所官方最新公告为准。请通过正规期货公司开户,理性参与、独立决策、风险自担。


