Bug Defender#
在量化交易中,如果只考虑一次交易,似乎我们应当最大化期望收益,比如选YES的期望收益是1200,选NO的期望收益是1100,就应当选YES(不考虑选YES中选对与选错的概率分布)。
但是如果考虑多次交易,单次亏损所带来的波动,会导致长期收益率大幅下滑。
如果你不信,可以看看下面的案例:
波动导致的复利损失案例#
假设你有本金 1000 元,现在有两个抛硬币的投资组合供你选择(正面赢,反面输,概率各 50%):
- 策略 A(高期望,高波动):赢了赚 80%,输了亏 60%。
- 策略 B(低期望,低波动):赢了赚 20%,输了亏 10%。
场景一:如果只交易一次
- 策略 A 的单次期望收益率:0.5×80%+0.5×(−60%)=+10%
- 策略 B 的单次期望收益率:0.5×20%+0.5×(−10%)=+5%
- 直觉结论:如果只玩一把,当然闭着眼睛选 A,它的数学期望是 B 的两倍。
场景二:如果你要做长期交易
在长期交易中,根据大数定律,输赢的次数会趋于均等。我们假设最标准的周期——经历一赢一输:
- 执行两次策略 A 的本金:1000×(1+80%)×(1−60%)=1000×1.8×0.4=720 元。(你亏了 28%)
- 执行两次策略 B 后的本金:1000×(1+20%)×(1−10%)=1000×1.2×0.9=1080 元。(你赚了 8%)
如果把时间拉长,策略A的本金会归0,策略B的本金有可能不断上升。
所以我们其实要同时控制波动和期望,才能最大化长期收益。
经典凯利公式#
如何根据波动和期望选择合适的仓位?
我们有凯利公式,其目的就是在控制破产风险的前提下,最大化资金的长期复合增长率。其提供那个数学最大值点,公式如下:
f∗=bbp−q
- f∗ = 应该投入总资金的比例
- b = 净赔率
- p = 你实际的获胜概率
- q = 你实际的失败概率
下面提供凯利公式的推导:(注意看中间使用了大数定律,这阐明了凯利公式的局限性)
经典凯利公式推导#
假设你现在的初始总资金是 W0, 你面临一个投资机会,成功概率为 p(该概率由数学建模得到),失败概率为 q=1−p,净赔率为 b (即如果下注 1 元,赢了能拿回本金 1 元,外加 b 元的净利润),下注仓位比例为 f(0≤f≤1)。
如果下注并赢了,资金会变成:
Wwin=W0+W0⋅f⋅b=W0(1+bf)
如果下注并输了,资金会变成:
Wlose=W0−W0⋅f=W0(1−f)
考虑长期交易的复合增长,假设你进行了N 次独立的交易。在这 N 次交易中,赢的次数为 W,输的次数为 L,满足 W+L=N。
你的最终资金 WN 会是:
WN=W0(1+bf)W(1−f)L
我们要最大化复合增长率,设复合增长率为 eG。
则有:
WN=W0eGN
代入eGN=(1+bf)W(1−f)L,两边取 ln 后化简得:
G=NWln(1+bf)+NLln(1−f)
根据大数定律,当N足够大,NW→p,NL→q。
%%这里要注意,在“平均斯坦” ↗中才有大数定律,所以一定要分清适用场景是平均斯坦还是极端斯坦%%
得到期望增长率函数:
G(f)=pln(1+bf)+qln(1−f)
求一阶导后令 G′(f)=0,可求驻点:
⇒G′(f)=p⋅1+bfb+q⋅1−f−1=0
解得:
⇒f=bpb−q
(可以再求二阶导证其是严格凹的,这个点是极大值点)
多结果凯利公式#
此外,如果一个投资标的有多个互斥区间,我们可以在各个区间分别投注来控制方差。(Dutching,分仓对冲)
这时传统的单次凯利公式不再适用,你需要使用
多结果凯利公式(Simultaneous Kelly Criterion for Mutually Exclusive Events):
fi=pi−xi(1−∑k∈Sxk1−∑k∈Spk)
- fi:分配给区间 i 的最优资金比例。
- pi:你的模型预测区间 i 发生的真实概率。
- xi:市场针对区间 i 的定价(即隐含概率,也就是 Polymarket 上 “Yes” 的价格)。
- S:你决定要实际下注的区间集合(这个集合需要通过特定算法筛选,而不是把所有区间都扔进去)。
- ∑k∈Spk:你要下注的所有区间的预测概率之和。
- ∑k∈Sxk:你要下注的所有区间的市场价格之和。
凯利公式修正#
但是这还没完,凯利公式假设你的 p 是绝对准确的,而我们往往做不到完美预测,所以不能单纯用全凯利(Fully Kelly),而要用分数凯利(Fractional Kelly)、贝叶斯凯利(Bayesian Kelly)等方法对计算出的 f 进行修正。
以半凯利为例,就是简单的把凯利公式算出来的仓位减半,以求更好地控制波动。
其余的修正较为复杂,此处挖个坑,下次有机会继续详解。