OptiNod 学院

凯利公式:为什么要区分下注风险与仓位比例

凯利比例要区分亏损时损失的账户比例与投入的金额。用胜率55%、盈亏比1.5的假设例子,比较全凯利25%、风险上限1%与仓位比例的差别。

凯利的“最优”指的是长期复利增长率最大的那一个点。要准确命中这个比例,就必须准确知道胜率和盈亏比,而在交易中,这两个数永远是估计值。


凯利公式是1956年贝尔实验室的约翰·凯利(John Kelly)在研究通信信道信息传输率时推导出的下注标准。本文讨论的是两种结果的模型:赢了,净赚下注金额的b倍;输了,输掉全部下注金额。设胜率为p,败率为q=1−p,最优比例为f* = p − q/b。在胜率55%、盈亏比1.5的假设条件下,f* = 0.55 − 0.45/1.5 = 0.25。这里的25%,是输一次时损失的账户资产比例。要与设有止损的仓位所投入的金额比例区分开来。


大众通常把这个公式当作“数学证明的最优下注规模”。看到25%这个数字,就以为按这个比例下注是最快的路。然而,凯利所最大化的对象是对数资产的期望值,也就是长期复利增长率。这一结论在所假设的概率和盈亏分布持续成立的模型内才成立。


全凯利(full-Kelly)使这个模型的增长率最大化,但并不保证回撤在可承受范围内。如果计算中代入的p和b大于实际值,得出的比例可能超过实际最优。可以参考用估计值求出的凯利比例,但账户亏损上限与仓位金额要另行计算。读完本文后,核对凯利数字时,你会先区分“这是输一次时损失金额的比例,还是投入金额的比例”。


假设的两种结果模型的凯利增长率
假设的两种结果模型的凯利增长率在胜率55%、盈利+1.5R、亏损−1R的条件下,全凯利25%的期望对数增长率约为0.04569,半凯利12.5%约为0.03443。增长率在约49.0%的比例处再次变为0。计算未计入成本和估计误差。

凯利最大化的对象是复利增长率


凯利公式解决的不是增大单次下注期望收益的问题。在两种结果的模型中,单次期望收益为正的条件是p × b > q。盈亏比为1时,条件是胜率超过50%;盈亏比为1.5时,条件是超过40%。如果把下注比例限制在0到100%,只最大化期望收益,那么在这个条件下答案是全额下注,但一次失败就会输光资产。凯利最大化的是另一个目标,即期望对数增长率。


这一区分之所以重要,是因为在复利中,一次大亏损会加重此后的回本负担。亏损50%要回本,需要盈利100%。在本文的假设模型中,每次下注的期望对数增长率用自然对数表示为g(f) = 0.55 × ln(1 + 1.5f) + 0.45 × ln(1 − f)。全凯利f=0.25时约为0.045693,两倍即f=0.50时约为−0.004128。在这个例子中,过度下注使长期对数增长率变为负值。“全凯利的两倍则增长率为0”这一关系,并不严格适用于所有胜率和盈亏比。g不是单次的简单收益率,也不是确定收益率。


价格暴跌的案例说明了亏损假设有多重要。以下价格以Binance BTCUSDT现货UTC日线原始数据为准。2021年5月19日开盘价约为42,850 USDT,盘中最低价为30,000 USDT,较开盘价下跌约30%。与4月14日的最高价64,854 USDT相比,跌幅更大。这一价格变化给账户带来的亏损,取决于仓位金额、杠杆和实际强平价格。请先检查,计算中代入的亏损幅度在这种情况下是否仍然成立。


全凯利不保证可承受的回撤


全凯利是期望对数增长率的最优点,不是给最大回撤(maximum drawdown)设上限的规则。在前面的假设模型中,每次按当前资产的25%下注,连续输三次,资产为0.75³ = 0.421875,剩下起初的约42.19%。在没有其他交易的这一区间,回撤约为57.81%。这是某一条特定连败路径的计算,并不代表所有全凯利策略的预期回撤。实际的回撤分布,需要同时看盈亏分布、交易之间的关系和观察期间。


回撤如此之深,是因为凯利公式不把交易者感受到的心理痛苦计入成本。公式里只有对数资产的期望值。如果一条经历60%回撤最终创出新高的路径,与一条以20%回撤平缓上行的路径到达同一终点,凯利公式不会区分这两条路径。但对交易者来说,这两条路径是完全不同的体验。在60%回撤区间里怀疑系统并止损离场,那一刻长期增长率的假设就崩塌了。


