期货套利的研究--工具

2023-02-22 10:35发布

期货套利是我一直想研究的,在天勤的官方文档里面已经有两个跨品种套利的例子,源码也有,因此,如何开仓下单,本文就不再讨论了。 本文要解决的场景是这样的,如果我
1条回答
1楼 · 2023-02-22 10:38.采纳回答

期货套利是我一直想研究的,在天勤的官方文档里面已经有两个跨品种套利的例子,源码也有,因此,如何开仓下单,本文就不再讨论了。

本文要解决的场景是这样的,如果我们想做期货套利,那么,在500多个品种中,到底应该选哪两个来进行套利呢?选好合约之后,又在什么时候入场,什么时候离场呢?本文试图用一种图形化的直观的方法来给出一个方法。

一、跨期套利

套利有很多种,我接触也不多,也在找人探讨学习呢,本文先讲跨期套利,我下面以螺纹钢为例,稍微解释一下跨期套利,以照顾一下不懂套利的人,如果你已经非常熟悉期货套利,你可以跳过本小节。

  • 螺纹钢的期货同时有12个合约在交易,如RB2006就是2020年6月份到期的合约,每个月15号左右的时候都会新上一个合约,同时也会有一个合约到期,然后走交割流程。
  • 这12个合约的价格都不一样的,理论上,这12个品种应该同涨同跌,并且涨跌幅也大致相同。但实际情况不是这样的,我们可以看到下图中,他们的涨跌幅度并不一致,甚至相差很大,如下图里面,当天的涨跌幅度在0.23%-0.99%之间,相差0.76%(26元),包含着套利空间。
  • 按道理来说,远月的合约应该比近月的合约更贵,远月=近月+仓储成本,因为如果我们有自己的螺纹钢仓库的话,当上面的公式不相等的时候,我们是可以到交易所的交割仓库把螺纹钢拉回家,然后等了几个月之后再把螺纹拉回到交割仓库去的,这样就可以把价差套出来,到底值不值得这样做取决于价差的大小,如果价差太小就没有人愿意这样做了,因此,期货品种两个不同月份之间的价差不会特别离谱的,永远不会出现涨到天花板的可能性,这就是说,做跨期套利的最大风险是有天花板的,这个天花板就是仓储+运输成本。
  • 如果我们让合约的交割时间相差两个月,那么:仓储成本=远月-近月,这个仓储成本应该是固定不变的,这是一个价值中枢,如果价格偏离这个价值中枢比较远,就会有非常大的可能会再回过来的。
  • 上面的说明只是理论,而实际情况如何,就需要详细分析了。

我现在的问题是,我自己没有存放螺纹钢的仓库,我只是做投机交易的,我想把两个品种之间的价格差用K线图的形式显示出来,这种K线图应该围绕着价格中枢上下波动,总体应该是偏震荡的,如果我在这个K线图上加载各种指标,就可以方便地找到某种入场离场方式,可以进行更精准的研究。

二、期货价差工具

【第一步】我们首先需要拿到螺纹钢的各个期货合约最近几年的K线图,我使用的是天勤的数据。我们从上海期货交易所的官网可以查到每一个合约从上市到交割都有一年的时间。

1. 获取螺纹钢从2017年开始到现在的所有合约代码。
2. 使用天勤的TQSDK的API接口拿到每一个合约的所有的一分钟K线图,开始时间和结束时间都按照上海期货交易所的时间来设置。
3. 因为TICK图的数据量实在太大,因此,我目前使用1分钟图为最小存储单位。
4. 把这些数据保存到数据库备查。

【第二步】根据公式计算基准价格,公式为:仓储成本=远月-近月

1. 挑选两个合约,让他们之间相差2个月。
2. 然后计算他们之间的价格差,并绘制成K线,显示在图表里面。
3. 对于1分钟图,它只会有开盘价和收盘价两个价格,因此它显示的K线都是光头光脚的阳线和阴线。而对于其他的时间周期,可以使用1分钟图的数据拼接成新的K线。
4. 两个合约的成交量只能采用某种近似方法,目前就是简单地把两个合约的成交量相加。

这种做法没有考虑1分钟K线内部的价格变化,形成的K线的最高最低价格有可能有些失真的,但作为第一阶段的研究应该也是够了的。

【第三步】制作界面,接入图表库。

1. 把K线数据接入图表库,可以方便地缩放、拖动,加载指标等。
2. 增加品种选择工具,可以方便地选择交易品种,时间周期等。
3. 把保证金和手续费也计算出来,方便核对。
4. 增加跨品种套利的方式,价格是两个品种相除。
5. 加上默认指标布林带Band(20,2)。
6. 最后可以得到一个网页,左边是合约选择工具,右边是图表。

