vn.py官网
开源量化社区
Member
加入于:
帖子: 134
声望: 42

之前说从CTA趋势转日内交易,做了些价差交易策略,也实盘跑了下。结果不太理想,没这么赚钱;总结一句话,交易费用和payup 超价吃掉大部分收益,使得虽然每笔交易看看有收益,实际并不怎么样。

虽然现在不用价差交易策略,不过还是简单介绍下吧,不涉及细节代码,就是简单介绍下。

VNPY价差交易的简单逻辑
价差交易原理很简单,就是一对或者一组品种其之间价格有一定关联度,这个可以跑通过计算协方差Covariance矩阵来量化验证,这个中可能有正向或者反向,甚至多个组合的。

当价格差大于或者小于一个阈值的时候,比如价格差的历史波动率的3倍;可以假设是异常,应该会回归均值,此时可以按照反向做一个组合买卖,等回归均值时候,再平仓获利。

所以,vnpy价差交易的步骤也是,定义价差组合,定义买卖价差方法,就是如果买价差组合时候,是买入A卖出B,还是如何;最后定义什么时候买卖组合,就是价差交易策略。这些搞清楚,也就是清楚了。

价差交易的类
不同于CTA策略,价差交易还有些专用的类,这里介绍下。

SpreadData, 这个就是前面说的价格组,或者叫价差组;就是多个不同品种组合,其实可以理解为就是一个新的品种,组合出来的品种;按照你定义计算公式计算出价格,卖出价ask和卖出量,还有买入量和买入价格;还可以组合出tick信息,这些tick信息设置可以组合出bar,反正你当作一个新的品种处理。

另外SpreadData还包括交易后的成交价格,和持有手数等,这些都是组合自己计算的。

这里要注意的是min_volume,可以理解为螺纹钢的10吨一手,这个也是组合的数量最小计量。如果为2的,主动腿买了2个单位,对于价差组就是2/2 = 1 手。

LegData,价差组就是多个品种的组合,这里用leg来代表一个品种,做过SWAP互换的应该很好理解。这里LegData对应就是真的品种。

SpreadAlgo:价差算法,这个不是太直观;因为买入或者卖出一个组合,实际上是按照这个组合下的品种组合或,买入一些或者一个品种,卖出一些品种。那么价差算法,就是录入一个这样买卖指令。

这里就有个主动腿和超价的概念,打个比如组合是(rb2110 - rb2021),如果价差在50以上时候,认为应该太大应该缩小。价差算法就是价差在50的时候,卖出价格组合,算法就会分解为应该卖出short螺纹钢rb2110,买入buy螺纹钢rb2021。那么因为螺纹钢rb2021非主力合约,成交不活跃,应该先交易螺纹钢rb2021,交易成交后,在按照卖出螺纹钢rb2021的价格,加上50,卖出rb2110,但是此时可能价格变动,为了成交,在卖出价格余量(payup)来加以螺纹钢rb2021。

这里还有一个组合买卖价格差,就是ask和bid的差距,不同单一品种的1个价位差,组合可能是至少2个。这样一来一去,就吃掉至少3到4点价差,加上买和卖双边手续费,至少7-8个点。

​SpreadStrategy:把最难的价差组合搞清楚,价差交易策略就很简单,就是按照价差组的价格走势,发送价差交易算法,这里的是通过start_long_algo / start_short_algo 这样发出交易算法,再由SpreadAlgoEngine去分解发送真正交易请求;个人感觉中间计算太多次,速度有点拖。

总结下,核心就是把价差组理解为一个组合品种,对组合品种的买卖是用价差算法来过渡实现。但是双边交易手续费和价格差和payup太占用利润。不太适合直接作为日内交易。

Administrator
avatar
加入于:
帖子: 4887
声望: 284

感谢分享!精华送上

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3

沪公网安备 31011502017034号