原创文章第75篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。

今天来说说量化投资里的风险、收益分析

一个策略好与不好,与基准如何对比,就需要对策略的风险、收益进行数量化分析。

最重要且最直观的两个指标:收益指标是“年化收益”,风险指标是“最大回撤”和“夏普比”(或者“卡玛比率”)。

01 quantopian三剑客

提及量化平台,不得不说quantopian。

尽管这个量化平台鼻祖已经退出了历史舞台,但国内的一众模仿者还在继续。如joinquant,ricequant,bigquant,优矿,果仁等等。

quantopian还给开源界留下了三大框架:zipline, pyfolio 和alphalens

zipline是quantopian的回测框架,功能同backtrader,我们的选型是bt,所以不多加讨论;pyfolio是量化结果分析与可视化框架,alphalens是因子分析框架,使用度都不错,今天我们重要说pyfolio。

02 empyrical

pyfolio背后计算量化指标的库叫empyrical,小而经典,我们先说说它。

安装比较简单:pip install empyrical

它依赖numpy和pandas,输入的参数主要是returns(pd.Serids)格式,即收益率序列即可。

import numpy as np
import pandas as pdfrom empyrical import max_drawdown, sharpe_ratio,annual_return
import empyrical
print(dir(empyrical))df = pd.read_csv('000300.sh.csv')
returns = df['pct_chg']/100
mdd = max_drawdown(returns)
sharpe = sharpe_ratio(df['pct_chg']/100)
a_return = annual_return(returns)print('累计收益:',empyrical.cum_returns_final(returns))
print('年化收益:',empyrical.annual_return(returns))
print('最大回撤:',empyrical.max_drawdown(returns))
print('夏普比', empyrical.sharpe_ratio(returns))
print('卡玛比', empyrical.calmar_ratio(returns))

print('omega',empyrical.omega_ratio(returns))

可以看出,沪深300指数年化收益8.1%,最大回撤-72%,夏普比0.43等等。

03 pyfolio

安装同样简单:pip install pyfolio

使用这个安装会报bug——“AttributeError: ‘numpy.int64‘ object has no

attribute ‘to_pydatetime‘

可以使用这个线上github的版本:

pip install git+https://github.com/quantopian/pyfolio

两行代码:

import pyfolio as pf

ts = pf.create_full_tear_sheet(returns)

与刚才的计算结果一致,只是呈现在图表里,因为pyfolio背后调用的就是empyrical。

最大的五次回撤期:

都发生在2006-2008,就是08年的金融危机期间。

04 与backtrader整合

backtrader框架内置了兼容pyfolio的分析器,添加之后,可以从结果得到收益率,仓位,交易等信息,可以create_full_tear_sheet来分析。

cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')
strats = cerebro.run()
strat0 = strats[0]
pyfolio = strats.analyzers.getbyname('pyfolio')
returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
import pyfolio as pf

pf.create_full_tear_sheet(returns)

很多教程有一个误区,说pyfolio只能在jupyter notebook环境下使用。这是不对

的,应该说在jupyter notebook下交易最好,可以显示表格数据。

在console模式下,使用matplotlib的pyplot可以正常绘图,但不能绘制表格。

import matplotlib.pyplot as plt
plt.show()

这里我的建议是直接使用empyrical来显示结果。

使用backtrader内置的analyzer,需要一个个添加,一个个取结果,但常用的指标

,其实通过returns可以直接算出来。

def show_result_empyrical(self, returns):import empyricalprint('累计收益:', empyrical.cum_returns_final(returns))print('年化收益:', empyrical.annual_return(returns))print('最大回撤:', empyrical.max_drawdown(returns))print('夏普比', empyrical.sharpe_ratio(returns))print('卡玛比', empyrical.calmar_ratio(returns))print('omega', empyrical.omega_ratio(returns))

与内置的计算结果是一模一样的:

小结

强烈建议,使用pyfolio来分析backtrader的结果,包括收益,风险,以及交易,

订单信息都可以。但pyfolio对于jupyter notebook友好,对于matplotlib环境,

无法绘制表格。

明天我们在pyfolio的基础上,使用quantstats来显示表格数据和可视化。

