区间斜率——机器学习线性模型在轮动策略中的应用

发布于: 雪球转发:0回复:0喜欢:0

大家好,我是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分值越高,就表示动量越强。

【测试条件设置】

具体设置如下:

品种还是选择纳指、黄金、深证红利全指信息4个。

包含了2个参数,一是计算RSRS分值的n(随机取25);二是计算均线的参数m(参照前例,取20)。

1.轮动排序:RSRS分值排名第一。

2.交易条件:现价大于收盘价的m日均线买入,否则卖出。

【测试结果】

看看结果怎样:

(采用区间斜率条件的策略结果)

从测试结果可以看到,策略的累计收益达738%,表现不错。

与前期测试结果相比,交易次数有所下降,从年均50次左右下降到年均22次。盈亏比提升较大,达到了2.64。

在今年这种A股持续下跌行情下,吃到了纳指上涨的红利,实现了26%的收益率。

这次的测试就到这里啦,后期我们再做些详细的对比...

【魔方量化服务】专注于指数和ETF基金量化交易。搜公众号或点击访问 网页链接