最近发现一个不错的量化策略实现平台,免去我以前自己配置Python环境,获取数据,处理数据等一系列麻烦,还可以和小伙伴们及时分享策略交流。在此记录下我在Joinquant平台进行的量化投资策略学习过程,与大家共享,欢迎批评指正。
在社区中看到均线策略代码示例,进行了克隆改进形成了现在的指数平滑均线。
1. 指数平滑均线原理
使用均线的目的就是想找出趋势,跟随趋势,体现了顺势而为的思想。不足是:信号滞后,发出信号时可能已经涨过了,而且不适合震荡市,在震荡市中会频繁止损。均线策略代码示例提到的移动均线法不考虑较远期的数据,指数平滑法则不舍弃过去的数据,但是仅给予逐渐减弱的影响程度,即随着数据的远离,赋予逐渐收敛为零的权重。
2. 指数平滑均线策略伪码
Input:当前仓位,时间点T
Output:仓位比例
1: 获取股票T日收盘价X
2: 计算T日EXPMA值=a当日或当期收盘价 + (1-a)上一日或上期EXPMA,
其中,a为平滑系数,取作m/(N+1),m一般取2,N为天数,取5、12、26、60、120日。首次(T-1)日EXPMA值为其前N-1日的收盘价的均值。
3: if T-1日收盘价 < T-1日EXPMA值 and T日收盘价 > T日EXPMA值
4: 全仓以T+1日开盘价买入
5: elseif T日收盘价 < T日EXPMA值
6: 空仓以T+1日开盘价卖出
3. 指数平滑均线策略回测
这里我选择了下表中的标的进行回测
回测时间段 :2005年1月5日至2015年9月21日(和股票上市实际时间段的交集)
回测频率 :按日回测
回测资金:50万
手续费:每笔交易时的手续费是, 买入时万分之八,卖出时千分之1.3, 每笔交易最低扣5块钱。
回测结果如下表
4. 简单分析
我从上证50、沪深300各挑选了一只股票,还选了上证50和沪深300的ETF,一共四只标的。从回测结果统计表中可以看出600196(复星医药,沪深300)、510300(沪深300ETF)在60日指数平滑均线时收益率最高,601318(中国平安,上证50)、510050(上证50ETF)在26日指数平滑均线时收益率最高。对于中线投资者来说,指数平滑均线的参考意义似乎更大。但从目前测试结果看该策略的回撤略大,510300(沪深300ETF)在26日时收益超过基准收益的两倍多,其回撤是所测试中最小的了,但最大回撤仍达22.081%,可以采用硬止损的方法。也可以和其他指标等相结合一起使用。