算法策略 | 基于残差动量的横截面期货交易策略

 致力于分享量化策略,培训视频,Python,算法研究等相关内容。

引言

大家好,我是LE CHIFFRE。本年度第一个策略来了,我们公众号的VIP服务开通以来,一直缺少像选股一样选期货的策略。好,本期我们就来开发一个期货阿尔法相对动量策略。相对动量策略的依据理论有很多,我们这一期的算法是采用的套利回归算法中的方法与思想,改装成选期货做趋势。然而,我并不准备罗列一大堆数学公式,因为我也不会。而是秉持松鼠宽客一贯的作风——“接地气”,策略落地。

正文

OK,说正事儿。相对动量就要有相对一说,相对谁?股票里面是大盘是沪深300,期货呢?当然是板块指数。所以显而易见,第一步就是构建相对的目标也就是指数,第二步是把相对刻画出来,第三步是把刻画出来的相对变成进出场信号,第四步加上止盈止损。

首先我们来看一组对比:

上面是焦炭的主连后复权,下图是焦炭、铁矿、螺纹、热卷的板块指数构件图,从图中肉眼可以明显看到,2020年7-8月期间板块指数的向上走势要比焦炭自身更为单调向上,说明此期间热卷或者铁矿或者螺纹的趋势要比焦炭要好。我们放大这块时间图来仔细看:

从板块指数的技术形态和焦炭的技术形态可以明显看出,在此阶段,如果做多,我们选择另外三者要比焦炭更舒服一些。

下面我们就先介绍我们的第一步:板块指数的构建。

本文开头是自定义了Index_contract的函数构建板块指数,该函数的原理就是根据板块内所有品种的涨跌幅汇总构建的板块指数算法。

第二步:我们通过自定义LinearReg2seqs线性回归函数对标的资产和板块指数进行回归计算。

如上图所示,我们要计算出残差,就要计算出两个品种收盘价格时间序列的斜率和截距,斜率也就是贝塔值。依据中学所学y=ax+b,当我们求得贝塔值→a,随即也就求得b→截距,那么我们首先要求得就是斜率。

上图是计算贝塔值也就是斜率的公式,我们首先要计算出两个标的资产的协方差和某个标的资产的方差,我们举例说明,假设X是铁矿石,Y是螺纹钢,也就是我们需要求出铁矿石和螺纹钢的协方差和铁矿石的方差。
求出协方差同样要按照下面的公示分成两步,第一步求出length周期的平均值,类似均线。第二步求出铁矿石和螺纹钢的变量值与平均值的差值的乘积,后再求期望值(平均)。如下图所示,方差亦然。

上述两个函数具体算法逻辑和代码,我们会在VIP群里发放,没有关注我们的朋友,请速速关注哦。

第三步:在第二步基础上得到标的资产和板块指数的回归残差,根据回归残差,我们构建进场信号。

这里我们采用传统的肯特钠通道,下面子图黄线为残差和肯特钠通道

第四步:止盈止损

上图所示为吊灯止盈的方式,具体的我们不再赘述,以往文章中我们已经经常用到,有任何疑问可在VIP群内咨询。

最后附上我们的工作区截图和部分回测结果展示(已做样本内外):

另外,强调的是,我们这一期采用的是ATR倒数的开仓模式,因为经过回测发现,固定手数的的确没有海龟资金管理方式好。但是我们可以在整体的开仓手数下进行同比例的缩小以应对大部分小资金账户的需求。

源码包

 本策略仅作学习交流使用,实盘交易盈亏投资者个人负责。

猜你喜欢

转载自blog.csdn.net/m0_56236921/article/details/124491138
今日推荐