简单移动平均算法的可预测性补偿

周泓1004014

简单移动平均算法的递推公式如下:

详见:《EMA与MA比较》

https://hzhou1986.spaces.live.com/blog/cns!4B31E7CB3751BB6F!620.entry

简单移动平均算法被广泛地运用在各种公式指标中(以价格作为输入就是均线,以价格的变形作为输入就是各种其他指标)。观察它的算法,可以发现一个问题。拿价格均线来说,就是下一日的均线增量只由下一日的价格和N天前的一个价格来决定。也就是说,增量在某种程度上是可以预测的(因为N天前的价格是已知的)。这个问题在《EMA与MA比较》做了详细分析,我认为是和趋势理念不符的。这篇文章主要是介绍几种可以消除这个“可预测性”的补偿算法。

1 用当日的价格代替未来若干日的价格,求均线的逐日递推

K+1日:ma(c,n)+(c-ref(c,-n))/n

K+2日:ma(c,n)+(c-ref(c,-n+1))/n

K+3日:…..

2 用当日的价格代替未来若干日的价格,用N天前价格的X日平均代替特定日期的价格

3 用当日的价格的Y日平均代替未来若干日的价格,用N天前价格的X日平均代替特定日期的价格。这是一个文华里可用的这种算法的20日均线的例子:

(MA(C,3)-REF(MA(C,5),(20-5+1)))/4+MA(C,20);

4 用当日的价格相对前一日的增量计算未来若干日的价格,用N天前价格的X日平均代替特定日期的价格

5 用当日的价格的Y日平均相对前一日的增量计算未来若干日的价格,用N天前价格的X日平均代替特定日期的价格

在显示上有两种方式,1是每天直接算出未来若干日的补偿后的均线值(整个序列),然后将其后置若干天,作为原有均线的直接代替。2是作出未来几天的均线值,补充在原有简单均线之后。(文华财经似乎不支持这么做,AB可以)。

按第三种补偿算法和第一种显示方法,简单做了一些单双均线系统的测试,发现效果比简单移动平均好上10%-20%。在短期均线上使用补偿算法的效果优于长期均线,因为短期均线敏感,长期均线不敏感,除了一个N之后变化增量很小(我自己现在做期货是单均线,相当于短期均线是1,不存在剔除的价格,所以增量也不具有可预测性)。在外汇高频数据上的优化效果好于期货,可能是外汇高频数据的随机性强,在期货上新的数据的有效信息量大,而外汇上新的数据的有效信息量小(原因或许是和旧的数据一样重要 ,或是众人思维更多按旧数据来)。

简单说,我认为用补偿后的20均线在期货上做20,60日交叉系统,效果会提高一两成。粗略的测试支持这一结论,有兴趣的可以进行详细测试。

 

Add:

更高级一些的,可以加入当前的波动性,波动方差之类的,计算未来价格波动范围,或者是某范围内的概率,然后再回头计算均线的增量,进行补偿,得出一个通道,或者是概率值。
第一次想到这些是去年用单均线刚开始做期货的时候,那时候发现20日均线的某些时候的运动是“注定”的,思考之后写了《EMA与MA比较》,后来换了策略,这个问题几乎也不存在了,就没继续想。
过年的时候看《麦克米伦谈期货》发现作者也有类似的思考,而且似乎编成了公式,可以以此获利。由于这不是书的重点,当时跳过去了,没仔细看。开学后书还掉了,现在也不想去借了。
再次想起这茬的原因是前一周在看外汇的时候,发现价格向后平移若干周期对于当前的价格具有有种可预测性,就想起了这个问题。编程了几种算法测试之后,发现果然能带来些许优势。这种优势不是绝对优势,而是相对于简单移动平均的相对优势,这种相对优势在不同品种不同周期上普遍存在。

说点什么