文章目录

  • 写在前面
  • 获取数据
  • csv数据导入
  • 历史回测
  • 写在后面
  • REF

写在前面

策略研发之后,为了检测我们策略的效果,不可能一上来就接入实盘,所以需要的就是通过历史数据对我们的策略进行检验,也就是历史回测。vn.py也有推出历史回测的教程,是通过内置的RQdata进行的,也就是说需要购买RQdata的服务,通过RQdata下载的数据会自动添加到.vntrader下面的SQlite数据库中。除此之外,vn.py还有一种回测方式,就是通过手动导入csv到SQlite数据库中,这种方式就需要你自己有提供数据服务的服务器或者本地用于回测的csv数据。因为在vn.py的源码中,默认是通过RQdata获取数据,如果没有成功,就从数据库中查询。
第一种方法由于需要购买数据服务,虽然需要花钱,但是这是最好的方式了,因为RQdata与vn.py正好契合,不仅可以提供历史回测的数据还可以在实盘阶段为策略进行初始化操作,所以有条件的还是购买这个比较合适。RQdata在vn.py的配置官方教程中已经推出,下面以本地csv进行历史回测进行演示和总结整理。

获取数据

数据获取按照上一篇文中以新浪财经API获取数据为例。在获取到数据之后,我们需要将得到的数据保存为csv格式数据,以代码中RB1910的1h线为例:

from urllib import request
import json
import pandas as pddef get_data(id):url_60m = 'http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesMiniKLine60m?symbol='url = url_60m + idreq = request.Request(url)rsp = request.urlopen(req)res = rsp.read()res_json = json.loads(res)bar_list = []res_json.reverse()for line in res_json:bar = {}bar['Datetime'] = line[0]bar['Open'] = float(line[1])bar['High'] = float(line[2])bar['Low'] = float(line[3])bar['Close'] = float(line[4])bar['Volume'] = int(line[5])bar_list.append(bar)df = pd.DataFrame(data=bar_list)print(df)df.to_csv('./data.csv', index=None)if __name__ == '__main__':get_data('rb1910')

这里需要注意的是,在生成的csv的columns的名字必须按照上面的形式进行创建,因为vn.py在csv导入时是按照这些名称进行解析的。

csv数据导入

在得到csv数据之后,我们打开VN Station,选择csv载入模块。

根据我们的数据格式进行选择导入数据。由于我们的数据是rb1910的1h数据,所以代码就是rb1910,交易所是SHFE,周期是HOUR,然后将数据进行导入。

历史回测

输入成功导入之后,打开CTA回测模块,填入相关信息然后开始回测:

得到回测结果:


上面四个图的意义为别是:

  • 子图1:资金变化曲线,笔直向下说明稳定亏损
  • 子图2:最大回撤曲线,越来越大说明策略亏损越来越多
  • 子图3:每日盈亏统计,红绿分布平均,但绿色密度更大(亏损)
  • 子图4:盈亏的概率分布图,尖峰在0轴左侧(中位数日期发生亏损)
    除了基本的收益走势,每一笔的成交记录、每日盈亏以及K线图都可以进行查看。

回测的另一方面也是为了让我们找到合适的参数,所以对参数进行优化也是必要的。vn.py中也为我们提供了参数优化的模块:

通过多进程优化可以得到优化的结果:

通过参数优化,我们可以得到最优的参数组合,通过这个最优参数组合再进行回测可以得到更好的结果:

写在后面

不得不说,vn.py无论是数据的下载或者本地csv的load,还是回测的可视化效果,还有参数优化,作为一个专注于量化实盘的框架已经做的很不错了。如果习惯于其他的回测框架,如pybacktest、zipline,也可以选择它们作为回测框架+vn.py实盘框架,回测当然可以选择多个框架进行测试,这样也可以得到更高的鲁棒性。不过话说回来,vn.py在回测方面也做得这么贴心和周到,确实很不容易。

REF

vn.py官方教程

