前言

此策略报告策略构建部分参考 国泰君安综合期限多样性的趋势选股策略数量化专题之九十。

原报告思想

移动平均线由于具有简单直观的特征,是最常用的技术指标之一, 除了简单发送多空信号之外, 移动平均指标作为历史股价走势信息的载体,能够对未来收益起到一定的预测作用。

由于不同期限移动平均指标包含的信息不同, 本报告策略的核心思想在于同时捕捉个股历史短期、中期、长期趋势特征,并结合市场整体环境, 构建趋势模型, 进行个股收益的预测。模型本身不依赖于市场短期、中期、长期的动量反转特征的事前假设,各移动平均指标的预测方向和力度随市场整体环境而动态变化。

原报告概述

移动平均线由于具有简单直观的特征,是最常用的技术指标之一,在指导交易时, 多用于发送多空信号。在单均线应用中,价格上穿或下穿均线是趋势形成的必要而充分条件;双均线系统里,长期和短期均线形成的“金叉”和“死叉”可分别发送做多和做空的信号。

不同期限移动平均指标包含的信息不同, 短期、中期、长期移动平均指标分别捕捉了个股短期、中期、长期趋势特征。个股的价格在多、空相反方向力量的共同作用下形成, 短期、中期、长期移动平均线分别捕捉个股短期、中期、长期的动量反转特征,可以简单看作股价所受到的正反两个方向作用力。除了个股本身因素之外,市场整体环境也会影响各方向作用力的效果。

鉴于此, 本文通过截面回归的方式,寻找不同期限移动平均指标与下一期收益之间作用关系。具体而言,以股票下一期收益为被解释变量,以各期移动平均指标为解释变量, 进行截面回归。回归得到的系数反映了市场整体趋势结构,即不同期限移动平均指标对下一期收益的预测属性,既包含方向、也包含大小。在模型具有较好的外推性的前提下,样本外收益预测指标便可以作为选股依据。

策略构建

注:本文剔除120,240移动均线

步骤1:

在移动均线的选取中,为了捕捉股价在不同时期的趋势,我们分别选取3、 5、 10、 20、 30、 60(原文有120,240,此处剔除)这些常用参数,得到的均线分别代表股价在过去超短期、短期、中期的表现。考虑到指数移动平均线(EMA)相对普通移动平均线存在更高的灵敏度,相对较近的股价被赋予更高的权重,因此优选 EMA 指标。具体构建方法如下:

步骤2:

等式左边为 i 股截至 t 期末的 n 日 EMA, 考虑市场中个股之间价格相差巨大,为避免之后的回归模型受到极端值的干扰, 我们对 EMA 指标进行进一步标准化:

1、2代码部分

%标准化EMA计算function today=EMA(close,n)     emas = 2/(n+1)*close(:,end-n+2)+(n-1)/(n+1)*close(:,end-n+1);        for i=3:n        emas = 2/(n+1)*close(:,end-n+i)+(n-1)/(n+1)*emas;        end    today = emas./close(:,end);end其中n为均线周期,close为收盘价数据。

步骤3:

将 EMA 除以当天收盘价,在得到标准化的 EMA 的基础上,进行截面回归:

function betavalue=coef(close,t)      %t对应月份,0表示当月,1表示上个月,依次类推    %月度收益的计算    Y =(close(:,end-20*t)-close(:,end-20-20*t))./close(:,end-20*t);    %上一个月的收盘    lastclose = close(:,1:end-20-20*t);           oldEMA3= EMA(lastclose,3);    oldEMA5= EMA(lastclose,5);    oldEMA10= EMA(lastclose,10);    oldEMA20= EMA(lastclose,20);    oldEMA30= EMA(lastclose,30);    oldEMA60= EMA(lastclose,60);        %oldEMA120= EMA(lastclose,120);    %oldEMA240= EMA(lastclose,240);    X = [ones(size(close,1),1),oldEMA3,oldEMA5,oldEMA10,oldEMA20,oldEMA30,oldEMA60];    Z = [Y,X];    Z(any(isnan(Z),2),:) = [];%剔除无效信息    Y=Z(:,1);X=Z(:,2:end);        if ((sum(sum(isnan(X))))>0)                disp(sum(sum(isnan(X))))        betavalue =nan(6,1);%若有效数据不足则传回nan不操作        return;        else        disp('完成');        end    b=regress(Y,X);%回归系数的计算    betavalue =b(2:end);end