量化投资里的风险收益分析与可视化:empyrical和pyfolio实战,与backtrader整合相关推荐

  1. R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入、生存对象生成、ggsurvplot可视化参数配置、设置、可视化对比

    R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入.生存对象生成.ggsurvplot可视化参数配置.设置.可视化对比 目录 R语言使用survminer包生 ...

  2. 缠论 python 量化_【Python量化投资】基于技术分析研究股票市场

    二 我们将从Web数据来源读取历史指数水平信息,并未一个基于趋势信号的交易系统实现简单的事后验证.但是,首先需要数据才能开始工资,这里我们主要靠pandas库,因为NumPy库比较常用,所以还是把该库 ...

  3. 量化投资之风险指标分析(alpha、beta、sharpe等)

    很多风险指标虽然经常在各种回测平台中见到,但是它们背后的一些计算方法以及应用背景并没有认真研究过,所以打算整理下. 整理的几种风险指标摘自聚宽的回测平台:https://www.joinquant.c ...

  4. 如何利用ChatGPT学习量化投资?

    引言 最近,ChatGPT持续火了很长时间,占领各大热点和头版头条,成为A股开年以来最大的热点之一.ChatGPT是OpenAI开发的一种语言生成模型,可以理解为智能问答机器人.最近围绕量化投资在上面 ...

  5. 【方法论述】量化投资——神话、黑箱与真谛

    编者语:文艺复兴基金的创始人西蒙斯(Jim Simons)是数学教授,他领导的量化对冲基金长期超越市场,是世界上最成功的对冲基金之一.旗下的"大奖章基金"(Medallion Fu ...

  6. Python量化投资——投资组合的评价和可视化(上):计算收益率、波动率、最大回撤、阿尔法alpha、贝塔beta、夏普率Sharp等指标【源码+详解】

    投资组合的评价和可视化(上)--评价指标的计算 投资结果评价 本文示例数据下载 投资过程回顾 基于收益的投资组合评价 收益率.年化收益.每日收益率 月度历史收益率 基于风险度量的投资组合评价 Vola ...

  7. 股票价格趋势预测与量化投资案例可视化演示系统(附代码)

    摘要 随着全球经济与股市的快速发展,股票投资成为了民众们常用的理财方式之一.近年来,量化投资凭借其优良的纪律性.准确性.时效性和系统性等优势受到越来越多的关注.与西方成熟市场相比,我国量化投资还处于起 ...

  8. 股票量化投资出现的主要原因分析

    阅读原文: http://club.jr.jd.com/quant/topic/1086603 京东金融量化交流群:417082141 量化交易的出现离不开如下几个主要原因:现代金融理论的发展,计算机 ...

  9. 1、股票交易及量化投资回测分析系统的数据库设计-5

    在阅读文章前,请读者朋友认真阅读免责声明: 免责声明:本人所发表的所有文章.资源.知识等内容(包括免费.付费等)旨在向广大读者介绍我的职业生涯中积累的一些经验.知识等内容,受个人水平所限这些知识.经验 ...

最新文章

  1. 2015.11.11
  2. java jar包的路径
  3. linux内核中符号地址的获取
  4. Vue eslint 团队代码规范
  5. 使用Java和Scala将Play Framework 2应用程序部署到Openshift
  6. 利用Pandas库进行简单的数据分析(数据清洗)
  7. AutoCAD2000~2010完整版下载地址
  8. Linux(ubuntu18.04)安装eclipse教程
  9. 如何查询本机ip地址
  10. mysql.sock被删除_mysql.sock文件丢失被删除解决方法
  11. 【LeetCode】第934题——最短的桥(难度:中等)
  12. 办理营业执照注册要什么费用
  13. Keepalived源码、yum安装-高可用(主备、主主)场景
  14. 漫威java_10年漫威,到底有多少角色。
  15. 【STM32Cube】学习笔记(二):超声波传感器
  16. 使用libusb读取鼠标数据
  17. Git学习————rm删除文件与文件找回
  18. xls文件的上传和下载
  19. Pentest WiKi Part1 信息收集
  20. IPSEC ×××连连看

热门文章

  1. 哈希结构(图文详解)【哈希表,哈希桶,位图,布隆过滤器】
  2. 学什么计算机语言前景好,学什么计算机语言就业前景最好啊
  3. MRP、MRPII 和ERP
  4. python get dummies_python中的get_dummies实战
  5. 购买华为云的学生服务器对于学生是否有用?
  6. 百度网盘下载限速破解-Mac版
  7. 复制小米手机Redmi Note 9 Pro中的录音文件到电脑端(phone到pc)
  8. amd r7 200 linux驱动,AMD Radeon R7 200Seres显卡不能驱动的问题!
  9. https://gist.github.com/nathanielove/40c1dcac777e64ceeb63d8296d263d6d
  10. 你想知道的网易云音乐推荐架构解析,都在这里!