WeQuant教程—1.3 利用回测工具降低交易风险
该过程在业界被称为回测。回测是量化工作者常见的工作内容之一。
Note
很遗憾的是,回测跟实盘交易永远存在差距,再好的系统也无法回避。现在市面上有几个开源的回测引擎框架,虽然减少了回测的开发工作量,但或多或少都存在回测的误差。在此,我们优先介绍概念,其次介绍一些常见的规避或者补偿误差的方法,供读者在实践中使用。
回测工具有哪些功能?
历史交易过程和结果的模拟
顾名思义,回测当然是回顾一段时间,用既定的交易策略,向模拟的交易平台提交交易请求,然后统计交易的结果。
这样,一个策略到底能不能运作,是不是像想象中的那样运作(实战中,策略辞不达意的情况概率很大),运作的效果在特定的行情下是不是有预期的效果(不是所有策略都适用于所有行情,显而易见的事情),一目了然。
自动记账
如果每一笔交易都要自己手动记录交易结果,计算扣费,遇到限制条件还要进行异常处理,这个工作量是及其繁琐和容易出错的。一般来说,回测会有专门的记账功能,确保量化系统的交易请求能被正确处理。
回报分析
为了辅助回测人员对自身的策略效果建立一个客观的认识,回测往往附带一套指标系统,包括但不限于回报率、alpha、beta、夏普率、最大回撤等,通过这些指标,一个策略的收益情况、收益的相对好坏、收益的稳定和波动程度、最坏情况等,都可以得到一个参考,在常规的理解里,这些指标在实盘中依然有同样的表现水准(严格数学证明略)。
当然,为了分析的方便,回测还会提供基准参考与图形可视化功能,把市场的平均回报连同策略的回报按时间顺序用图形展示,能极大地具象化策略运作情况。
怎么使用回测工具?
回测工具有很多,这里只介绍我们推荐的相对简单可靠的方式。
回测工具与量化系统高度集成。在理想的情况下(参照我们设计的简单的量化系统),用户可以原样照搬量化系统里面的策略内容,并添加少量的系统变量设置,然后回测工具自动装载策略,加载回测情报系统,对回测的交易系统进行操作,记账。
这跟量化系统的执行逻辑非常相似,差别是:
- 情报系统是实时在更新,而回测数据系统提取历史数据;
- 交易系统会向交易平台提交交易请求,模拟交易记账系统则是在本地进行模拟撮合交易,记录结果;
- 回测系统有专门的分析结果。
有了这样的系统,重复地运行,不断地调整参数,找到你认为可以接受的结果为止,回测也不是那么难,对不对?
所以到底需要准备什么才能进行回测呢?
答:完整且规范的数据源,自动记账程序,和你想测试的策略。
可是这几件都不是省油的灯,要自己重头写一遍,基本就是《量化交易从入门到放弃》的故事原本了。
如果你一直读到这里,还对自己完成这样的任务抱有期待,WeQuant佩服你的坚持。
新手做回测时容易犯什么样的错误?
这里面学问很多,主要围绕如何降低回测的系统与人为误差,回头有机会再慢慢更新。
结语
回测是调优你的量化系统的比较有效的手段,不过有效的回测并不容易,也不是所有的场景都能通过回测解决。对于回测可以解决的问题,我们设计了一套简单的标准和配套工具,降低大家使用回测的门槛。请阅读下一篇。
WeQuant教程—1.3 利用回测工具降低交易风险的更多相关文章
- 在Mac上利用压测工具Jmeter-Suite进行一次压测实践的保姆级详细步骤(参考腾讯云文章)
参考的文章 压测工具Jmeter-Suite详细操作步骤 写此文的目的 由于我是刚开始接触kubernetes和jmeter,所以在学习过程中遇到了很多很多问题,同时我很烦恼为什么网上没有文章是从真正 ...
- WeQuant教程—1.2 从简单的量化系统开始
你大概知道量化的思想最早在古巴比伦人计算行星轨迹的时候就已经诞生(算术运算),后来借助古希腊的形式化逻辑的发展,人们日益能从量化的思想中提炼和描述自然规律并运用到生产之中.不过,基于量化的思想打造一个 ...
- WeQuant教程—1.4 实践教学:比特币量化定投
在wequant.io,为了让读者能直接体验量化系统的魅力,我们用前面的思路,实现了一套完整的量化系统和回测工具,这个系统非常简单,用户只需要把交易意志用策略表达出来,系统就可以自己完成交易效果的回 ...
- 量化投资策略:常见的几种Python回测框架(库)
量化投资策略:常见的几种Python回测框架(库) 原文地址:http://blog.csdn.net/lawme/article/details/51454237 本文章为转载文章.这段时间在研究量 ...
- WeQuant比特币交易策略回测记录
程序参数 PARAMS = { "start_time": "2017-02-01 00:00:00", "end_time": " ...
- 量化投资:第8节 A股市场的回测
作者: 阿布 阿布量化版权所有 未经允许 禁止转载 abu量化系统github地址(欢迎+star) 本节ipython notebook 之前的小节回测示例都是使用美股,本节示例A股市场的回测. 买 ...
- ab压测工具的一些个人见解
ab压测工具(linux版)由于网上教程一大把,今天也按照教程好好研究了一番,下面写一下对此工具的一些个人见解,如有不妥,希望一起探讨. 优点: 1.小巧. 2.理论支持655350并发数.实际3 ...
- web压测工具http_load原理分析
一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ ...
- 前端教程&开发模块化/规范化/工程化/优化&工具/调试&值得关注的博客/Git&面试-资源汇总
内容精简 资源这么多,多看看多学习再总结肯定是好的.多读读就算看重了不算浪费时间,毕竟一千个读者就有一千个林黛玉,还有温故而知新,说不定多读一些内容,就发现惊喜了呢.不过,在此也精简一些内容,就1~2 ...
随机推荐
- ARTS-week8
Algorithm 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字.如果,我们将这两个数相加起来,则会返回一个新的 ...
- 项目Beta冲刺(团队) ——随笔集合
课程名称:软件工程1916|W(福州大学) 作业要求:项目β冲刺(团队) 团队名称:葫芦娃队 作业目标:汇总这次冲刺项目的所有随笔文件. 队员学号 队员昵称 博客地址 041602421 der hi ...
- 使用 application.properties 中配置的属性,举例:@Value("${server.port}")
使用 application.properties 中配置的属性:@Value 注解. @RestController public class HelloWorldController { @Val ...
- 阿里巴巴Java开发手册(格式规约篇)——查自己的漏-补自己的缺
(三) 格式规约 1. [强制]大括号的使用约定.如果是大括号内为空,则简洁地写成{}即可,不需要换行:如果是非空代码块则: 1) 左大括号前不换行.行. 2) 左大括号后换行. 3) 右大括号前换行 ...
- mysql使用过程中出现的问题总结
1.mysql命令窗口输入密码后窗口闪退 密码输入错误.(其他暂不清楚) 2. 出现这个错误的原因是,数据库的编码格式不一致. https://www.cnblogs.com/lsr-flying/p ...
- MySQL备份python代码
import os, time, pymysql, shutil from apscheduler.schedulers.blocking import BlockingScheduler # 定时任 ...
- 排序算法-选择排序(Java)
package com.rao.linkList; import java.util.Arrays; /** * @author Srao * @className SelectSort * @dat ...
- HTTP Status 500 - javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag
我在项目中导入了jar,还是不能使用EL表达式,一运行就出现了下面的额错误: org.apache.jasper.JasperException: javax.servlet.ServletExcep ...
- PHP 判断时间段 至今过了多长时间
/** * * @param timestamp $time 输入时间 * @return str $str 输入时间与现在时间差的中文 */ function wordTime($time) { / ...
- LeetCode 916. Word Subsets
原题链接在这里:https://leetcode.com/problems/word-subsets/ 题目: We are given two arrays A and B of words. E ...