百度量化ama并没有找到太多的相关资料,通过翻查找到了,一个粗略讲述AMA的文章(http://www.360doc.com/content/17/0728/08/29081477_674700997.shtml)。
这个文章介绍的关于期货的量化,其中提到了ATR和AMA。ATR平均真实波幅,ATR测得的是价格波动,这是个对于研究市场很重要的参数,适不适合投资,风险多大,对于预判未来趋势有一定的帮助。ATR是真实波幅TR给定时间(默认为14天)的移动平均线。
TR的值为下面三个等式的最高值:
TR=H-L;
TR=H-CL
TR=CL-L
(H:今日最高值,L:今日最低值,CL:前一天收盘价)文档中说明正常天按第一个等式计算。
然后就是Kaufman的自适应移动平均线(AMA),短期均线贴近价格走势,灵敏度高,但会有很多噪声,产生虚假信号;长期均线在判断趋势上一般比较准确,但是长期均线有着严重滞后的问题。所以为了解决这个问题Kaufman创造了AMA,当市场快速沿着趋势方向移动时,AMA使用快速平均移动;当价格横盘拉锯时,AMA使用慢速平均移动。
算法大致为:
一、价格方向被表示为整个时间段中的净价格变化。比如,使用n天的间隔(或n小时):
direction = price – price[n];
其中,direction是当前价格差或方向数值,price是当前价格(当日收盘价或小时收盘价),price[n]是n日前的收盘价(或n个周期前)。
二、波动性,波动性是市场噪音的总数量,它可以用许多不同的方法定义,但是这个计算使用了所有“日到日”或“小时到小时”的价格变化的总和(每一个都作为一个正数),在同样的n个周期上。
如下表达:
volatility = @sum(@abs(price – price[1]), n);(volatility是指波动性数值,@abs是绝对值函数,@sum(value, n)是n个周期中的数值之和函数。)
三、效率系数(ER)以上两个成分被组合起来,以表达方向移动对噪音之比,称之为效率系数,ER:
Efficiency_Ratio = direction/volativity;
用“方向性”除以“噪音”,该系数的值就从0到1 变化。当市场在全部n日以同一方向移动时,则方向=波动性,效率系数=1。如果波动对于同样的价格移动是增加了,“波动性”就变得较大并且ER往小于1的方向移动。如果价格不变化,则方向=0,ER=0。
这个结果作为一个指数式平滑系数是方便的,它每天改变趋势线的一个百分比,ER=1就等效于100%,对应最快的移动平均线,它应当能有效工作,因为价格在一个方向上移动而没有回撤。当ER=0时,一个非常慢的移动平均值是最好的,可以在市场趋势不明时避免贸然止损离场。
四、变换上述系数为趋势速度(AMA中的关键在于系数C,通过C来防止误差和滞后性的影响当市场快速沿着趋势方向移动时,将C赋值为短周期的指数移动均线的系数。反之,将C赋值为长周期的指数移动均线的系数即可。)
为了应用于一个指数式移动平均值,比率将被变换为一个平滑系数c,依靠下面的公式,每天的均线速度可以简单地用改变平滑系数来改变,成为自适应性的。该公式如下:
EXPMA = EXPMA[1] + c*(price – EXPMA[1]);
测试表明,平方平滑系数的数值大大地改进了结果,这是依靠在一个横盘的市场中阻止了趋势线的移动。在横盘的市场中这个过程选择了非常慢的趋势,而在高度趋势化的周期中加速至非常快的趋势(但不是100%)。这个平滑系数是:
fastest = 2/(N+1) = 2/(2+1) = 0.6667;
slowest = 2/(N+1) = 2/(30+1) = 0.0645;
smooth = ER*(fastest - slowest) + slowest;
c = smoothsmooth;
平方平滑系数迫使c的数值趋向于零。这意味着较慢的移动平均线将比快速移动平均值用得更多。这和在出现不确定状况时你就更加保守是一样的道理。
AMA = AMA[1] + c(price – AMA[1]);
我感觉需要再找点AMA的文章看一下,感觉还是有点迷糊。