我把这个图放到服务器上,地址是https://yjchart.mt4trader.com.cn,大家打开这个图的时候请使用电脑打开,手机因为屏幕小,虽然可以打开,但效果非常差,因为我主要研究策略功能,不想花太多的时间在界面制作上,大家就凑活使用吧。另外如果什么时候服务器出问题,这个工具不能用了,也别来找我了,因为这本来就是一个实验室的东西。

三、跨期套利

(1) 套利K线的日图

上面是螺纹rb1701和rb1703的套利K线的日图,可以看出:

  • 虽然说合约的时间是一年,但两个合约重叠的时间只有10个月,最后2个月rb1701合约交割了。
  • 同时计算出两个合约下单的手续费是6.97元(两个品种加起来,单边),保证金5572元(两个品种加起来)。
  • 套利K线总体偏震荡,但前期震荡幅度小,临近交割的时候震荡幅度大。
  • 8月份之前的中心价格在-20元,震荡幅度123元(这是K线最高点到最低点的运行空间),注意1手是10吨,因此1手的波动幅度实际上是1230元,手续费占比还是比较低的,如果满仓操作,相对于5572的保证金,也只有19%的震荡幅度,也就是说,使用跨期套利,最大也只有19%的风险,这和期货交易动辄爆仓的风险不再同一个维度里面。
  • 8月份之前有十几次打到布林的上下轨,因此交易机会还是不少的。唯一的问题是,这个时间段交易量整体偏小,入场肯定需要挂单等待的,因此会有单腿风险(有一边先成交,另一边还没有成交)。
  • 8月份之后,行情波动明显加剧,原因尚不清楚,因为我对基本面和交易品种还不熟悉,暂时无法解释。
  • 8月份以后,使用布林带上下轨入场的方式交易机会比较少,震荡幅度为229元,其风险仍然非常小。

(2) 套利K线的15分钟图

上面两张图都是15分钟的J线,上面一张是一段小幅震荡行情,下面一张图大幅震荡行情,可以看出:

  • 套利K线对布林带贴合得非常好,即便日图上有大幅波动,在15分钟图上面仍然没有那种一去不回头的趋势行情,整体震荡非常厉害,适合做震荡交易,甚至可以使用马丁加仓解套的方式。
  • 在典型的震荡走势中,布林带区间从16元-70元不等,相当于每手160-700元的震荡区间,扣除双向14元的交易成本还能剩下不少。
  • 另外,看图表的时候,感觉布林带Band(30,2)的效果更好。

四、跨品种套利

跨品种套利就比较复杂了,比较经典的说法是:两个品种之间因为有某些关系,因此他们的价格会呈现出同涨同跌,或者反向的情况,因此可以利用这种关系来套利。这些关系多种多样,有些关系弱一些,有些关系强一些,比如:

  • 豆油和棕榈油:有相互替代的关系。
  • 上证50和沪深300:同时受大盘影响。
  • 豆油和黄大豆:上下游的生产关系
  • 铁矿VS螺纹:上下游的生产关系

(1)直接比价关系

我先用棕榈油的价格除以豆油的价格,得到一个套利K线图。

结果看到了一波明显的下跌趋势,并且还是一波流畅的趋势,检查棕榈油和豆油这一段时间的走势,发现这两个主合约也都在下跌。

看来这个方法不能用作套利,我们需要重新梳理跨品种套利的做法。但组合出来的这根曲线趋势非常明显,或许也可以用作趋势交易的方法,这不是本文讨论的内容,只是一个意外的收获。

(2)套利的本质

我希望能够看到一个震荡的K线图,而不是一个有趋势的K线图。

如果我们拿到两个品种,发觉他们的走势有点类似,是同涨同跌的,按照我的理解,这仅仅只能说明这两个品种受到了相同因素的影响,比如经济周期的繁荣期,所有的品种都在上涨,两个完全不相关的品种看上去也有点相似,但这并不是意味着这两个品种能够套利。

两个品种要能够套利,就需要有某个中心价位。平时价格可以围绕这个中心价位进行波动,当价格偏离这个中心价位的时候,市场上应该有一股无形的力量把它拉回来的。这股无形的力量是整个套利的核心,它使得价格围绕着中心价位波动,因此:

  • 这股无形的力量必须是靠钱砸出来。在跨期套利中,它代表螺纹钢的仓储和运输,在本例中它代表豆油和棕榈油的订单。
  • 中心价位必须是相对固定不变的,至少在一段时间是固定不变的,并且不能像均线这样随着价格变动,“回归均线”的特点在套利上是没有意义的。

因此,当我们在K线图形上显示这个中心价位的时候,K线图必须表现为某种震荡走势,而不能出现趋势走势。

根据期货产业客户的行为,豆油和棕榈油的确有替代关系的,这一点我们不需要怀疑,问题是,这个替代关系到底占比多大?会不会有其他的因素影响这个替代关系呢?

