简介
前几天介绍了vn.py实盘部分的底层实现机制,这一篇将为大家介绍数据以及回测部分的底层实现机制。
回测主要涉及两部分:1. 历史数据的导入 2. 计算信号 3. 策略评价 4. 参数优化。
历史数据
1. 通过vn.py提供的历史数据接口,主要有以下几个历史数据源,上海中期、天勤、富途、tushare、QuantOS等;
Demo路径:
examples/**DataService/downloadData.py
使用方式:
手动下载指定时间或者自动定时下载并插入MongoDB数据库;具体使用方式可以参考:https://github.com/vnpy/vnpy/wiki/天勤终端数据解决方案
2. 自行通过接口订阅合约行情并记录在数据库;
Demo路径:
examples/DataRecording/runDataRecording.py
使用方式:
将需要订阅的合约添加到DR_setting.json列表中
3. 从第三方获取数据,如:wind、通联
Demo路径:
examples/CtaBacktesting/loadCsv.py
使用方式:
demo提供了将csv格式数据文件插入MongoDB示例;其他格式请自行编写
计算信号
这一部分就是根据自行编写好的策略计算一些指标或者其他的量,根据相应的规则发出买卖信号。回测和实盘用的是同一个文件。
Demo路径:
vnpy/trader/app/ctaStrategy/strategy/**strategy
说明:
策略class主要包括这几个部分:
OnTick: 收到tick行情推送,生成相应的bar(主要通过app/ctaStrategy/ctaTemplate.py中的BarGenerator来生成k线),推送给onBar函数;
OnBar: 收到合成的k线,计算指标或者其他的量,生成买卖信号;
策略评价
主要包括pnl、sharpe ratio等指标
Demo路径:
examples/CtaBacktesting/runBacktesting.py
说明:
利用
app/ctaStrategy/ctaBacktesting.py下定义的BacktestingEngine类
流程:如下图所示。(请点击图片放大查看或点击文末‘阅读原文’跳转到【维恩的派】论坛进行查看。)
参数优化
利用格点法遍历选择最优参数。
Demo路径:
examples\CtaBacktesting\runOptimization.py
基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5563,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。
项目官网:http://www.vnpy.org
论坛地址:www.vnpie.com
知乎专栏:https://zhuanlan.zhihu.com/vn-py
Developed by Traders,
for Traders