大家好,我是Quant团长。
今天继续对轮动策略进行改进实验。
看过前期文章的朋友应该知道,轮动策略的买入判断包括两个:动量排序条件和交易条件。
对于交易条件,前期我们已经测试过几个指标,比如 RSI、MACD、以及布林带等,对策略进行了改进测试。
今天,我们尝试对轮动策略的排序条件进行改进。
这次改进,还是按照动量规则,原先采用的是区间涨幅,这次改进则采用区间走势。
【区间走势的计算】
何为区间走势,简单说就是计算某段区间内收盘价的斜率,斜率越大,表示区间涨势越好。
第一步:计算斜率(beta)
那么,怎么计算斜率(beta)呢?
不复杂,数学上有个线性模型,叫做最小二乘法(OLS)线性回归,就是干这个事的。
具体的理论原理就不细说了,感兴趣的朋友可以自行搜索...
计算上,可以采用比较常见的机器学习库Sklearn,在它的线性模型中有个LinearRegression,就是这个线性回归。
计算时有个要注意的地方,就是每次都要对收盘价序列“归一化”。
因为ETF的数值范围不一样,会导致在计算时,即使相同走势,斜率也不一样。
比如,这两个价格序列y=[1,2,3,4]或[2,4,6,8],对于构造的x=[1,2,3,4]求斜率时,其结果分别为1和2。
事实上,这两者的斜率是相同的,所以需要对价格序列y进行归一化处理。
第二步:计算决定系数(R方)
在斜率计算的基础上,还有个概念,就是对线性回归拟合效果好坏的判断指标——决定系数(R方)。
这个决定系数的取值范围在0-1之间,数值越大,表示线性拟合的效果越好。
当直线能完美拟合所有数据点时,决定系数取值就为1。
理论原理有些复杂,但是计算很简单。从机器学习库Sklearn的skearn.metrics中导入r2_score函数即可。
第三步:计算RSRS得分
在测试中,我们将斜率(beta)和决定系数(r2)的乘积,作为判断区间走势的最终分值,我们称之为RSRS得分。
RSRS=斜率(beta)*决定系数(r2)
RSRS分值越高,就表示动量越强。
【测试条件设置】
具体设置如下:
包含了2个参数,一是计算RSRS分值的n(随机取25);二是计算均线的参数m(参照前例,取20)。
1.轮动排序:RSRS分值排名第一。
2.交易条件:现价大于收盘价的m日均线买入,否则卖出。
【测试结果】
看看结果怎样:
(采用区间斜率条件的策略结果)
从测试结果可以看到,策略的累计收益达738%,表现不错。
与前期测试结果相比,交易次数有所下降,从年均50次左右下降到年均22次。盈亏比提升较大,达到了2.64。
在今年这种A股持续下跌行情下,吃到了纳指上涨的红利,实现了26%的收益率。
这次的测试就到这里啦,后期我们再做些详细的对比...
【魔方量化服务】专注于指数和ETF基金量化交易。搜公众号或点击访问 网页链接。