步骤4:

各移动平均线的相对预测属性均不稳定,因此我们对各期回归系数在时间序列上进行平滑处理(原系数为12):

得到 t+1 期的回归系数预测值。

%beta值的计算betavalue=coef(close,0);%beta的值的求解for t=1:2    betavalue=betavalue+coef(close,t);endbetavalue =betavalue/3;%beta均值计算

步骤5:

最后计算回归系数的预测值与个股 EMA 的乘积:

其表示基于市场整体趋势特征和个股超短期、 短期、中期、长期历史价格信息对下一期个股收益的预测,并基于此构建选股策略。

%%EMA计算nowEMA3= EMA(close,3);nowEMA5= EMA(close,5);nowEMA10= EMA(close,10);nowEMA20= EMA(close,20);nowEMA30= EMA(close,30);nowEMA60= EMA(close,60);    %nowEMA120= EMA(close,120);%nowEMA240= EMA(close,240);%预期收益相对大小oldvalue=[nowEMA3,nowEMA5,nowEMA10,nowEMA20,nowEMA30,nowEMA60]*bet

选股时选出该值最大的一批股票。(上述代码为EMA多期限组合计算)

实现与结果部分

注:此报告只参考其选股部分内容,对EMA3,5,10,20,30,60操作,为了横向比较单独测试了EMA3,5,10,20,30,60,以及EMA大综合(即包含所有周期测试效果),以及单独测试的EMA3,20,30综合组合。观测多周期EMA线的趋势选股策略的效果。

参数设定

股票池:中证500
时间:2010年1月1日~2017年6月30日
资金:1,000,000,000
手续费:万分之二点五
无风险利率:百分之二
滑价:0
20日一调仓,每期调50支股票
调仓后设置止损
以每日的下一个bar开盘价成交

各曲线如下

总表

红色代表达标(超过平均值),黄色代表不达标(未超过平均值)。

可以粗略看出综合项的回撤均较低有相对较好的夏普率,EMA3和EMA20在收益上表现良好,EMA30回撤较低,对EMA3,20,30进行综合,得到了一个综合更为理想的回测(回撤较低,且保证了收益)。由此可见综合项包含信息较多的优势。

该策略主要根据上个月各EMA线情况回归这个月的收益得到系数,用这个月的情况与系数相乘预测下个月的收益,调仓时选取预测收益最大的股票进行买入。

从年化收益与各指标来说,与其他策略相比可能并不是特别好。可以考虑缩短调仓周期,更换止损策略,尝试不同的EMA线的长度等等,或者采取组合策略。

©著作权归作者所有:来自51CTO博客作者点宽Digquant的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 一份代码帮我赚了10万
  2. 事件研究法什么鬼? 从这里着手看"疫苗之王"
  3. Android(安卓)时间为隔天的九点、并且跳过周末
  4. android实现余额宝收益播报中数字显示动态效果
  5. android图表收益曲线-MPAndroidChart
  6. 长点心吧年轻人,利率不是这么算的!我用Python告诉你亏了多少!
  7. Redux-saga停留在收益率调用上

随机推荐

  1. android---------ndk中的各个版本的下载
  2. android原生音乐播放器界面字体显示不全
  3. android开发之Seekbar
  4. android intent的常用方法
  5. ionic build android 结果卡在下载gradle
  6. [Android]在Android google Map中標出自
  7. Android下各文件方法获取的路径
  8. Android 读写文件的N种写法
  9. android 用VideoView播放本地视频文件
  10. 【Android】简单图片浏览器