创建价差合约

查询合约

在创建价差合约前,用户可以通过【查询合约】功能,寻找可以组成价差的合约(不支持交易所套利合约):

  • 在VN Trader菜单栏中点击【帮助】-> 【查询合约】按钮,弹出合约查询界面,如下图所示: https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/3.png

  • 在界面中找到可用于组成价差交易的合约;

  • 本文档以豆油期货的跨期套利来展示,即交易y2205.DCE(豆油期货22年5月到期合约)和y2209.DCE(豆油期货22年9月到期合约)。

构建价差合约

在价差交易的界面左侧,点击【价差创建】按钮,弹出创建价差界面,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/4.png

价差交易模块支持灵活的价差计算公式(例如A/B、A-B*C等),同时允许引入不参与交易的定价腿,满足复杂境内外套利价差需要考虑汇率和税率等因素的需求。在创建价差合约时,需要配置相关参数,各参数要求如下:

  • 价差名称

    • 用户定义的价差合约名称;

    • 价差名称不能重名;

  • 主动腿代码

    • 价差盘口价格满足条件时,先发出的那条腿的本地代码。

    • 格式为vt_symbol(合约代码 + 交易所名称);

    • 必须是下面的腿选项中的一项;

  • 最小交易量

    • 最小交易手数;
  • 价格公式

    • 价差合约的计算公式;

    • 支持任何Python内置数学函数;

    • 注意其中的变量只能是A、B、C、D、E(不需要都用);

  • 【A、B、C、D、E】

    • 包含构建价差合约的主动腿与被动腿,也可以引入不参与交易的定价腿,由合约代码、交易方向、交易乘数组成:

      • 合约代码为公式中的变量所对应的合约本地代码(vt_symbol);

      • 一般来说,价差交易原则上是主动腿完成交易后,立刻用被动腿进行对冲,故主动腿一般选择较为不活跃的合约,价格乘数和交易乘数均为正;被动腿一般选择较为活跃的合约,价格乘数和交易乘数均为负;

      • 不用的变量留空即可;

设置好价差合约的参数后,点击下方的【创建价差】按钮,即可成功创建价差合约。

在豆油期货跨期套利示例中,其价格乘数和交易乘数均为1:1,即价差 = y2205 - y2209;买入1手价差等于买入1手y2205,同时卖出1手y2209完成对冲。

请注意,在多条腿并且期货合约规模不等时,构建价差合约会相对困难一些,如构建虚拟钢厂套利所用到的价差合约时,计算公式如下:

  • 螺纹钢生产技艺是16吨铁矿石加上5吨焦炭练成10吨螺纹钢。

  • 基于价格乘数的价差spread = 1* RB - 1.6*I - 0.5*O。

  • 但是由于螺纹是10吨/手,铁矿石和焦炭都是100吨/手,所以他们交易乘数是1:10:10;

  • 故基于最大公约数规则,其实际交易手数关系是每买入100手螺纹钢(1000吨),需要卖出16手铁矿石(1600吨)和5手焦炭(500吨)完成对冲。

监控价差合约

价差合约创建完毕,监控界面中的【日志】栏会输出“价差创建成功”;【价差】栏也会展示价差合约的实时行情,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/6.png

在豆油期货价差交易示例中,【价差】组件的各字段含义如下所示:

  • 买价

    • y2205买一价 - y2209卖一价
  • 买量

    • min(y2205买一量, y2209卖一量)

    • 取最小值用于保证各合约能均能成交

  • 卖价

    • y2205卖一价 - y2209买一价
  • 卖量

    • min(y2205卖一量, y2209买一量)

移除价差合约

在价差交易的界面左侧,点击【移除价差】按钮,弹出移除价差界面,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/35.png

选择好要移除的价差合约之后,点击【移除】按钮,即可成功移除价差合约。【日志】组件输出“价差移除成功”,如下图所示:

https://vnpy-doc.oss-cn-shanghai.aliyuncs.com/spread_trading/36.png