发布于vn.py社区公众号【vnpy-community】
原文作者:用Python的交易员 | 发布时间:2020-04-17
v2.1.2版本的vn.py已经于本周三正式发布,此次主要更新的内容包括多标的组合策略模块PortfolioStrategy的支持。
和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,请下载VNStudio-2.1.2,体验一键安装的量化交易Python发行版,下载链接:
PortfolioStrategy模块
PortfolioStrategy模块专门针对需要同时交易多合约的量化策略设计,满足其历史数据回测和实盘自动交易的需求,一些策略例子包括:
- ETF基金轮动策略
- 期货多空组合策略
- 量化资产配置策略
- 期权套利类策略
- 波动率交易策略
- 股票Alpha类策略
目前模块自带的Demo策略只有个最简单的趋势跟踪策略(AtrRsiStrategy移植过来的),后面更新中争取会把上述每个策略类型都提供一个Demo。
相同点
PortfolioStrategy模块在设计上为了降低大家的学习成本,采用了尽可能接近CTA策略模块的方案。下图中展示的是一套铁矿石期权平价套利策略在Jupyter Notebook中的回测结果,同时涉及到三个合约,包括看涨期权、看跌期权、铁矿石期货:
除了上图中的回测功能外,PortfolioStrategy的实盘自动交易管理界面也和CtaStrategy比较相似,只是少掉了右上角停止单状态的显示区域:
对于已经掌握CTA策略开发的用户来说,基本可以无缝过渡到多标的组合策略开发上:
- 继承策略模板StrategyTemplate,创建一个新的策略类
- 在回调函数on_bars中,接收K线行情推送,并实现核心交易逻辑
- 调用buy/sell/short/cover/cancel_order等函数来发送交易请求
不同点
当然,毕竟是针对不同类型的量化策略,PortfolioStrategy在一些细节方面和CTA策略模块还是有所区别:
CtaStrategyCTA策略 | PortfolioStrategy组合策略 | |
---|---|---|
K线推送 | on_bar收到单一合约的K线 | on_bars同时收到所有合约的K线 |
TICK推送 | on_tick回测和实盘均支持 | on_tick只有实盘中会调用,回测不支持 |
成交推送 | on_trade | 无 |
委托推送 | on_order | 无 |
查询持仓 | 通过访问策略的pos获取 | 调用get_pos获取某一合约的持仓 |
查询委托 | 无 | 调用get_order获取某一委托的状态 |
查询活动委托号 | 无 | 调用get_all_active_orderids获取当前全部活动委托号 |
交易委托 | buy/sell/short/cover只需传入价格、数量 | buy/sell/short/cover需要传入合约代码、价格、数量 |
其中最主要的区别,在于组合策略在接收K线推送时,是通过on_bars回调函数一次性接收该时间点上所有合约的K线数据,而不是通过on_bar函数一个个接收(无法判断当前时点的K线是否全部走完了 )。组合策略的回测只支持K线模式,但在实盘中用户可以在on_tick回调下自行管理所有K线的合成推送逻辑(比如用非标准的K线切分点)。
第二个区别点,在于组合策略中需要对多合约同时下单交易,在回测时无法判断某一段K线内部每个合约委托成交的先后时间顺序,因此无法提供on_order和on_trade获取委托成交推送,而只能在每次on_bars回调时通过get_pos和get_order来进行相关的状态查询。
第三点区别在于委托下单函数:组合策略在调用委托函数下单时必须传入具体要交易合约的代码,而不像CTA策略只能交易一个合约所以用不着。同时组合策略模块只支持限价单交易,不提供停止单功能(StopOrder)。
其他更新
DataManager模块发布后,有一堆用户询问了如何删除不需要的数据的问题,所以新版本中我们加上了一键删除的功能,就在查询出来后的数据统计结果每行的最右侧按钮。
接口方面的更新包括:
- 新增中亿汇达ComStar接口,主要用于国内银行间市场(中国外汇交易中心,简称CFETS)的债券固收产品交易,请注意ComStar只有各类大型金融机构才能用(券商自营交易部、银行金融市场部等),私募或者个人都用不了;
- 新增恒生集中柜台期权接口HsoptionGateway,实现提供ETF期权的API接入,主要是部分券商使用,比如中信证券;
- 中泰证券的XtpGateway增加期权交易功能的支持,至此XTP已经成为vn.py证券这边支持功能最完整的接口了(现货、两融、期权);
- 对易盛外盘接口TapGateway进行了代码重构,提供更好的代码可读性方便修改。
vn.py核心团队的底层接口开发小班课上线
日期:2020年5月16日(周六)和5月17日(周日)
时间:两天下午1点-6点,共计10小时
内容:
两天共计10小时的实战训练课程
市场微观结构知识的详细剖析
C++代码的Python封装实操
- pybind11
- ctypes
- cython
底层接口业务功能的对接设计
- 扩展订单类型:FOK、FAK、Post-Only
- 特殊交易指令:询价RFQ、做市报价Quoting
价格:9999元
报名请发送邮件到vn.py@foxmail.com,注明想参加的课程、姓名、手机、公司、职位。