2022年11月FTX崩盘时,BTCUSDT从11月6日开盘价约21,300 USDT,跌到11月8日最低价约17,167 USDT,再到11月9日最低价15,588 USDT。从6日开盘价到9日盘中最低价,约下跌27%。要判断账户的回撤,必须把这一价格变化与当时的仓位金额以及止损、强平的成交记录一并代入。在应用凯利比例之前,请从仓位管理(position sizing)的角度检查暴跌和连败的情景。


胜率估计越高,算出的比例也越高
胜率估计越高,算出的比例也越高保持盈亏比1.5不变,胜率55%的f为25%,胜率50%的f约为16.67%。估计比例25%超过了实际胜率为50%的模型的最优值。

f*这一行只有在p和b准确时才是最优


这个简单公式出自这样的假设:p和b是已知的,且结果只有固定的盈利和亏损两种。赌场游戏可以按规则计算概率,但如果期望收益为负,就没有理由在这个方向上投入任何正数金额。交易的胜率和盈亏比是从过去数据估计出来的,无法保证未来仍然保持。盈亏随每笔交易而变化时,仅凭平均胜率和平均盈亏比这两个数字,不能代替整个收益率分布。


下面用数值看输入误差会使下注规模变化多少。盈亏比同为1.5时,胜率55%的凯利比例为25%,实际胜率若为50%则约为16.67%。估计偏乐观的比例,会超过实际模型的最优值。不过,略微超过最优点,增长率并不会立刻变为负值,影响取决于误差的大小。成本、成交差异和过度拟合,可能使胜率或盈亏比恶化。检查回测与实盘的差距(backtest vs live)时,请分别重新测量这两个值。


在2024年8月5日的暴跌中,BTCUSDT从UTC日线开盘价58,161 USDT,跌到最低价49,000 USDT,约下跌16%。在这种剧烈波动的情况下,止损滑点可能使一次亏损比计划的更大。在获胜时的盈利和胜率相同的条件下,亏损幅度变大,b就会减小,简单公式的凯利比例也随之降低。请以实盘成交价和成本为准,重新测量自己系统的期望值与盈亏比(risk-reward expectancy)。盈亏分布与两种结果模型有多大差别,也要一并确认。


半凯利的增长率与风险降低要在同一个模型中比较


半凯利是使用算出的全凯利比例的一半的方式。分数凯利是通过缩小下注规模来降低亏损暴露的方法,但“一半”这个倍数并不意味着适合所有策略,也不意味着安全。必须计算在同一盈亏模型中,增长率和风险各自改变多少。


在前面胜率55%、盈亏比1.5的模型中,半凯利是f=0.125。每次下注的期望对数增长率保持在全凯利的约75.35%。表中的波动率不是整条账户曲线的波动,而是一次下注产生的简单收益率的标准差。


类别亏损时账户风险比例f每次下注期望对数增长率g(f)每次下注简单收益率标准差
全凯利25%0.04569331.09%
半凯利12.5%0.03442915.55%

在这个两种结果模型中,简单收益率标准差为f × (1 + b) × √(p × q),所以把f减半,标准差正好减半。但最大回撤或多笔交易之后账户价值的波动,并不总是减半。半凯利可以为估计误差留出更多余地,但如果估计误差很大,缩小后的比例也可能超过实际最优。


凯利比例是在所假设的分布内使增长率最大的点。实际运用中,还必须同时设定估计误差、成本、可承受的回撤和同时持仓的上限。比较破产概率(risk of ruin)时,也要先确定破产的标准和期间。亏损以下注额为限、每次下注都不足资产100%的理想模型,在有限次数之内余额不会恰好变为0。实战检验中,需要分别考察达到导致停止运用的亏损水平的概率、被强平的可能性,以及超出计划的亏损。


全凯利与半凯利资金曲线的示意图
全凯利与半凯利资金曲线的示意图这是示意图,不是实际回测或同一交易序列的计算结果。请不要把图中的回撤数值解读为一般性的效果。

盈亏不同的交易不能直接套用两种结果的公式


f* = p − q/b是以固定的+bR和−1R为前提的简单公式。实际交易中,由于部分平仓、手续费和止损滑点,盈利和亏损会以多种大小出现。一般的凯利方法也能处理这样的收益率分布,但简单代入平均盈亏比得到的值,并不是同一个最优解。


在两种结果模型中,如果胜率p相同,b越大,f*也越大。但把止盈目标放远,实际胜率也可能改变,所以不能仅靠提高盈亏比来增加适当的风险。可以先把每笔交易的计划亏损定为账户的某个比例r,再用入场价到止损的距离d计算仓位金额。在线性品种上,不计成本,仓位金额 ÷ 账户资产 = r ÷ d。这一计算只是让计划亏损落在设定值上的步骤,并不证明凯利最优性。由于跳空和滑点,实际亏损也可能超过r。