【vn.py】量化策略历史回测(基于本地csv数据)相关推荐

  1. 为什么很多量化策略,回测很丰满,实盘却很骨感

    来源丨AI科学投资(ID:AItraders) 关于回测,很多人是完全不相信的.这也很好理解,回测有太多的细节,甚至策略研发者本人可能都发现不了回测过程中可能存在的问题.但是回测对策略研发者又是如此重 ...

  2. 期货交易python回测_python量化交易历史回测

    import tushare as ts import xlrd import pandas as pd import matplotlib.pyplot as plt ts.set_token('* ...

  3. vnpy怎么创建策略并回测_【手把手教你】入门量化回测最强神器backtrader(一)

    1 引言 目前基于Python的量化回测框架有很多,开源框架有zipline.vnpy.pyalgotrader和backtrader等,而量化平台有Quantopian(国外).聚宽.万矿.优矿.米 ...

  4. 用 Python 基于均线交叉策略进行回测

    本篇文章中,我将用 Python 构建一个简单的移动平均线交叉交易策略进行回测,并使用 标准普尔 500 指数(S&P500) 进行测试. 一个简单的移动平均线交叉策略可能是使用技术指标的量化 ...

  5. 用Python编程借助现有量化平台编写股票交易策略和回测分析

    一.简介 接下来笔者会给大家介绍股票交易中的常见几种交易策略实现思路和源码编写过程,如果大家听说过量化交易这个词语的话,对其中的交易策略或许了解过,大概意思就是在股票.加密货币或者金融衍生物在价格的波 ...

  6. A股月份效应的研究——基于python量化视角(backtrader回测)

    A股月份效应的研究 前言 <易经>早就揭示出:物极必反,盛极必衰! 阴阳总是不断交替的.股票市场也一样,涨跌互现,涨多了会出现调整,跌多了会出现反弹,因此我们看到K线组合总是红(阳)绿(阴 ...

  7. 如何借助现有股票量化交易平台编写策略和回测分析

    每个交易日的股票都会上涨或者下跌,在这个过程中笔者们偶尔会想针对部分股票进行股价的涨跌幅进行监控,或者自动进行交易,在这个需求前提下,现有券商.股票分析软件都会带有机器人自动交易策略功能,大部分都需要 ...

  8. 恒生LIGHT云金融交易测试平台,支持股票、融资融券、股票期权、基金、期货等多市场,提供免费的实盘行情和便捷的API接入,满足多金融业务品种的高仿真实训环境,进行策略实盘回测!

    金融交易测试平台,是恒生LIGHT云为开发者提供的一套支持股票.融资融券.股票期权.基金.期货等多市场,多金融业务品种的高仿真实训环境. 开发者通过开放的接口接入金融交易测试平台,一方面可以验证自身产 ...

  9. 均线交易策略的回测 r_使用r创建交易策略并进行回测

    均线交易策略的回测 r R Programming language is an open-source software developed by statisticians and it is w ...

最新文章

  1. 和lock一起学beego 博客系统开发为例(六)
  2. [BTS06]BizTalk2006 SDK阅读笔记(五) 管道-Pipeline
  3. 中科院召开嫦娥四号任务动员会
  4. Qt中槽函数触发两次的两种场景分析
  5. Python 爬虫进阶二之 PySpider 框架安装配置
  6. Entity Framework在WCF中序列化的问题(转)
  7. Codeforces Round #299 (Div. 2) D. Tavas and Malekas kmp
  8. R语言在金融中的运用一
  9. 003 python 注释/数据类型/运算符/输入输出/格式化输出
  10. 运维自动化之5 - 基于LVS实现4层负载均衡应用
  11. 【转】让你的手机成为你的电脑摄像头
  12. ImportError: No module named queue
  13. Android 热更新Robust 浅析
  14. MacBook Pro死机强制重启键
  15. Android计步器算法实现(2)
  16. SAN存储的局限性相关介绍
  17. C++记录程序运行时间5大方法
  18. 安装EEGLAB以及创建电极位置
  19. 中国为什么没有根域名服务器
  20. 一缕黑暗中的火光-----------用例图--------------优雅的建模语

热门文章

  1. 家人共享为什么显示服务器失败,App 支持 “家人共享”功能 App Store服务器通知更新...
  2. 爬取pixiv每日推荐
  3. 管理模式和商业模式的区别
  4. 基恩士PLC--控制案例程序
  5. 利用curl命令访问Kubernetes API server
  6. Jove:@AlanCui 在手机上用QQ或GTalk来贴Fanfou吧, 不用敲空格或省略号. 好像你输入多少个中文字符就要补多少个空格...
  7. 新闻周刊文字内容_央视新闻周刊文字版官网-央视新闻周刊文字版2020下载-游戏大玩家...
  8. 系统设计模板该怎么写
  9. ext winds点击超连接_东南大学崔铁军院士团队在信息超材料领域取得新进展
  10. java timewait_time_wait和close_wait产生原因及解决