vn.py 2.1.8 发布,策略盈亏统计监控

vn.py 2.1.8 发布了。vn.py 是基于 Python 的开源量化交易程序开发框架,起源于国内私募的自主量化交易系统,目前已经成长为一套全功能的交易程序开发框架。

目前,vn.py 已经正式进驻 Gitee。对于访问 Github 速度太慢的用户来说,就有了一个更好的国内替代选择。该 Gitee 仓库会每日和 Github 仓库同步,自动更新最新版本的代码。

仓库地址:https://gitee.com/vnpy/vnpy

本次更新的内容主要是重构了 PortfolioManager 模块,实现交易策略的实时盈亏统计监控功能。和之前一样,对于使用VN Studio的用户,启动VN Station后,直接点击界面右下角的【更新】按钮就能完成自动更新升级,对于没有安装的用户,可下载VNStudio-2.1.8,体验一键安装的量化交易Python发行版。

下载地址:https://download.vnpy.com/vnstudio-2.1.8.exe

重构后的投资组合管理模块(PortfolioManager)

PortfolioManager 模块最初于 2.0.8 版本发布,当时主要的定位是为主观类的交易策略(如期货基本面单边和套利策略),提供一个方便的交易业绩跟踪和分析工具。

在 2.1.7 版本增加了委托来源标识(reference 字段)后,所有从 vn.py 发出的委托请求都可以直接通过该标识来区分其交易来源,如手动交易、算法执行、量化策略等,每个交易来源可以视作一个独立的【投资组合】。

本次 2.1.8 版本对 PortfolioManager 模块的重构,将所有委托基于 reference 字段进行映射和计算,进一步增强了对于投资组合的盈亏统计和分析功能:

界面整体可以分为左右两部分,左边显示的是当前已有交易组合的信息表:

其中每列的含义如下:

  • 组合名称:委托的来源(reference)

    • 手动交易:ManualTrading

    • CTA策略:CtaStrategy_ 策略名

    • 价差交易:SpreadTrading_ 价差名

    • 期权交易:OptionMaster_ElectronicEye/DeltaHedging

    • 算法交易:AlgoTrading_ 算法编号

    • 脚本策略:ScriptTrader

    • 组合策略:PortfolioStrategy_ 策略名

  • 本地代码:带交易所后缀的合约代码

  • 开盘仓位:昨日收盘时(今日开盘),组合内该合约的持仓

  • 当前仓位:开盘仓位加上今日成交数量(多头成交 - 空头成交)的结果

  • 交易盈亏:今日所有成交,以成交价格映射到当前最新价的盈亏

  • 持仓盈亏:组合开盘仓位,以昨收盘价映射到当前最新价的盈亏

  • 总盈亏:交易盈亏和持仓盈亏的和

  • 多头成交:组合内该合约今日买开和买平成交数量

  • 空头成交:组合内该合约今日卖开和卖平成交数量

其中交易盈亏(TradingPnl)和持仓盈亏(HoldingPnl)的计算,采用的是期货交易所每日结算时所用的【逐日盯市】(Marking to Market)算法,具体原理可以搜索相关资料学习。

该组件基于 QTreeWidget(树形表格)开发,可以很方便的点击最左侧每行的箭头进行折叠和展开,也可以点击顶部的【全部展开】和【全部折叠】按钮进行批量操作,并通过【调整列宽】按钮自动调整表格每列的宽度。

右侧部分显示的是所有成交记录,支持通过右上角的下拉框根据组合进行筛选显示:

盈亏数字的更新基于定时逻辑自动计算,计算频率可以通过顶部中间的选项框调整:

整体上重构后的 PortfolioManager 使用非常傻瓜,大部分情况下只要在 VN Station 的启动界面加载即可,运行策略交易的过程中打开【投资组合】界面,就能实时监控每个策略的当日交易和盈亏情况。

虽然模块中最频繁运行的策略盈亏计算逻辑已经高度优化,实现了和成交数量无关的 O(1) 时间复杂度,即不会因为成交数量过多而导致计算耗时变长,但终究会有一定的额外开销(百微秒到几毫秒)。对于运行策略交易的程序,总归开销是越低越好,因此推荐刷新频率在不影响使用的情况下可以设的高些(比如 30 秒才计算一次)。

所有组合的持仓数据数据会在关闭 VN Trader 时写入缓存文件中,所以不要直接杀进程退出,会丢失数据!在隔日加载时,程序会自动将昨天的总仓位结算到今天的昨仓数据字段中,注意该逻辑对于 24 小时交易的市场(外盘期货、数字货币)可能不一定合适,后面考虑加入每日定时结算或者手动结算的功能。

如果发现有仓位记录错误,或者策略已经移除的情况,可以用 VS Code 手动修改缓存文件,修改后再重新启动 VN Trader 即可。缓存文件位于C:\users\administrator\.vntrader\portfolio_manager_data.json。

其他更新

接口方面:

  1. 南华期货 NHTD 极速接口,包括针对 ETF 期权的 NhStockGateway 和针对期货的 NhFuturesGateway,该接口只能在【南华云】托管环境中使用,采用 UDP 通讯协议(行情和交易)替换传统 API 的 TCP 通讯协议,达到极致的低延时交易性能;

  2. 国泰君安统一交易网关接口 GtjaGateway,行情上基于国君 SIP 行情 API 开发(支持 TCP、软件组播、FPGA 组播等多种行情源),交易上基于国君HFT交易API开发(支持华锐极速、顶点极速、金证集中等多种柜台)。

策略模块:

SpreadTrading 模块新增灵活价差功能,对比之前的普通价差,能够支持更加灵活的价差计算公式(例如 A/B、A-B*C 等),同时允许引入不参与交易的定价腿,满足复杂境内外套利价差需要考虑汇率和税率等因素的需求。

猜你喜欢

转载自www.oschina.net/news/124712/vnpy-2-1-8-released