例如,以BTCUSDT在2024年3月14日创下73,777 USDT最高价的区间为背景,设想一笔每笔计划风险为资产1%的假设交易。如果设在结构性低点之下的止损价距入场价3%,仓位金额约为资产的33.33%(1% ÷ 3%)。如果距入场价1.5%,则约为66.67%。同样是1%的计划风险,投入金额也会不同。这些数值是不含成本和止损超额亏损的示例,不是当天实际交易的业绩,也不是推荐比例。


把凯利用于盈亏比1.5、胜率55%的系统


用胜率55%、赢了+1.5R、输了−1R的假设系统,来确认计算顺序。下面的比例和检查标准仅用于概念说明,并不代表经过验证的策略,也不是适合所有人的运用规则。考虑应用时,要先用计入成本的成交记录和样本外结果核对这些假设。


  • 全凯利计算: f* = 0.55 − 0.45/1.5 = 0.25。在这个模型中,是亏损时损失账户25%的下注比例。它不代表安全的亏损上限,也不代表投入金额的比例。
  • 示例风险上限: 半凯利为12.5%。这里假设,与这个值分开,另把每笔交易的计划亏损上限定为资产的1%。1%是全凯利25%的1/25 = 4%,如果是四分之一凯利则为6.25%。
  • 仓位大小: 用计划风险1%除以入场价到止损的距离。止损距离为2.5%时,仓位金额为资产的40%(1% ÷ 2.5%),为1.5%时约为66.67%。成本和成交误差另行计入。
  • 止盈示例: 多单止损距离为2.5%、目标设为1.5R时,扣除成本前的目标价为入场价+3.75%(2.5% × 1.5)。实际成交盈亏比取决于成本和滑点。
  • 上调检验: 不会仅凭实盘50笔以及估计破产概率(risk of ruin)低于1%这一条件,就把风险从1%自动上调到1.5%。要同时确认样本的不确定性、样本外表现、成本和同时持仓的亏损上限。
  • 重新检查示例: 如果观察到胜率低于50%或盈亏比低于1.2,就重新审视新的入场,并重新测量输入值。把风险降到0.5%也是另外的运用决定,不会仅因越过这些标准就保证安全。

在这个设定中,25%是假设的两种结果模型的全凯利,1%是另外设定的计划亏损上限。用同一风险单位比较,1%是25%的1/25。再除以止损距离得到的40%或66.67%是仓位金额比例,所以不要直接与凯利风险比例比较。


同时亏损的仓位,风险会叠加
同时亏损的仓位,风险会叠加在三个仓位同时产生相同盈亏的假设下,风险会叠加成三倍。实际的BTC、ETH、山寨币的相关性与亏损幅度可能不同,所以要另行计算合并亏损情景。

同时持仓要一并看合并亏损和相关性


本文计算的重复下注示例,使用的是结果相互独立、分布恒定的假设。一般的凯利投资组合问题,可以连资产之间的关系也考虑进去。在市场中同时持有多个仓位时,在把各笔交易的单次下注计算直接相加之前,必须确认同时亏损的情形。


BTC多单和ETH多单,可能在同一次市场冲击中一起亏损。2021年11月10日BTCUSDT在69,000 USDT高点之后的下跌,或2022年FTX崩盘这样的暴跌区间,也需要检查其他持有资产的同步亏损。仅凭相关性高这一事实,并不能把三个仓位精确地算成一次下注的三倍。在产生相同盈亏的模型中这一关系成立,但实际的投资组合,必须一并计算各资产的波动和止损成交。


比如,如果把相关性高的一组仓位的计划亏损上限定为账户的1%,可以把各仓位的计划风险合计分配在该上限之内。这是用于说明的管理规则,不是凯利公式自动给出的上限。请分别计算全部触及止损的情景,以及越过止损价才成交的情景。入场前要确认的数字,不只是单个仓位的大小,还有一起亏损时账户里会消失的金额。


计算依据:凯利1956年的原文、Rotando与Thorp关于凯利与股票市场的论文、介绍分数凯利的Thorp合编著作简介。表中的数值,是对正文中明示的假设两种结果模型直接计算的结果。

计算盈亏比和期望值

根据入场价、止损价和目标价计算盈亏比,再按你假设的胜率和平均盈利计算单笔交易的期望值。无需登录即可使用。

打开盈亏比计算器