“执行若干次某任务,某事件连续发生指定次数的概率”在交易中是一个非常重要的问题,数学上专业的名称叫做“游程检验”,长期来看,游程是市场中最主要的交易杀手之一。
比如现在已经找到了一个胜率60%的交易系统,按照这个系统执行100次交易,出现“连续失败10次”的概率有多大?假设每笔交易亏损5%,如果每次交易都是全仓出击,那么一旦碰到“连败10次”这样的事件,总资金将缩水至0.95^10,也就是只剩59.87%,即总资金将回撤近40%。(而这样的事件发生的概率大概为0.58%,详细数据见后文) 更何况大部分系统胜率难以超过50%,趋势跟踪系统胜率通常也就40%不到。
公式:
单独执行一次某任务X,事件A发生的概率为r,执行m次任务X,“事件A连续发生n次”(n<=m)出现的概率为:
Pm = Pm_1 + (1-Pm_n_1)*(1-r)*r^n
其中: P0~Pn_1的概率为0;Pn的概率为r^n
Python代码:
#coding:utf-8
#!/usr/bin/env python
import math
def calculate(r,m,n):
if (m <= (n-1)):
return 0
if m == n:
return math.pow(r, n)
Pm_1 = calculate(r,m-1,n)
Pm_n_1 = calculate(r,m-n-1,n)
Pm = Pm_1 + (1-Pm_n_1)*(1-r)*math.pow(r, n)
return Pm
if __name__ == '__main__':
r = 0.9
m = 100
n = 10
Pm = calculate(r,m,n)
print Pm
结论: 胜率60%的系统等于失败率为40%的系统,执行100次,连续失败10次的概率为0.5754%