vnpy怎么创建策略并回测_期货套利策略(一)

b851ade452c4e94ae7edabeb2392e69f.png

期货的自动交易不像股票,股票的交易接口受到限制不开放给普通交易者,而期货的交易接口普通交易者很容易获得。网上有很多期货交易的回测和实盘交易开源框架,比较有名的就是vnpy,但是vnpy看的我头大,于是我换了天勤的开源框架(入门简单快捷,文档说明写的也比较好)。

因为本人也是刚接触期货交易几天时间,后面可能会有一些期货概念错误,大家见谅

首先简单介绍一下套利策略。套利策略是通过对冲来获得收益的一种中性策略。套利策略也分为跨期套利、同品种套利、跨品种套利、跨市场套利等。

这里我以同品种套利为例子为大家介绍套利策略,其他的套利策略思想是相似的。比如铜这个品种,它的两种合约的价格差在一个范围内波动(可以理解为A股和H股价格差),当这个价差太大或者太小时,经过一段时间这个价差大概率会回到一个正常价差状态。当价差过大或者过小时,我们就能使用套利策略获利。比如铜的A合约价格在正常状态下比B合约大30-50块钱左右,如果价差达到80块钱时,我们就做多B合约,做空A合约,当价差回到稳定状态时就平仓两个合约。当价差回到稳定状态时,如果B合约赚钱A合约亏钱,B合约赚的钱肯定多于A合约亏的钱;如果A合约赚钱B合约亏钱,A合约赚的钱肯定多于B合约亏的钱;所以总的来说还是赚钱的。如果价差过小时,比如10元,与前面类似,我们就做多A合约,做空B合约。(期货交易时T+0交易,当日可以多次买入和卖出同一合约)

我们先看铜 ‘SHFE.cu1901’ 和 ‘SHFE.cu1902’ 的2分钟收盘价 价差图,可以发现不同时间段里面价差稳定范围也是不一样的。这里先不考虑不同阶段价差不一样,可以在一个历史较短时间内进行回测。

a34bbf3dcd8c6c8978111543d107d715.png

接下来我们开始实现套利策略。在进行套利之前往往需要进行一个一阶差分的平稳性检验以及协整检验。

(一)一阶差分平稳性检验

一阶差分的平稳性检验是指对所有合约先进行一阶差分然后再进行平稳性检验。统计里面认为价格的上涨或者下跌时具有一定随机性的并且是平稳的。下图为两种合约2分钟收盘价一阶差分后的图,可以发现涨跌基本稳定在0附近。如果不满足平稳性检验的话,涨跌是不会稳定在一个值的。平稳性检验可以利用图示法或者adf检验(单位根检验)。从图上可以很明显的看出是平稳的,当然如果要让程序来检验的话就是adf检验,这里对adf检验不作过多的说明。

a462400a42cc90577d013e1e6e9936c7.png

(二)协整性检验

协整性检验是为了检验两种合约价格走势是否一致,如果不一致的话显然不能做套利策略。下图为两种合约2分钟收盘价走势图,可以发现走势基本一致。python中可以利用statsmodels进行检验。

55a8e2e5db5dd08ba1cdf751fe299193.png

(三)套利规则

在满足一阶差分平稳性检验和协整性检验之后才可以进行套利策略,否则不能使用套利策略。以下为套利规则:我计算了历史2000个收盘价 价差5%、25%、35%、65%、75%以及95%分位数。当价差大于75%分位数并且小于95%分位数,做空‘SHFE.cu1901’,做多‘SHFE.cu1902’;当价差大于5%分位数并且小于25%分位数,做多‘SHFE.cu1901’,做空‘SHFE.cu1902’;当价差大于95%分位数或小于5%分位数,止损平仓;当价差在35%至65%之间,止盈平仓。

(四)回测

回测时间:2018年2月1日至2018年5月1日(不包括最开始进行平稳性检验和协整性检验的2000个历史时间点)

回测结果:(天勤的api绘制出来的图)

总收益率5.17%,年化收益率25.78%,年化夏普率8.94,最大回测0.16%。

581eebd86b19b68ac906deeca8b0a9d8.png

9ab2c776c672208b7450c545c557005f.png

从这个回测结果可以发现套利策略还是比较稳的,但是套利策略的收益也容易受到限制。市场效率越高,套利的机会就越少。

小结

目前的策略还是非常简单的初步探究中,后续我将不断深入优化此策略。策略还有非常多的不足之处,比如没有考虑滑点影响。

以上代码已开源在github上,欢迎fork和star:

https://github.com/wbbhcb/futures_strategy。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值