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

 

原文作者:用Python的交易员 | 发布时间:2020-08-14

 

最近两个月公司的商业项目比较忙,这次2.1.5版本拖了一个月的时间到这周才发布,本次更新的内容主要是增加了对金纳算法交易服务的支持。

和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VNStudio-2.1.5,体验一键安装的量化交易Python发行版,下载链接:

https://download.vnpy.com/vnstudio-2.1.5.exe

如果使用AlgoTrading模块还需要quickfix这个包(开源FIX引擎),直接通过pip安装的话需要机器上有Visual Studio编译器,否则会报错安装失败,所以推荐在cmd中运行下列命令来安装:

pip install https://pip.vnpy.com/colletion/quickfix-1.15.1-cp37-cp37m-win_amd64.whl

 

金纳算法交易服务

 

description

上图中的本文封面图是从金纳科技首页截取的,简洁明了的一句话说出了这家公司的主要产品:智能算法交易

有些朋友可能搞不清楚【交易算法】和【量化策略】这两个词之间的区别,举一个简单的例子来说明:

  • 作为一名债券固收交易员,基于国债现券的利率曲线变化,你的【量化策略】给出了买入信号,此时你需要立即去买入1000手10年期国债期货T2012来建立多头仓位;
  • 而T2012合约的盘口流动性,通常1档只有5-20手的挂单量,1000手无法一次性买入进去,只能通过【交易算法】把1000手拆分开来,每6秒买10手,10分钟(600秒)后全部执行完毕。

所以,总结下来:

  • 量化策略:负责计算生成买卖的信号,等待时机来捕捉市场Alpha;
  • 交易算法:负责实际执行买卖的委托,减少捕捉Alpha时的执行成本。

对于交易数量不大的用户,可以选择直接将买卖委托的操作嵌入到量化策略的信号生成中(比如中小型资金跑CTA策略)。但对于资金较大的量化机构,算法交易就是业务中的刚需了。

所以从很早的版本中,vn.py就提供了AlgoTrading模块用于满足这类中低频量化策略的算法交易需求,其中内置的TWAP、Iceberg、Sniper三个算法在数字货币市场的用户使用尤其多(毕竟7x24小时)。

对比vn.py中的标准执行算法实现,金纳科技提供的交易算法则加入了更多智能的功能,通过结合全息盘口和L2行情数据来优化算法中的买卖执行细节,从而进一步降低交易成本,或者大家也可以理解为在金纳的交易算法中嵌入了一部分高频量化策略的信号来优化买卖点。

金纳算法交易服务对外提供了FIX协议的接口,用户可以自行联系金纳科技购买账号(按年收费),或者也可以联系自己的券商看是否有采购(比如中泰、申万宏源)来申请免费账号。

vn.py使用了QuickFIX引擎来和金纳算法交易服务对接,针对算法母单的上行和算法子单的下行分别创建了对应的FIX APP,拿到金纳的账户信息后,只需在vn.py主界面的全局配置中添加相关的配置:

description

上图中以genus.为前缀的就是金纳相关的配置选项,parent前缀的是母单部分,child前缀的是子单部分,都需要填入对应的服务器地址、通讯端口、发送方名称、接收方名称信息。

修改完成后点击【确定】按钮退出,然后重启VN Trader打开AlgoTrading算法交易模块,检查日志监控中输出的内容:

description

同时能看到母单和子单FIX APP连接成功的信息,就说明已经成功完成了金纳算法交易服务的登录,此时就可以和之前调用vn.py内置算法一样,来使用金纳提供的交易算法了:

description

同时,由于FIX协议的标准化和通用性特点(金纳用的是FIX 4.2),如果大家有对接其他FIX协议交易系统(海外金融市场居多,比如各种MT4 Bridge)的需求,也可以参考vnpy.app.algo_trading.genus中的代码来进行开发。

 

InfluxDB支持

 

随着vn.py对多标的类量化策略的支持(PortfolioStrategy模块),数据存储访问的需求(尤其是在读取跑回测上)变得越来越高,毕竟谁都不想浪费太多时间在等待数据从硬盘载入到内存上。

InfluxDB是一套专门针对时间序列数据存储设计的NoSQL类数据库,相比于SQL类数据库的MySQL能提供快得多的写入和读取速度(5-20倍),同时采用独立服务进程的模式运行,也能支持多进程的并发访问需求(SQLite的痛点)。

新的2.1.5版本中,也加入了对InfluxDB数据库的原生支持。首先前往InfluxDB的官网:https://portal.influxdata.com/downloads/ ,下载v1.8.1版本的InfluxDB。解压下载后的压缩包,编辑配置influxdb.conf文件,将max_body_size参数设为0。最后打开cmd,切换到当前目录,运行下述命令启动:

./influxd.exe –config ./influxdb.conf

然后同样打开VN Trader主界面的全局配置对话框,修改数据库相关的配置如下:

description

确认保存设置后重启VN Trader,即可开始享受InfluxDB带来的迅捷数据存储。最后需要提醒的是,运行influxd.exe的cmd需要保持运行,如果关闭则会导致InfluxDB退出,或者也可以用一些辅助工具将其注册为后台运行的Windows服务。

 

其他更新

 

接口方面:

  1. 增加顶点飞创的ETF期权接口SecGateway,至此国内主要的ETF期权量化接口vn.py就全部都支持了;
  2. Bybit交易接口的永续合约部分升级到v2版本,解决了之前一些和反向合约的冲突。

同样,有什么想问的问题或者分享的内容,欢迎在文章下方留言。本期我们将会随机抽取一位留言者赠送《vn.py全实战进阶 - 深入定价模型》课程的5折优惠券一张。