【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

本次股指策略分享,技术宅准备了Python版本、TB版本两个版本提供给大家学习。想得到完整策略的同学,欢迎关注公众号:数量技术宅并添加技术宅微信:sljsz01,领取策略的Python、TB源代码

什么是指数移动平均

前段时间,技术宅在某乎回答了一个“指数移动平均线”的问题,结论中提到,指数移动平均线(EMA)相比较常用的简单移动平均线(MA)的一些优势: EMA对近期的价格加强了权重比,更能及时反映近期价格波动情况。 当行情发生快速、剧烈的波动时,指数移动平均线EMA相比较普通移动平均线MA,更具参考价值,以下是该问题完整的回答。

指数移动平均线,英文名称Exponential Moving Average,它是在普通移动平均线基础上的改进,要理解指数移动平均线,就需要先理解普通移动平均线,许多股票交易软件把它成为MA(Moving Average),我们通常看到软件中的MA10、MA20等等,指的是10个计算周期、20个计算周期所计算得到的移动平均线。

移动平均线的计算方式很好理解,我们以收盘价的MA10为例,即过去10个K线计算周期(如果是日线,那么就是过去10天)的某个股票的收盘价全部相加,再除以10。20或其他周期,以此类推,将N个周期股票收盘价全部相加,再除以N,就得到MA(N)的移动平均线。

移动平均线的算法,平滑了价格走势(异常高、低价格被多数价格平均),在一定程度上去除了价格运动中的噪声,能够更直观地反应出市场的趋势。我们以下图为例,经过移动平均线地平滑,原本歪歪扭扭的价格走势,变成了上涨、下跌的两段明显的趋势。

解释完移动平均,我们再进一步解释何为指数移动平均。指数移动平均,是在移动平均基础上的改进,为什么这么说?我们还是看上图的5-6之间的行情,此时,绿线所代表的价格已经向下运动了,而白色的移动平均线仍然在向上走,如果我们根据白色移动平均线的趋势形态进行买入(做多),就会遭受损失。

指数移动平均,是在移动平均基础上,加大了离当前观察点最近的一定周期内价格的权重,而减小了离当前观察点较远周期的价格的权重,使得指数移动平均在保留平滑价格噪声的优点基础上,对于价格近期的变化更为的敏感。我们来看公式:

img

对序列 {xn} 定义其截至第n项的周期为N的指数移动平均 EMANxn)。从定义式可以看出 EMA 加权平均的特性。在 EMA 指标中,每天价格的权重系数以指数等比形式缩小。时间越靠近当今时刻,它的权重越大。说明 EMA 函数对近期的价格加强了权重比,更能及时反映近期价格波动情况。

综上,对于指数移动平均线,我们可以总结出他的用法:当行情发生快速、剧烈的波动时,指数移动平均线EMA相比较普通移动平均线MA,更具参考价值。

有粉丝看到该回答后,私信技术宅,既然指数移动平均线能够更迅速、灵敏的反应行情在快速变化时期的趋势,那么我们是否能利用EMA的这些优势,构建效率更高的交易系统?答案是肯定的。

指数移动平均的具体应用

接下来,技术宅就将分享给大家一个由指数移动平均作为基础原理构建核心指标,并由该核心指标构建的量化交易策略。不同于单纯的EMA,我们不仅将指数移动平均的思路用于平均线的计算,还将类似的思维应用到策略中其他时间序列指标的计算。

股指期货行情的发展往往较为迅速、容易产生高波动,这是因为,股指期货对应股票的涨跌停幅度在10%,远大于商品期货的3%-5%,股指期货存在着更高的内生波动率。指数移动平均能更好的反应出股指期货的快速波动,因此也是更为适合股指期货的策略构建方式。

而同为股指期货的IC、IF、IH,他们之间的波动率也有差别,我们在前文统计了三大股指期货的波动率,此处再次引用文内结论:IC股指期货的波动率高于IF、IH,并且该规律在时间序列上比较稳定(红线基本在蓝绿线之上)。对于交易策略来说,它所交易的品种内生波动率越高,策略就越有可能取得超额利润。所以,我们以股指期货中的IC作为重点研究对象。

基于指数移动平均的策略

我们首先采用交易开拓者(TB)来测试该策略,TB作为支持期货回测的第三方平台,具有现成的回测框架,并且它的策略编写语言简单,适合初学者。我们将该策略应用于IC股指期货,由于2015年股票市场的暴涨暴跌带来的极端波动率,该年度大部分交易策略都表现不错,为了验证策略真正的有效性,我们刻意剔除2015年的数据,从2016年开始测试到最近行情,交易手续费率按照双边万分之二扣取。

以上是我们采用第三方平台TB回测得到的绩效,可以看到,该策略正如此前的逻辑推演,能够更好适应股指期货IC的内生波动,并能够适应IC不同阶段的行情。

为验证策略逻辑与回测结果的正确性,我们再次采用Python,自行搭建回测框架、编写回测代码,其中,策略的条件、参数、数据与TB完全一致,以此来对比检验不同平台、不同语言的测试结果。

从上面两张图的对比,策略Python测试结果与TB测试结果可以相互匹配,下图的橙线对应的就是去除交易费用的结果。两个不同语言的版本测试,验证了策略的有效性和测试结果的正确性。我们再考虑加入2015年的数据完整测试,同样测试TB版本、以及Python版本。

加入2015年的历史数据后,策略有了大幅度的提升,这是由于2015年股票市场罕见的极端波动所带来的。我们需要看到的是,即使剔除2015年,该策略同样能够把握住股指期货市场的一些行情特征。

本次股指策略分享,技术宅准备了Python版本、TB版本两个版本提供给大家学习。想得到完整策略的同学,欢迎扫码找到小编,领取策略的Python、TB源代码。

 


往期干货分享推荐阅读

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”

【数量技术宅|金融数据系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

如何获取免费的数字货币历史数据

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

商品现货数据不好拿?商品季节性难跟踪?一键解决没烦恼的Python爬虫分享

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

 

posted @ 2020-11-14 20:22  数量技术宅  阅读(477)  评论(0编辑  收藏  举报