发布于vn.py社区公众号【vnpy-community】
 

原文作者: 用Python的交易员 | 发布时间: 2019-11-19

 

v2.0.8版本的vn.py已于上周五正式发布。和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级。
 

对于没有安装的用户,请下载VNStudio-2.0.8,体验一键安装的量化交易Python发行版。
 

价差回测

 
价差交易策略的回测难点,在之前上海、北京、成都的三场线下活动上做了详细的分享,核心原因在于:
 

要实现较大的策略逻辑自由度和较高的策略回测精度,需要价差内每条腿的带有本地时间戳的Tick历史数据。
 

只有这样,才能保证在回测过程中任意时间点价差数据的准确性,但符合这种条件的数据非常难以获得,要么购买价格太高,要么需要自己逐笔录制。
 

考虑到vn.py社区绝大部分用户的需求,选择做了个折中:限制回测中策略的部分功能调用,从而大幅价差回测降低所依赖数据的复杂度,足以满足99%价差策略回测情景的需求(剩下那1%的大神,都这么NB了就自己折腾吧),支持的两种模式:
 

K线模式

  • 数据要求:回测期内每条腿的K线数据(1分钟最佳),若有某条腿缺失一段,则所有腿的这一段数据都会被弃用
  • 数据来源:CtaBacktester下载、CsvLoader载入、脚本载入
  • 价差计算:基于每条腿K线的收盘价数据,在回测过程中由回测引擎基于价差定义公式自动计算,并推送给策略
     

Tick模式

  • 数据要求:录制好的价差Tick盘口数据
  • 数据来源:首先需要在SpreadTrading模块中创建配置好价差后,通过DataRecorder模块来进行Tick录制,本地代码填入xx-spread.LOCAL,其中xx-spread为用户定义的价差名称,LOCAL为固定交易所后缀(代表本地生成)
  • 价差计算:回测引擎直接加载之前录制好的价差Tick数据推送给策略
     

价差回测功能,需要通过Jupyter Notebook来调用,具体代码可以参考Github仓库的示例,整体上和使用Jupyter来运行CTA策略回测的方法非常类似。
 

这里用股指期货的价差回测来做个展示,使用的是IF1911和IF1912合约构建的价差,回测的数据从10月14日到11月8日(因为IF1911刚挂牌不久):
 

description

 

四个代码单元格,分别对应以下功能:

  1. 加载回测引擎模块类以及要回测的策略
  2. 创建价差对象
  3. 创建回测引擎,设置好相关回测参数后,初始化策略实例
  4. 加载数据执行策略回测,并计算相关统计指标,绘制结果图表
     

第四个单元格执行后,将会看到回测过程中相关的工作日志输出,以及最终的回测统计结果:
 

description

 

同时回测的结果图表如下图所示,四幅子图从上至下分别为:净值曲线、净值回撤、每日盈亏、盈亏分布:
 

description

 

在回测中,基于SpreadStrategyTemplate开发的策略,无法调用以下功能(会出错):
 

  • 通过策略缓存的价差对象spread访问任何一条腿的数据
  • 所有针对价差内某条单一腿合约的下单函数,包括:
    • buy
    • sell
    • short
    • cover
    • cancel_order
    • cancel_all_orders
  • 所有查询价差内某条单一腿数据的函数,包括:
    • get_leg_tick
    • get_leg_pos
       

投资组合

 

2019年初和对冲研投合作搞了一次线下活动,主题是基本面量化策略的实盘交易,当时提出要开发的PorfolioManager自动投资组合交易模块,总算在2019年底之前完成了:
 

description

 

该模块主要面向各种采用基本面策略的投资者(不一定是量化!):

  1. 针对每个投资策略,创建一个独立的投资组合策略对象(可以理解为子账户),设置该策略所交易的合约;
  2. 所有的交易下单操作,都指定分配到某个投资组合策略上;
  3. 该投资组合策略,可以维护自身的持仓情况(和底层账户持仓独立),并实时计算盈亏数据(包括持仓盈亏和平仓盈亏),以及其他相关的记录功能(支持用户按需扩展GUI)。
     

2019年vn.py核心团队的最后一期小班课开始报名

  • 两天共计10小时的密集提高课程

  • 8套高端CTA策略源代码分享

    • DoubleChannel

    • KeltnerBandit

    • RsiMomentum

    • SuperTurtle

    • TrendThrust

    • Cinco

    • Cuatro

    • SuperCombo

  • 动态风险仓位管理模型

  • 策略内嵌复杂算法交易

详情请戳:第四期vn.py小班课上线:CTA策略开发