精选技术指标系列(4):KAMA
发布时间:2017-07-11 | 来源: 川总写量化
作者:石川
摘要:考夫曼自适应均线是一个优秀的移动平均算法,它根据价格噪声大小动态决定均线的衰减系数,在快、慢均线之间切换。
1 引言
本期精选技术指标聊一聊考夫曼自适应移动平均(Kaufman Adaptive Moving Average,简称 KAMA)。它由系统分析大师佩里 • 考夫曼(Perry Kaufman)发明,是一种高级均线算法,能根据价格曲线噪声的大小自动确定计算价格均线时的衰减系数。我们重点讲一讲 KAMA 作为移动平均线的特点和优势,并将它利用到不同投资品的价格上,说明它作为一个系统交易工具的作用。
2 从价格噪声说起 —— 效率比
移动平均的目的是捕捉价格曲线的低频趋势,而趋势很容易被掩盖在噪声之中,因此价格噪声无疑是移动平均的敌人。如果价格的噪声很小,我们则可以利用块均线捕捉趋势(比如 10 日或者 20 日均线);而如果价格的噪声太大,就要使用更慢的均线(比如 50 日或者 100 日均线)。
可见,价格均线如果想要有“自适应性”,就必须考虑价格曲线的噪声。这就是考夫曼移动平均的出发点。在 KAMA 中,如何衡量噪声的大小呢?来看下面这个例子。下图为三条假想的价格曲线:它们在初期和末期的价格都相同——即在这段时间中,价格的净变化(net move)都是一样的——但是这三条曲线实现这个净变化的轨迹却大相径庭。这三条价格曲线中:
有一条完全没有波动,它表明价格轨迹上完全没有噪声;
颜色最深的那条价格轨迹显示了轻微的波动,代表噪声较低;
颜色最浅的那条价格轨迹显示了价格往复震荡的剧烈波动,代表噪声很高。
这个例子给我们一个启发:对于给定的计算窗口,在同样的净变化下(即价格的位移),价格曲线轨迹的路程越大则价格的噪声越高。将上面这句话翻译成数学,就得到了一个定量衡量价格噪声的指标 —— 效率比(efficiency ratio)。它的定义如下:
其中,P_t 是时刻 t 的价格,n 为时间窗口,ER_t 则为 t 时刻的效率比。效率比的取值在 0 和 1 之间,它越大说明噪声越低。上面这三条假想的价格曲线的效率比分别为 1.0(无噪声)、0.56(低噪声)、和 0.06(高噪声)。
有了计算噪声的方法后,考夫曼所做的就是用它来计算指数平滑中的衰减系数 α,从而实现“在噪声高时,使用慢均线,即更低的 α;在噪声低时,使用快均线,即更高的 α”。这就是考夫曼均线的核心 —— 使用指数平滑计算移动均线,计算时根据价格的效率比动态的调整指数平滑的参数 α,α 与效率比正相关。下面就来看看考夫曼均线的具体计算公式。
3 考夫曼自适应移动平均
在考夫曼均线 KAMA 的计算中,用到了快、慢两个时间窗口,它们作为输入的常数,用于产生快、慢两个默认的衰减系数。令 f(fastest)和 s(slowest)分别代表快、慢两个时间窗口的长度,则这两个默认的衰减系数为:
这两个默认的衰减系数相当于 KAMA 所采用的衰减系数两个极限情况(一旦 f 和 s 的数值给定,这两个默认衰减系数也不再变化;对于 KAMA 来说它们是常数)。前面说过,KAMA 的本质是动态计算衰减系数的指数平均。它的衰减系数是上述这两个默认值 α_f 和 α_s,以及效率比的函数。在 t 时刻,KAMA 的衰减系数为:
由上一节的介绍可知,ER_t 是时间窗口 n 内的效率比(因此,计算 ER 的时间窗口 n 便是计算 KAMA 的第三个,也是最后一个参数)。如果在这段时间内价格单方向运动(即连涨或者连跌),那么 ER_t 的取值为 1;如果在这段时间内价格反复波动而位移却为 0,则 ER_t 的取值为 0。当这两种极端情况出现时:
ER_t 等于 1 说明这段时间的趋势非常明显,带入上式可知 KAMA 的衰减系数由默认的快衰减系数决定,这意味着 KAMA 对应的是时间窗口长度为 f 平方的快均线;
ER_t 等于 0 说明这段时间没有趋势,带入上式可知 KAMA 的衰减系数由默认的慢衰减系数决定,这意味着 KAMA 对应的是时间窗口为 s 平方的慢均线。
在 KAMA 的计算公式中,f 和 s 的默认取值为 2 和 30。由于上述计算 α_t 的公式中有一个二次方,因此实际上在上述两种极端情况下,α_t 对应的是时间窗口长度为 4 和 900 的快、慢均线,因此 KAMA 有时可以很快、有时又会很慢,这完全取决于噪声的大小。在实际使用时,使用者应根据投资品价格的实际特征确定 f 和 s 的最佳取值。当然,上述极端情况很不容易出现。在一般情况下,ER_t 是一个 0 到 1 之间的数,因此效率比又被称为分形效率(fractal efficiency)。从公式中容易看出,
ER_t 越大(效率比越高、噪声越低)则 α_t 越大(越倾向使用快均线);
ER_t 越小(效率比越低、噪声越高)则 α_t 越小(越倾向使用慢均线)。
得到当期的衰减系数 α_t 之后,就可以将指数平均算法作用于价格序列 P_t 之上,求出价格序列的考夫曼均线 KAMA:
由上面的介绍可知,计算 KAMA 需要三个参数,它们是计算效率比的窗口 n、以及计算快、慢两个默认衰减系数的窗口 f 和 s。以上证指数的日收盘价为例为例,下图为 n = 8,f = 5,s = 30 时的考夫曼自适应均线(绿色)和上证指数收盘价的比较。
无论是在趋势明显的牛熊市还是在纠结的震荡市中,KAMA 都比较平滑,并没有出现在震荡市中反复变化均线方向的情况。这得益于它在震荡市中可以自适应的根据市场的噪声决定采用更长周期的均线来过滤掉过高的噪声。而在牛熊市交替的时候,KAMA 的反应速度也比较令人满意,它十分果断的改变方向。这相对于长周期的简单移动平均来说无疑大大降低了滞后性。下面就来看看使用 KAMA 择时的效果。
4 基于 KAMA 的简单择时
由于 KAMA 捕捉低频趋势,因此我们可以基于此构建一个简单的纯多头股票择时策略:
如果当期的 KAMA 较上一期的 KAMA 的变化大于给定的正阈值,则满仓;
如果当期的 KAMA 较上一期的 KAMA 的变化小于给定的负阈值,则空仓。
这里正、负阈值分别为:
其中 ΔKAMA 为 KAMA 的变化量,std 为求它的标准差。假设每次的交易成本为万分之五。在计算 KAMA 时,参数为 n = 8,f = 5,s = 30;并且采用滚动窗口为 50 计算上述正、负阈值。该策略在上证指数上的择时效果如下图所示。
图中,绿色 KAMA 择时净值,而蓝色为基准指数本身的净值。在过去 15 年里,KAMA 简单择时策略可以取得 15.5% 的连续复利年化收益,夏普率 0.853,最大回撤为 -29.3%。这些指标远超基准指数本身。
最后再来看看 KAMA 在商品期货上面的效果。交易品种为如下商品期货的合成指数:郑商所的棉花、大商所的豆粕以及上期所的螺纹钢、橡胶和沪锌。每笔最大亏损定为资金量的 2%,并采用跟踪止损。假设在每日收盘后利用最新价格数据计算 KAMA,并通过判断它的变化是否超过正、负阈值决定是否产生交易信号(由于商品期货可以做空,因此当 KAMA 均线向下且超过负阈值时,我们用做空取代股票策略中的空仓)。如果产生了交易信号,则按下一个交易日的开盘价执行。每笔交易的手续费和滑点之和为千分之一。
在从 2011 年开始的回测期内,KAMA 简单择时策略可以获得 14.4% 的连续复利年化收益,最大回撤 -21.13%,夏普率 0.871。本文的目的是为了说明 KAMA 的原理和特点,因此我们对 KAMA 的择时策略的讨论到此为止。
5 结语
移动平均线是技术分析中一种分析投资品价格时间序列的常用工具。移动平均可过滤掉价格的高频噪声,反映其中长期趋势,辅助投资者做出投资判断。KAMA 是一个优秀的移动平均算法,它根据价格曲线自身的噪声大小动态的决定计算均线的衰减系数,从而自动地在快、慢均线之间切换。
无论是什么技术指标,若想通过它持续地赚到钱,必须充分理解该指标的原理和它反映的本质、并坚持使用它。对于任何指标,必须判断它是否适合我们面对的市场。通过严格的历史回测和分析,可以计算出技术指标的有效性。此外,随着市场自身内在的变化,回测中有效的技术指标也许会在将来的某一天失效。因此我们应用动态和发展的眼光看问题,以检验指标是否持续有效。
免责声明:入市有风险,投资需谨慎。在任何情况下,本文的内容、信息及数据或所表述的意见并不构成对任何人的投资建议。在任何情况下,本文作者及所属机构不对任何人因使用本文的任何内容所引致的任何损失负任何责任。除特别说明外,文中图表均直接或间接来自于相应论文,仅为介绍之用,版权归原作者和期刊所有。