1、前言

前些天发现FMZ策略回测结果输出的盈亏曲线结果比较简单,故想着是否获取收益结果数据后自己再进行处理,得到更详细的资金曲线评估报告,并且用图形可视化展示出来。着手把想法写出来的时候发现并不是那么容易,故想是否有人也有相同的想法,并且已经做出相应的工具呢?故上网搜罗了一圈,发现确实有这类工具,在GitHub上看了好几个项目,最终选择了pyfolio这个工具。

2、pyfolio是什么

pyfolio是一个由quantinc .开发的用于金融投资组合的性能和风险分析的Python库。它可以很好地与Zipline开源回溯测试库一起工作。quant还为专业人士提供全面管理的服务,包括Zipline、Alphalens、Pyfolio、FactSet数据等。pyfolio的核心是所谓的“ so-called tear sheet ”,它由各种各样的独立图组成,这些图提供了交易算法表现的综合图像。GitHub地址:https://github.com/quantopian/pyfolio

3、学习使用pyfolio

由于该工具网上的学习资料比较少,自己摸索了好些时间才会简单的使用。PyFolio API参考:https://www.quantopian.com/docs/api-reference/pyfolio-api-reference#pyfolio-api-reference 这里比较详细介绍了pyfolio的API,该平台可以做美股回测,回测结果可以直接通过pyfolio展示,我只粗略地学习了一下,貌似其他功能都挺强大的。

4、安装pyfolio

pyfolio的安装比较简单,按照GitHub上的说明安装即可。

5、FMZ回测结果通过pyfolio展示

好了介绍就到这了,开始进入正题。首先在FMZ获取回测资金曲线数据。

在回测结果的浮动盈亏图表中点击上图中全屏旁边的按钮,然后选择‘Download CSV’。获取到的CSV数据,格式如下图(文件名根据自己需求更改):

如果想要分析结果有比较的基准的话,则还需要准备一份交易标的的K线日线数据,当然如果没有K线数据只有收益数据也是可以分析的,只是有基准数据分析结果会多几个指标,例如:阿尔法(Alpha)、贝塔(Beta)等,下文按提供基准K线数据来写。

K线数据我们可以通过FMZ研究环境直接从平台获取:

数据准备完毕后,就可以写代码了。我们需要将获取到的数据进行处理,以使其符合pyfolio所需要的数据结构,然后调用pyfolio的create_returns_tear_sheet接口计算并输出结果。我们主要需要传入(returns,benchmark_rets=None,live_start_date=None)三个参数。

returns参数为必须的收益数据;

benchmark_rets为基准数据,不是必须的;

live_start_datelive_start_date,不是必须的,这个参数的意思就是,你的returns啥时候是开始实盘的?比如我们上面这一串returns,假设我们在2019-12-01之后是实盘,而前面是模拟盘或者是回测的结果,那么我们就可以这样设置:live_start_date = '2019-12-01'。通过设置该参数获得的结果,理论上我们可以分析一下我们的策略有没有过拟合。如果样本内外的差异很大,那么大概率这就是过拟合了。

我们可以在FMZ研究环境下实现该分析功能,也可以在自己本地实现,下面以在FMZ研究环境实现为例:

输出的分析结果:

6、结果解读

输出的结果数据比较多,我们需要静下心来学习一下这些指标都是啥意思,输出结果都是英文显示的,英文比较少我们对照着翻译来看还是比较容易理解的,下面我介绍几个我找到的对相关指标的介绍,明白了指标的意思,我们才能解读我们的策略状态。

年化收益(Annual return)

年化收益率是指把当前的收益率(日收益率、周收益率、月收益率等)换算成年收益率来计算的,是一种理论收益,并不是真正已经取得的收益率。年化收益率需要和年收益率区分开,年收益率是指策略执行一年的收益率,是实际的收益。

累计收益(Cumulative returns)

最容易理解的一个概念,策略收益也就是策略开始到结束,总资产的变化率。

年化波动率(Annual volatility)

年化波动率用来衡量投资标的的波动风险。

夏普率(Sharpe ratio)

描述的是策略在单位总风险下所能获得的超额收益。

最大回撤(Max Drawdown)

描述的策略最大的亏损情况。最大回撤通常越小越好。

欧米伽比率(Omega ratio)

另一种风险回报绩效指标。它相对于Sharpe比率的最大优势是-通过构造-它考虑了所有统计时刻,而Sharpe比率仅考虑前两个时刻。

索提诺比率(Sortino)

描述的是策略在单位下行风险下所能获得的超额收益。

每日风险价值(daily Value-at-Risk )

每日风险价值-另一个非常流行的风险指标。在这种情况下,这表明在95%的情况下,将头寸(投资组合)再保留1天,损失不会超过1.8%。

参考:https://towardsdatascience.com/the-easiest-way-to-evaluate-the-performance-of-trading-strategies-in-python-4959fd798bb3

Tail ratio

对daily return的分布选取95分位和5分位,然后相除取绝对值。本质的含义就是赚取的return比亏钱的大多少倍。

稳定性(stability)

也就是所谓的稳定性。其实很简单,就是时间增量对累计净值的解释力度是多少,也就是回归的r平方。这样说有点抽象,我们简单解释一下。

参考:https://blog.csdn.net/qtlyx/article/details/88724236

7、小小的建议

希望FMZ能够也能够增加丰富资金曲线的评价功能,并且增加历史回测结果的储存功能,这样能够更方便和更专业地展示回测结果,帮助大家创造出更优秀的策略。

8、感谢FMZ平台

