首先,说明一下我们的数据,为了一步一步的明确pyfolio的功能和一些结果,我们首先选取我们的策略是0.3的中证500指数、0.3的中证1000指数和0.4的上证50指数,也就是我们的组合的收益就是这三个指数的加权收益。换句话说,我们是把这三个指数当成了三个资产。benchmark是沪深300,后续有需要的时候,回依次加入其它的东西。

我们先来看一下我的return ser文件:

date,zz500,zz1000,sz50,return
2016/2/22,0.020771931,0.020462588,0.024827323,0.022301285
2016/2/23,-0.005443023,-0.006005945,-0.011851228,-0.008175182
2016/2/24,0.006678676,0.000874356,0.005846597,0.004604548
2016/2/25,-0.07936297,-0.079150999,-0.053290504,-0.068870392
2016/2/26,0.004067755,-0.00464371,0.011794361,0.004544958

在notebook中写入下面代码。

import pyfolio as pf
import pandas as pd
%matplotlib inlinereturn_ser = pd.read_csv('return_ser.csv')
return_ser['date'] = pd.to_datetime(return_ser['date'])
return_ser.set_index('date', inplace=True)
pf.create_returns_tear_sheet(return_ser['return'])

这里,我们最简单的使用了一个creat_returns_tear_sheet。然后,我们来看一下结果:

这个比较好理解,就是我们策略收益的开始和结束,以及一共跨度的时间。

然后是整个return时间序列能够计算出来的指标。大部分比较常见,解释一下比较少见的。首先是stability,也就是所谓的稳定性。其实很简单,就是时间增量对累计净值的解释力度是多少,也就是回归的r平方。这样说有点抽象,我们简单解释一下。

假设我们的daily return的净值曲线是这样的:

而这个黑线则是随着时间等量递增的。那么净值和这条直线回归的R方就是所谓的稳定性。

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

然后是回测的情况:

后面的图相对而言就比较简单了,不用解释就可以看懂,直接放上来。

接下来,我们好好研究一下这个return tear sheet的参数。

def create_returns_tear_sheet(returns, positions=None,transactions=None,live_start_date=None,cone_std=(1.0, 1.5, 2.0),benchmark_rets=None,bootstrap=False,turnover_denom='AGB',header_rows=None,return_fig=False)

我们看到这个函数的签名是这样的。

1、live_start_date

我们先来研究几个简单的吧,比如第二个,live_start_date,这个参数的意思就是,你的return啥时候是开始实盘的?比如我们上面这一串return,假设我们在2018年6月份之后是实盘,而前面是模拟盘或者是回测的结果,那么我们就可以这样设置:

live_start_date=‘2018-06-01’

我们看一下结果:

我们发现多了几个out of sample的东西,也就是说,各种指标开始区分样本内外了,理论上我们可以根据这个来看一下我们的策略有没有过拟合。如果样本内外的差异很大,那么大概率这就是过拟合了。

图片中,样本外也会被标记出来,而且会给出不同的标准差的区间。那么,这个标准差是怎么决定的呢?在pyfolio里面有这样一段注释:

Determines the upper and lower bounds of an n standard deviation
cone of forecasted cumulative returns. Future cumulative mean and
standard devation are computed by repeatedly sampling from the
in-sample daily returns (i.e. bootstrap). This cone is non-parametric,
meaning it does not assume that returns are normally distributed.

说白了就是用历史的dailyreturn通过bootstrap来进行计算的。所谓的bootstrap其实就是有放回的抽样。而标准差倍数则由cone_std=(1.0, 1.5, 2.0)这样一个tuple来决定。

2、benchmark

然后,我们在加入benchmark试一试看看有什么变化:

pf.create_returns_tear_sheet(return_ser['return'], live_start_date='2018-06-01', benchmark_rets=return_ser['bench'])

我们看到,多了beta和alpha

图上也是,多了一个benchmark:

同时也多了一个滚动的beta

