前言
此策略报告策略构建部分参考 国泰君安综合期限多样性的趋势选股策略数量化专题之九十。
原报告思想
移动平均线由于具有简单直观的特征,是最常用的技术指标之一, 除了简单发送多空信号之外, 移动平均指标作为历史股价走势信息的载体,能够对未来收益起到一定的预测作用。
由于不同期限移动平均指标包含的信息不同, 本报告策略的核心思想在于同时捕捉个股历史短期、中期、长期趋势特征,并结合市场整体环境, 构建趋势模型, 进行个股收益的预测。模型本身不依赖于市场短期、中期、长期的动量反转特征的事前假设,各移动平均指标的预测方向和力度随市场整体环境而动态变化。
原报告概述
移动平均线由于具有简单直观的特征,是最常用的技术指标之一,在指导交易时, 多用于发送多空信号。在单均线应用中,价格上穿或下穿均线是趋势形成的必要而充分条件;双均线系统里,长期和短期均线形成的“金叉”和“死叉”可分别发送做多和做空的信号。
不同期限移动平均指标包含的信息不同, 短期、中期、长期移动平均指标分别捕捉了个股短期、中期、长期趋势特征。个股的价格在多、空相反方向力量的共同作用下形成, 短期、中期、长期移动平均线分别捕捉个股短期、中期、长期的动量反转特征,可以简单看作股价所受到的正反两个方向作用力。除了个股本身因素之外,市场整体环境也会影响各方向作用力的效果。
鉴于此, 本文通过截面回归的方式,寻找不同期限移动平均指标与下一期收益之间作用关系。具体而言,以股票下一期收益为被解释变量,以各期移动平均指标为解释变量, 进行截面回归。回归得到的系数反映了市场整体趋势结构,即不同期限移动平均指标对下一期收益的预测属性,既包含方向、也包含大小。在模型具有较好的外推性的前提下,样本外收益预测指标便可以作为选股依据。
策略构建
注:本文剔除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:nemas = 2/(n+1)*close(:,end-n+i)+(n-1)/(n+1)*emas; endtoday = 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; elsedisp('完成'); endb=regress(Y,X);%回归系数的计算betavalue =b(2:end);
end
步骤4:
各移动平均线的相对预测属性均不稳定,因此我们对各期回归系数在时间序列上进行平滑处理(原系数为12):
得到 t+1 期的回归系数预测值。
%beta值的计算
betavalue=coef(close,0);%beta的值的求解
for t=1:2betavalue=betavalue+coef(close,t);
end
betavalue =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线的长度等等,或者采取组合策略。