让我在这里学到了很多量化知识以及各种技能,感谢小小梦老师、张超大神悉心指导!希望FMZ平台越来越好!本人菜鸟一枚,初次作文,还望大佬们多多指教。!

大漠综合工具取点阵显示不全_利用pyfolio工具评价回测资金曲线相关推荐

  1. 金融工程python报告期权_利用Backtrader进行期权回测之一:获取期权数据

    最近在学习一些期权方面的知识,希望有一个期权的回测环境,方便自己做一些测试.初步做了一些功课之后,打算从通达信软件获得期权数据,并使用backtrader进行回测.编程语言使用python. 下载期权 ...

  2. 如何写python脚本抓取数据并计算_【小工具】利用Python脚本从Gaussian计算结果中提取信息...

    1.前言 高斯(Gaussian)是一个功能强大的量子化学综合软件包,所有从事计算化学相关领域的科研工作者应该都使用或者了解过这个软件.它的输出文件(.log文件)是一个文本文件,可以利用文本工具打开 ...

  3. 天正坐标标注显示不全_广联达导入CAD图纸不显示怎么办?

    第一步,操作之前先点击CAD左上角,点开后有一个图形实用工具,点开有一个核查,输入y,然后核查完后,在框选输入purge,回车全部清理. 情况一:图纸导入不显示或者显示不全,但是在CAD里显示正常. ...

  4. html 横屏内容显示不全_为什么我的文本显示不全?

    在实际工作中,经常会遇到文本显示不全的情况,比如表格里的文本显示不全等情况,你一般是怎么操作呢?本期与大家分享几种常见的原因. 1.Word表格文本显示不全 如下图所示,表格里面的文本显示不全,这时该 ...

  5. visio对象放入word显示不全_办公人士必学visio技能 手把手教你使用visio绘制项目全景图!...

    Hi,大家好!我是爱踢汪.今天本汪想问问你用什么总结项目,Word.PPT还是视频?下面我们聊聊画图.画图固然是为了好看,视觉上的冲击加深印象.更重要的是,图像模型带来的"潜台词" ...

  6. word中图片为嵌入式格式时显示不全_打印Word图片显示不全 Word2007图片显示不全解决方法...

    打印Word图片显示不全 Word2007图片显示不全解决方法,平凡的世界平凡的你,努力学习使我们变得不平凡,今天要介绍的知识是打印Word图片显示不全的相关知识,你准备好学习打印Word图片显示不全 ...

  7. 8乘8led点阵显示数字_基于51单片机的8乘8LED点阵显示屏的设计

    1 基于单片机的 8*8LED 点阵显示屏的设计 随着单片机在各个领域的广泛应用,许多用单片机作控制驱动 LED 显示屏也应运产生.本系统设 计使用单片机 MCS-51 控制扫描方法实现 LED 点阵 ...

  8. word中图片为嵌入式格式时显示不全_图片在word中显示不全怎么处理_word图片显示不全怎么办-win7之家...

    我们在编辑word文档时,会需要插入一些图片来做为装饰或者用来标识,也会出现插入的图片显示不全的情况,要是遇到这种情况该怎么办,那么图片在word中显示不全要怎么处理呢,下面小编给大家分享图片在wor ...

  9. java cxf 工具_利用CXF工具开发WebService接口

    简单记录一下webservice接口开发以便供以后参考: 一.根据需求编写wsdl文件 WSDL的文件格式和语法我就不多说了,到网上百度一下,或者到W3CSchool去学习都可以,语法很简单,下面是我 ...

最新文章

  1. 堡垒机jumpserver集群部署
  2. 老司机 iOS 周报 #24 | 2018-06-25
  3. filter java 是单例的吗_JAVA 设计模式之 单例模式详解
  4. obs多推流地址_抖音obs推流直播怎么操作,抖音直播推流地址如何获取?
  5. 复选框全选效果,根据单个复选框的选择情况确定全选复选框是否被选
  6. 黄聪:CodeSmith和PowerDesigner的使用安装和数据库创建(原创系列教程)
  7. 在 CTreeCtrl 中枚举系统中的所有窗口!(II)
  8. JavaScript 基本语法及面试注意点
  9. Python界面程序实例:按钮漂移,用Python小套路来撩女神
  10. “瘟疫”笼罩下的物联网危与机
  11. FFT(FastFourier Transform,快速傅立叶变换)
  12. 拉丁正方形 java_LeetCode 221. Maximal Square 最大正方形(C++/Java)
  13. python爬虫系统知识_网络爬虫基础知识(Python实现)
  14. matlab数学建模-遗传算法基本原理
  15. ENVI/ArcGIS根据坐标位置提取影像DN值(批量)
  16. 7个实用的Python自动化代码,别再重复造轮子了
  17. vs2013 error C1083: 无法打开包括文件: SDKDDKVer.h: No such file or direc
  18. 中间件之实习四 Web Services 开发
  19. 也谈Eclipse未自动在gen目录下生成R.java
  20. 曲线救国!通过VirtualBox让Windows Server 2008 R2也用上蓝牙

热门文章

  1. 社群经济:如何利用社群做营销?
  2. 如何下载64位版本的eclipse 以及配置
  3. 《中国大学--博弈论》
  4. 搞清字符集和字符编码
  5. VS2013开发Windows服务项目
  6. Java面试题总结系列 Servlet
  7. C语言的本质(7)——C语言运算符大全
  8. hdu2112最短路径
  9. 分布式计算、网格计算和云计算
  10. Writing an ALSA Driver(二)