Jaison's ink

Back

Bug Defender#

引言#

在量化交易中,如果只考虑一次交易,似乎我们应当最大化期望收益,比如选YES的期望收益是1200,选NO的期望收益是1100,就应当选YES(不考虑选YES中选对与选错的概率分布)。

但是如果考虑多次交易,单次亏损所带来的波动,会导致长期收益率大幅下滑。
如果你不信,可以看看下面的案例:

波动导致的复利损失案例#

假设你有本金 10001000 元,现在有两个抛硬币的投资组合供你选择(正面赢,反面输,概率各 50%):

  • 策略 A(高期望,高波动):赢了赚 80%,输了亏 60%。
  • 策略 B(低期望,低波动):赢了赚 20%,输了亏 10%。

场景一:如果只交易一次

  • 策略 A 的单次期望收益率:0.5×80%+0.5×(60%)=+10%0.5 \times 80\% + 0.5 \times (-60\%) = +10\%
  • 策略 B 的单次期望收益率:0.5×20%+0.5×(10%)=+5%0.5 \times 20\% + 0.5 \times (-10\%) = +5\%
  • 直觉结论:如果只玩一把,当然闭着眼睛选 A,它的数学期望是 B 的两倍。

场景二:如果你要做长期交易
在长期交易中,根据大数定律,输赢的次数会趋于均等。我们假设最标准的周期——经历一赢一输:

  • 执行两次策略 A 的本金:1000×(1+80%)×(160%)=1000×1.8×0.4=7201000 \times (1 + 80\%) \times (1 - 60\%) = 1000 \times 1.8 \times 0.4 = 720 元。(你亏了 28%)
  • 执行两次策略 B 后的本金:1000×(1+20%)×(110%)=1000×1.2×0.9=10801000 \times (1 + 20\%) \times (1 - 10\%) = 1000 \times 1.2 \times 0.9 = 1080 元。(你赚了 8%)

如果把时间拉长,策略A的本金会归0,策略B的本金有可能不断上升。

所以我们其实要同时控制波动和期望,才能最大化长期收益。

经典凯利公式#

如何根据波动和期望选择合适的仓位?

我们有凯利公式,其目的就是在控制破产风险的前提下,最大化资金的长期复合增长率。其提供那个数学最大值点,公式如下:

f=bpqbf^* = \frac{bp - q}{b}

  • ff^* = 应该投入总资金的比例
  • bb = 净赔率
  • pp = 你实际的获胜概率
  • qq = 你实际的失败概率

下面提供凯利公式的推导:(注意看中间使用了大数定律,这阐明了凯利公式的局限性)

经典凯利公式推导#

假设你现在的初始总资金是 W0W_0, 你面临一个投资机会,成功概率为 pp(该概率由数学建模得到),失败概率为 q=1pq = 1 - p,净赔率为 bb (即如果下注 1 元,赢了能拿回本金 1 元,外加 bb 元的净利润),下注仓位比例为 ff0f10 \le f \le 1)。

如果下注并了,资金会变成:
Wwin=W0+W0fb=W0(1+bf)W_{win} = W_0 + W_0 \cdot f \cdot b = W_0(1 + bf)

如果下注并了,资金会变成:
Wlose=W0W0f=W0(1f)W_{lose} = W_0 - W_0 \cdot f = W_0(1 - f)

考虑长期交易的复合增长,假设你进行了NN 次独立的交易。在这 NN 次交易中,赢的次数为 WW,输的次数为 LL,满足 W+L=NW + L = N

你的最终资金 WNW_N 会是:
WN=W0(1+bf)W(1f)LW_N = W_0 (1 + bf)^W (1 - f)^L

我们要最大化复合增长率,设复合增长率为 eGe^G
则有:
WN=W0eGNW_N = W_0 e^{GN}
代入eGN=(1+bf)W(1f)Le^{GN} = (1 + bf)^W (1 - f)^L,两边取 ln\ln 后化简得:
G=WNln(1+bf)+LNln(1f)G = \frac{W}{N} \ln(1 + bf) + \frac{L}{N} \ln(1 - f)
根据大数定律,当N足够大,WNp\frac{W}{N} \to pLNq\frac{L}{N} \to q

%%这里要注意,在“平均斯坦”中才有大数定律,所以一定要分清适用场景是平均斯坦还是极端斯坦%%

得到期望增长率函数:
G(f)=pln(1+bf)+qln(1f)G(f) = p \ln(1 + bf) + q \ln(1 - f)
求一阶导后令 G(f)=0G'(f) = 0,可求驻点:
G(f)=pb1+bf+q11f=0\Rightarrow G'(f) = p \cdot \frac{b}{1 + bf} + q \cdot \frac{-1}{1 - f} = 0
解得:
f=pbqb\Rightarrow f = \frac{pb - q}{b}
(可以再求二阶导证其是严格凹的,这个点是极大值点)

多结果凯利公式#

此外,如果一个投资标的有多个互斥区间,我们可以在各个区间分别投注来控制方差。(Dutching,分仓对冲)

这时传统的单次凯利公式不再适用,你需要使用
多结果凯利公式(Simultaneous Kelly Criterion for Mutually Exclusive Events):
fi=pixi(1kSpk1kSxk)f_i = p_i - x_i \left( \frac{1 - \sum_{k \in S} p_k}{1 - \sum_{k \in S} x_k} \right)

  • fif_i:分配给区间 ii 的最优资金比例。
  • pip_i:你的模型预测区间 ii 发生的真实概率。
  • xix_i:市场针对区间 ii 的定价(即隐含概率,也就是 Polymarket 上 “Yes” 的价格)。
  • SS:你决定要实际下注的区间集合(这个集合需要通过特定算法筛选,而不是把所有区间都扔进去)。
  • kSpk\sum_{k \in S} p_k:你要下注的所有区间的预测概率之和。
  • kSxk\sum_{k \in S} x_k:你要下注的所有区间的市场价格之和。

凯利公式修正#

但是这还没完,凯利公式假设你的 pp 是绝对准确的,而我们往往做不到完美预测,所以不能单纯用全凯利(Fully Kelly),而要用分数凯利(Fractional Kelly)、贝叶斯凯利(Bayesian Kelly)等方法对计算出的 ff 进行修正。

以半凯利为例,就是简单的把凯利公式算出来的仓位减半,以求更好地控制波动。

其余的修正较为复杂,此处挖个坑,下次有机会继续详解。

凯利公式详解:最大化复利
https://jaison.ink/blog/kelly-criterion-deep-dive/article
Author Jaison
Published at March 12, 2026
Loading comments…