KAMA隶属于MA(Moving Average,移动平均)大类,使用CrossOver(上穿,下穿)或者平滑曲线的斜率来生成交易信号。KAMA“聪明”之处在于,能根据市场趋势变化速度自主调节,避免震荡行情中的虚假信号,同时消除长期趋势中的滞后。在牛市和熊市中自适应均线紧随指数向上或向下变化,而在市场处于横盘震荡时期,其变化明显减慢,从而减少因噪声产生的交易成本。
Perry Kaufman推荐的一组参数是KAMA(10,2,30),10是用于计算ER(Efficiency Ratio,效率系数)的周期天数;2和30分别是均线平滑采用的短周期和长周期天数。中间那个参数值越大,曲线越平滑,可以用在长期趋势的分析,比如KAMA(10,5,30)比KAMA(10,2,30)更平滑。
策略计算:
ER是净价格变动与总价格位移的比值,用来度量交易日价格的变化程度,计算很简单。ER的范围从0到1,ER的值越接近1说明市场趋势越快,ER的值越接近0,表明市场噪声越多。
ER = Change/Volatility
Change = ABS(Close - Close (10 periods ago))
Volatility = Sum10(ABS(Close - Prior Close))
根据ER以及两个指数平滑(exponential moving average)常数,可以推导出
SC(Smoothing Constant)= [ER x (fastest SC - slowest SC) + slowest]^2
其中,fatest SC=2/(2+1), slowest SC=2/(30+1)。SC表征趋势速度,ER变大的过程可以看成是趋势由慢转快的过程,SC与ER成正比例变化。值得指出的是,在此取平方是为了在市场横盘阶段更好地阻止趋势均线的移动。
这样,我们就可以得到:
Current KAMA = Prior KAMA + SC x (Price - Prior KAMA)
KAMA是自适应的,速度由平滑系数SC决定。
策略实证
在进行实证前,啰嗦几句。Stockchart网站上使用下面的方法来作为多空判据,我认为不妥,KAMA的本意是用来替代SMA以更好地拟合市场价格的走势,现在策略中又使用SMA和KAMA曲线来判断市场牛熊,在逻辑上说不通。而且,直接使用收盘价穿越KAMA来识别买点,也不是很有效,一般地,我们需要额外配置一个过滤器,这个过滤器基于市场价格的波动情况给出。
filter=alpha*STD20(KAMA)
其中,20日标准差= (1n−1sumti=t−n+1(dama−dama¯¯¯¯¯¯¯¯)2)1/2
下面是一个不好的策略的例子,不管是借鉴别人已有的策略,还是自己动手设计开发策略,都需要谨记好的策略背后是需要有合理的逻辑的,策略不是简单的指标的叠加与拼凑。
做多:
[KAMA(10,5,30) > Daily SMA(50,KAMA(10,5,30))]
AND [Daily Close crosses KAMA(10,2,30)]
做空:
[KAMA(10,5,30) < Daily SMA(50,KAMA(10,5,30))]
AND [KAMA(10,2,30) crosses Daily Close]
我们采用以下交易策略:
连续两个交易日的自使用均值变动>过滤器,即
做多:
kama_{t}-kama_{t-1} > filter
and kama_{t-1}-kama_{t-2} > filter
做空:
kama_{t}-kama_{t-1} < -filter
and kama_{t-1}-kama_{t-2} < -filter
多头获利了结:
kama_{t}-kama_{t-1} < -filter 确保做空前,多头仓位已经平仓
or kama_{t}-kama_{t-2} < -filter
or kama_{t}-kama_{t-3} < -filter
空头获利了结:
kama_{t}-kama_{t-1} > filter 确保做多前,空头仓位已经平仓
or kama_{t}-kama_{t-2} > filter
or kama_{t}-kama_{t-3} > filter
参考:
http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:kaufman_s_adaptive_moving_average