pyfolio教程2——第一个returns_tear_sheet相关推荐

  1. Scott Mitchell 的ASP.NET 2.0数据教程之一: 创建一个数据访问层

    原文 | 下载本教程中的编码例子 | 下载本教程的英文PDF版 导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研 ...

  2. 下拉加载 实现 java_[Java教程]iscroll5实现一个下拉刷新上拉加载的效果

    [Java教程]iscroll5实现一个下拉刷新上拉加载的效果 0 2016-08-24 15:00:08 直接上代码!!! * { margin: 0; padding: 0; } ul, li { ...

  3. java写七彩文字_【PS精选案例教程】创建一个漂亮的七彩文字

    原标题:[PS精选案例教程]创建一个漂亮的七彩文字 效果图: 步骤1. 新建一个文档(大小随意) 步骤2. 滤镜→渲染→云彩 步骤3. 可以按Ctrl+Alt+F增加效果 步骤4. Ctrl+J复制一 ...

  4. Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库

    [homebrew 系列文章] HomeBrew常规使用教程 Homebrew进阶使用教程(一) Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库 Homebrew进阶使用教程 ...

  5. html怎么制作小黄人,【PS教程】制作一个小黄人

    原标题:[PS教程]制作一个小黄人 小黄人已经是个无需介绍的人气角色,呆萌的外表让他成为了践踏主角的超级巨星,在全球拥有无数粉丝,作为喜欢小黄人的设计师,是不是一定要懂得3D软件才能做出小黄人哩?NO ...

  6. Django教程:第一个Django应用程序(1部分)

    2019独角兽企业重金招聘Python工程师标准>>> Django教程:第一个Django应用程序(1部分) 请看实例.本教程中将创建一个基本的投票应用. 它由两部分组成:查看投票 ...

  7. 【硬核教程】作为一个程序员,怎么做才能母亲在母亲节感到双倍快乐

    [硬核教程]作为一个程序员,怎么做才能母亲在母亲节感到双倍快乐 母亲,是这个世上最伟大的人.她给我们生命,让我们来到这个花花世界. 其实作为程序员,一般毕业之后都会在大城市工作.别问为什么,问就是因为 ...

  8. dynamic web twain java_扫描识别工具Dynamic Web TWAIN使用教程:建立一个“Hello World”扫描页面...

    原标题:扫描识别工具Dynamic Web TWAIN使用教程:建立一个"Hello World"扫描页面 Dynamic Web TWAIN(www.evget.com)是一个专 ...

  9. [转]VS2010 教程:创建一个 WPF 应用程序 (第一节)

    [转]VS2010 教程:创建一个 WPF 应用程序 (第一节) http://msdn.microsoft.com/zh-cn/ff629048(zh-cn) Extended WPF Toolki ...

最新文章

  1. kubernetes要实现的目标——随机关掉一台机器,看你的服务能否正常;减少的应用实例能否自动迁移并恢复到其他节点;服务能否随着流量进行自动伸缩...
  2. python图形编程复选按钮和单选按钮详细说明_Python_tkinter_单选框(Radiobutton)与复选框(Checkbutton)...
  3. qt mysql查询中文相等_请教:Qt如何实现查询数据库中具有中文表名的表
  4. 学习《css世界》笔记之使用css实现凹凸效果
  5. linux下被遗忘的gpio_keys按键驱动
  6. JavaScript重难点解析1(数据类型——var、let、const区别,类型补充,“===”、“typeof”、“instanceof”区别,Symbol数据类型)
  7. html css 走马灯,纯css 实现跑马灯效果
  8. Powershell远程管理服务器客户端
  9. 郁闷,两个伤脑筋的power script 问题
  10. 【POJ 1860】Currency Exchange
  11. [渝粤教育] 西南科技大学 语言学概论(汉语言文学) 在线考试复习资料
  12. 网络编程(1)—— 基于linux系统的socket服务器端编程步骤
  13. 网站+云服务器+价格表,网站+云服务器+价格表
  14. 单片机测量PWM占空比的三种方法
  15. 转载nbsp;图像阈值选取
  16. html+css 炫彩流光按钮
  17. MySQL高性能:索引、锁、事务、分库分表如何撑起亿级数据
  18. css:字母hover文字加粗,盒子变宽,导致文字列表抖动
  19. 写作的意义,从一枚勋章开始
  20. 利用RSA非对称加密对文本信息进行加密

热门文章

  1. 【自学笔记】尚硅谷数据结构与算法Chapter 2 稀疏数组和队列
  2. win10录屏快捷键?电脑技能操作看这里!
  3. 基于AutoJs抖音极速版辅助App
  4. 类比C++ 学习Python的class
  5. 设计模式-代理模式 C#版本
  6. vba遍历字符串_VBA7种文档遍历法
  7. 20194616 第一次作业
  8. 西部数据移动硬盘检测与分区
  9. 反恐精英在线服务器名称,反恐精英1.6 国内服务器IP大全
  10. [随笔所想] 学英语打卡2000天碎碎念