VeighNa源码深入解析-差价交易

adminadmin 技术推文 2022-12-20 367 0

写在前面

期待很久的vn.py 2.0.7版本上线已经有一段时间了,这次更新最大的变化就是增加了python3版本的SpreadTrading模块,这样就使得交易的方式不再只是单向交易,一些基于价差的策略如配对交易或者统计套利的策略的实现成为可能。因为我对价差交易方面很感兴趣,所以也有经常打听vn.py的SpreadTrading什么时候上线,后来也是听陈晓优大佬说过九月中下旬会上线,所以在这个模块上线后就打算对SpreadTrading模块进行整理了,因为时间的缘故所以一直拖到现在。vn.py的官方目前也有对SpreadingTrading进行了简单介绍,下面就以官方的教程为例进行对这个模块进行学习和使用。


SpreadTrading模块介绍

这次先不分析源码,还是以VN Station图像化界面的操作为例,进行SpreadTrading模块的使用。

首先还是需要启动VN Station,在VN Trader的启动栏中将SpreadTrading模块进行勾选,然后连接CTP,进入SpreadTrading的界面。

进行价差交易之前,需要进行两步操作,一是创建价差,也就是要进行编辑交易品种、交易数量、价格的乘数等信息;二是创建价差策略,也就是对上面创建的价差进行以某种策略进行交易。下面就是这两个部分:


创建价差

点击创建价差即可以进行价差的创建,下面的例子是以螺纹钢rb2001和rb2002为例进行创建价差,从而可以实现一个简单跨期套利。

需要注意的是:

1、主动腿以及其他腿的代码需要按照vn.py中规定的格式进行编辑。

2、主动腿指的是当价差满足条件时,率先发出的合约,主动腿需要在下面的腿1-5内。

3、价格乘数也就是构成价差公式的对应合约价格的系数,图中的价差即 spread = 1 × rb2001 - 1 × rb2002。

4、交易乘数也就是执行交易时的手数,正数意味着多头,负数意味着空头。


关于上面的“腿”的说法没有接触过价差套利的人可能会比较陌生,因为在做一些价差套利时,通常需要在相关的合约上进行两个方向的多空交易,此时就可以理解为一个人的两条腿,缺少了哪一条都无法正常行走,所以在价差交易中多空部分分别被称为腿(或者“边“)。有时候,套利的对象可能会有多个,如大豆、豆粕和豆油三者,这时候就会有多条腿,这也是vnpy在创建价差时设置了下面的腿1-5。


在创建了价差之后,界面就对刚刚创建的价差进行了更新:




价差策略

在创建价差后,就可以创建针对这些价差的策略了。通过点击添加策略,可以将vnpy自带的基础价差策略BasicSpreadStrategy进行添加。



在创建策略的时候,需要注意的是:

1、策略名称可以根据价差交易的对象进行设置,但是spread_name需要和上面创建的价差保持一致。

2、buy、sell、cover、short价格分别是对价差进行相应操作的触发价位。

3、max_pos指的是价差合约的最大持仓量。

4、payup是下单时的超价。

5、interval指的是下单到撤单可以等待的时间,单位是秒。


在创建策略后,界面就更新出类似CTA策略一样的启动栏,需要做的同样是初始化和启动的操作:




总结和展望

由于SpreadTrading模块只是刚刚上线,所以功能上并不是很完善,像现在自带的价差策略只是一个简单的到价撮合成交的策略,开平仓的价格也是需要自己手动去设置,并不能随着行情的改变而进行自适应的调整,所以,想必后期的价差策略也会在此方面进行改进吧。


另一方面,手动设置多空品种的价格乘数或者交易乘数也为交易者提供了一些便利,这样,我们就可以根据自己分析得到的一些规律,如协整系数或者回归系数等来设置相应的数值。


除此之外,对比与CTA策略,SpreadTrading模块还缺少对应的价差策略回测模块,所以这也将是后期更新的一部分。


总而言之,SpreadTrading模块的加入,为vnpy增色不少,后面也会继续对其源码进行分析,同时也希望vnpy后续增添更多亮点,为交易者提供更多便利。





版权声明

本文仅代表作者观点,不代表牛人量化交易网立场。
本文系作者授权牛人量化交易网发表,未经许可,不得转载。

喜欢0发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址