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

文章目录

        • 写在前面
        • 获取数据
        • 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官方教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43552.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「量化技术」Inv_Strategy 胜率76%的趋势反转策略

0 简介 Inv_Strategy为自研的趋势反转策略,能够有效识别到时间序列的趋势拐点,能辅助进行交易决策,规避风险、降低持仓成本。策略基于深度神经网络技术,利用前2个月的量价关系进行inference(推理)&#xf…

基于BigQuant的量化策略实现

文章目录 一、BigQuant的重要模块说明 1.回测模块 二、基于技术指标的策略实现 1.库函数导入与全局变量初始化 2.每日逻辑函数编写 策略1: MACD金叉MA多头买入 策略2: 利用MA指标进行择股 3.策略结果展示 策略1: MACD金叉MA多头买入 策略2: MA择股 三、基于QP优化的策略实现 …

【定量分析、量化金融与统计学】纵向数据分析(1)——截面数据、时间序列数据和纵向数据

一、截面数据(Cross-sectional Data) 截面数据就是固定时间来分析其他变量同一时间内的关系。 例如:比较2022年的全国20个省市的GDP与人口,那么我们就是限定了2022年,去找GDP和人口的可能关系。 再例如:…

gdp数据分析

1 概述 本文主要分析china,usa,king,japan,russia5个国家的gdp,时间从1800-2040,后面的数据为预测数据,不准确。 2 绘制折线图 import pandas as pd import matplotlib.pyplot as pltdata pd.read_csv("line_animation.csv") x…

Python量化策略入门1-如何利用聚宽(JoinQuant)下载金融数据

[TOC]量化策略入门1-如何利用聚宽(JoinQuant)下载金融数据 前言 量化策略入门系列文章是本人学习股票量化笔记,最终输出结果希望是一个可在本地运行的回测框架,包含数据获取,数据处理,策略回测等。 本文主要为了介绍如何利用聚…

金 融 量 化 分 析 • 外 篇 • 绘 制 行 情 数 据 数 据 图

文章目录 前言一、k 线 图 是 什 么 ?二、K 线 图 结 构(1) 影 线 和 实 体(2) 十 字 线 四、 双 均 线 策 略(一)、金叉(二)、死叉(三)、均 线 策…

老板,摊牌了,不装了,pyechart高端实现我国GDP大数据图

pyechart实现我国GDP大屏展示图 from typing import Listimport pyecharts.options as opts from pyecharts.globals import ThemeType from pyecharts.commons.utils import JsCode from pyecharts.charts import Timeline, Grid, Bar, Map, Pie, Linedata [{"time"…

将《2020中国统计年鉴》中的GDP数据换算成不变GDP数据

文章目录 前言一、数据来源二、计算步骤1.理解一下公式和不同的指数国内生产总值指数(上一年100)国内生产总值指数(1978年100)现价GDP: 即当年价GDP,也叫名义GDP,包含价格浮动因素,不可比不变价…

【qstock量化】数据篇之宏观指标和财经新闻文本

qstock简介 qstock由“Python金融量化”公众号开发,试图打造成个人量化投研分析开源库,目前包括数据获取(data)、可视化(plot)、选股(stock)和量化回测(backtest)四个模块。其中数据模块(data&a…

使用Postman模拟发送get、post、delete、put请求

使用Postman模拟发送get、post、delete、put请求 现在的模拟发送请求插件很多,包括在idea上都自带了Test restful web service来模拟请求,但亲测postman更好用一些 今天来分享如何使用postman发送各种请求 1.下载 postman是谷歌的一款插件&#xff0…

使用hutool发送POST请求

之前使用Java程序发送请求都是使用的HttpURLConnection&#xff0c;不太方便&#xff0c;可以使用hutool封装好的方法。 引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.0.M4</…

10小时训练数据打造多语种语音识别新高度

本文联合撰写&#xff1a; 腾讯&#xff1a;吕志强&#xff0c;颜京豪&#xff0c;胡鹏飞&#xff0c;康健&#xff0c;阿敏巴雅尔 导语&#xff5c;在刚刚结束的NIST OPENASR评测中&#xff0c;TEG AI语音联合清华大学&#xff0c;刷新世界小语种语音识别比赛6项第一。从2000年…

Python开发智能语音机器人——小O同学

本篇代码存在部分错误 &#xff0c;现已经更新 &#xff08;https://blog.csdn.net/aqqwvfbukn/article/details/131277668&#xff09; 这次项目开发能按部就班顺利完成&#xff0c;主要是靠队友成功在软件的前期设计阶段&#xff0c;需求分析和用例设计起到了重要的作用。当…

微信小程序实现图林机器人聊天和百度AI语音识别的简单人工客服

用微信小程序实现简单的人工客服 最近在做软件工程的课程设计&#xff0c;选择性的做了微信小程序的简单的人工客服。在这里对该课程设计的原理和实现进行一个讲解&#xff0c;也算做一个总结和笔记&#xff0c;方便自己以后查看、复习和帮助大家的学习。 工具&#xff1a;微信…

Python实现语音识别(基于百度语音识别)

我是一名2016级电子信息工程的学生&#xff0c;这是第一次发博客&#xff0c;因为经常在这里查资料 &#xff0c;自己也应该贡献一点经验吧&#xff0c;也可以当是记录自己学习的过程吧。 最近在自学python&#xff0c;然后18年9月份正好python加入计算机二级&#xff0c;再然…

玩转百度语音识别,就是这么简单

http://www.cnblogs.com/bigdataZJ/p/SpeechRecognition.html 明后两天就是公司一年一度的Fedex Day了。我的理解就是技术界的头脑风暴&#xff0c;idea喷如泉涌的盛大节日。 对于这次活动每个人或者两三个人一组需要有个idea&#xff0c;针对当前的产品现状&#xff0c;提出自…

语音-小度自定义技能

文章目录 前言一、学习简介二、代码快速开发三、官网配置3.1 百度云CFC配置3.2 小度官网配置 四、测试4.1连接技能4.2 意图测试4.3 断开技能 前言 主要是为了记录下学习小度自定义技能的过程 一、学习简介 参考官网解释 自定义技能简介 二、代码快速开发 快速开发java 我…

人人都是绘画大师!微软必应接入DALL·E模型,文字生成图像!

机器之心编辑部 微软必应完善文字生成图像能力&#xff0c;Adobe 今日也发布 Firefly&#xff0c;杀入生成式 AI 这场游戏。 今晚实在是有些热闹。 一边英伟达 GTC 正在进行中&#xff0c;一边谷歌正式开放了 Bard 的测试&#xff0c;这里微软必应也不甘寂寞。 今日&#xff0c…

对比编程语言的四种错误处理方法,哪种才是最优方案?

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 作者&#xff1a;Andrea Bergia 译者&#xff1a;豌豆花下猫Python猫 英文&#xff1a;Error handling patterns 转载请保留作者及译者信息&#xff01; 错误处理是编程的一个基本要素。除非你写的是“hello world…

巴比特 | 元宇宙每日必读:不再盲目迷信硬件掘金,大厂XR集体后撤,业内人士建议多条腿走路,生态和内容才有更广阔市场...

摘要&#xff1a;据极点商业报道&#xff0c;元宇宙凉热之间&#xff0c;大厂集体收缩XR业务。是舆论定调的风口已过&#xff0c;还是如业内人士所言&#xff0c;进入理智探索时代&#xff1f;为何短短半年时间内&#xff0c;大厂们态度就发生了截然不同的变化&#xff1f;“与…