如果豆油A和棕榈油B有替代关系,那么应该就会有下列的公式:
棕榈油B= 豆油A * 相关系数 + 其他因素

其中,我们希望其他因素是一个固定的值,因此,我们把上面的公式反一下,换成另外一种形式:
其他因素 = 棕榈油B - 豆油A * 相关系数

为什么要变换形式呢,因为两点:
a) 其他因素是一个相对不变的因素,我们可以把它作为中心价格。
b) 这个公式就是后续K线图的计算公式,我们期望看到K线图围绕中心价格波动,
c) 相关系数就代表了两个品种的仓位配比。

(3)品种的相关性

我们首先研究历史,来计算品种的相关性,并且拿到一个相关系数。

数学功力强的人可以用协方差或者一元回归来计算两个品种的相关性,这里我使用更加直观的散点图来研究他们的相关性。

上面这个图的横坐标是豆油的价格,纵坐标是棕榈油的价格。时间是2017-1-16~2017-5-15,共计4个月的时间,可以计算出他们的相关系数r=0.7346。也就是说:
中心价格 = 棕榈油B - 豆油A * 0.7346

使用这个相关系数绘制出4个月的套利K线,也就是说,按照每1份棕榈油配0.7346份豆油来进行对冲交易:

可以看出在4个月的时间内,价格区间在一个319元的区间内震荡。这个幅度稍微有点大了,相当于每手3200元的波动幅度了,可见跨品种套利的波动区间是要显著高于跨期套利的,因此它的杠杆比例需要放低一些。在这个图形上,附加一些指标,就非常适合按照某种震荡指标进行交易的。

如果我把时间拉长到一年,情况就发生了一些变化,散点图变成了这个样子:

这个图形看上去好像有两条不同的直线了,这两条直线的相关系数分别为0.692和0.782,在中间的某一个时间段,可能是因为某种基本面的原因,导致他们的相关系数发生了变化。

我查找豆油当时的K线图,发觉这两条直线分别代表着两轮20%幅度的下跌,而中间相关系数变换的时间段则是在回调。

因为这两段直线的相关系数比较接近,我们直接取第一段直线的相关系数r=0.6923,K线图变成了下面这样:

可以看到图中有两段震荡,震荡的区间幅度是比较小的,而中间相关系数发生变化的这个时间段,价格无法收敛成震荡曲线。

总结一下豆油和棕榈油的跨产品套利:

  • 首先需要找到一个相关系数,我上面使用历史统计的方式得到r=0.6923。
  • 观察K线图表,决定入场时机,如价格走到布林区间下轨的时候就可以做多了,稍微调整一下参数,发现使用布林带Band(60,2)的效果更好一些。
  • 做多的时候买入10手棕榈油,卖出7手豆油,近似使用r=0.7的相关系数。
  • 离场的时候应该按照布林带指标的信号来,因为下单的时候因为下单手数必须取整的问题,会引入误差,因此直接使用盈利金额来离场会有问题的。
  • 入场的时候建议使用挂单方式来获得一个好的价格,做震荡交易的时候还是需要考虑手续费和滑点成本的。
  • 上面的描述中,相关系数是一个关键,可以看到,通过相关系数的调整,我可以把一波明显的趋势行情转换成一个震荡行情,目前使用的历史统计的方法,我们知道历史并不代表未来,而这种历史统计的参数会拟合K线图形的,这些都是做套利的关键问题。
  • 在实际交易中应该使用什么样的相关系数,如何识别相关系数的变动,这又是另外一个大的课题了。

以上是我对于跨产品套利的理解,这个方法还没有实盘使用过,绩效怎么样还不太清楚,我花了几天的时间来查阅资料,也看到一些方法,但大多都是基于复杂数学计算,看得我云里雾里,没有找到好的做法。我时间精力有限,并且做期货的时间比较短,应该会有很多没有考虑到的地方,但我觉得不管好坏,我都需要先把我的分析写出来,给大家树一个靶子,方便大家批驳。

四、邀请

在这里,我还要借此机会发一个邀请,希望能够联系到一些期货交易的朋友,来一起做一些研究工作,我做期货时间不久,很多东西还需要学习,我希望联系到下面这些人:

  1. 捕捉1-2跳利润的日内刷单策略,要实际操作过的人。
  2. 跨品种套利或者跨期套利,也要求实操。
  3. 对期货品种、经济周期和投研报告熟悉的人。

如果有朋友愿意协助我,可以直接加我的QQ(251886761)。其他朋友也可以加我的QQ群(526998093)。

上面的的工具可以在https://yjchart.mt4trader.com.cn查看,再次提醒大家使用电脑查看,大屏幕手机的话,必须横屏才能勉强查看,但效果也不好。