vn.py 量化交易框架实践指南:从安装配置到 CTA 策略回测
vnpy实践
github主页:https://github.com/vnpy/vnpy
官方文档:https://www.vnpy.com/docs/cn/index.html
- 可参考文档配置数据库、数据接口、交易接口。
官方论坛:https://www.vnpy.com/forum/ 常见问题可以在这里搜
安装
- 安装Python发行版VeighNa Studio-4.4.0。集成内置了VeighNa框架以及VeighNa Station量化管理平台,无需手动安装
最好别手动安装,可能有版本问题,费时费力。注:若提示未找到alphalens包,不要直接安装alphalens,而是装alphalens-reloaded>=0.4.5。
提示缺失的包应参考pyproject.toml文件的版本。
- 使用环境:Window 10,Python 3.13
使用指南
在SimNow注册CTP仿真账号,并在该页面获取经纪商代码以及交易行情服务器地址。下述红线画出的,是在获取交易行情,进行模拟交易,配置交易接口需要填的内容。
配置交易行情等服务器流程:
选择系统里的连接CTP
输入后点击连接
注意如果连不通交易或行情服务器,可用telnet测试该端口是否是通的,非交易时间可能是关闭状态
在VeighNa社区论坛注册获得VeighNa Station账号密码(论坛账号密码即是)
- 启动VeighNa Station(安装VeighNa Studio后会在桌面自动创建快捷方式),输入上一步的账号密码登录
- 点击底部的VeighNa Trader按钮,开始你的交易!!!
也可以脚本运行软件,方式参考官方github
配置数据库
参考官方文档配置,用sqlite,无需配置密码等。示例如下:
- 直接修改vnpy\trader\setting.py脚本里的
"database.name": "sqlite", "database.database": "database.db", - 或在界面配置上修改:点击配置后,在弹框里对应字段修改。
配置数据接口
参考https://www.vnpy.com/docs/cn/community/info/datafeed.html,使用tqsdk,可试用1个月,试用流程简洁,试用期过后也可以获得数据。
天勤TQSDK是由信易科技推出的Python程序化交易解决方案,提供当前可交易合约上市以来的历史数据获取:
- 项目地址:vnpy_tqsdk
- 数据分类:期货
- 数据周期:分钟线(实时更新)
- 注册申请:天勤量化-信易科技(shinnytech.com)
也可使用tushare,但tushare在免费积分内只够获取股票类数据,无法获取期货类。
配置流程:
- 直接修改vnpy\trader\setting.py脚本里的
"datafeed.name": "tqsdk", "datafeed.username": "账户名", "datafeed.password": "密码", - 在界面配置上修改
CTA回测
可直接参考官方文档https://www.vnpy.com/docs/cn/community/app/cta_backtester.html,以下是简洁示意。
选择交易栏里的CTA回测研究模块。
在功能栏里选择CTA回测
在弹窗里,先下载需要的数据,指定本地代码(股票、期权代码),指定日期等,点击下载数据。
再选择交易策略,弹出策略配置超参后,可修改再开始回测即可。
回测不同策略、超参和时间段
结论:对不同的时间段,应及时选择合适的策略,配合合适的超参。应有选择的选取合理的目标来优化超参。
不同策略:
分析:同时间段,不同策略表现不同,应针对市场表现选择合适策略。如下双均线法就是亏损,而boll法则是盈利。
双均线法,总收益率=-1.94%,
boll法,总收益率为7.54%。
不同超参:
分析:同策略同时间段,不同超参会极大影响策略表现。
(1)当boll_window为20,boll_dev=3.4
亏损-3.2w
不同指标优化超参数
分析:同一个策略,根据不同的指标,优化超参数,可以看到最好的指标对应超参数是不同的。优化目标的选择也很重要。
根据总收益率,优化超参数,主要是boll_window【15~21】和boll_dev【2.4~4.4】
根据夏普比率,优化超参数。
根据收益回撤比,优化超参数:
(2)当boll_window改为17,而boll_dev改为2.4时,如下:
盈利12w。收益率为12.08%,百分比最大回撤为-3.42%。调整超参前,是亏损的,略调整后是盈利的,以及回撤天数、回撤百分比也不同。说明策略的表现对超参的选择极为敏感。
不同时间段
分析:在不同时间段,同策略同参数的表现也不同。应针对当前时间的表现,及时更换策略。
4月25日到5月25日;boll策略总收益-4.62%,该策略震荡未有明显反转的行情中表现不佳。
3月25日到4月25日,boll策略盈利,总收益率为6.14%,只成交2笔。该策略在突破横盘,市场呈现上升趋势,表现良好。
不使用vnpy也可在线回测,以tqsdk为例
用于敏捷学习
天勤参考策略实现:https://doc.shinnytech.com/tqsdk/latest/demo/strategy.html
天勤因子计算分析:https://doc.shinnytech.com/tqsdk/latest/demo/notebooks/factor.html
tqsdk和vnpy有区别https://doc.shinnytech.com/tqsdk/latest/advanced/for_vnpy_user.html#for-vnpy-user/