分类
联系方式
  1. 新浪微博
  2. E-mail

QuantStats 量化投资组合分析

介绍

QuantStats 是一个提供投资组合分析功能的 Python 库,通过提供深入的分析和风险指标,让量化师和投资组合经理更好地了解他们的表现。

该框架主要由三部分组成:

  • quantstats.stats - 用于计算各种性能指标,如夏普比率,赢利率,波动率等。
  • quantstats.plots - 用于可视化性能,缩减,滚动统计,月度回报,等等。
  • quantstats.reports - 用于生成指标报告,批量绘图,以及创建可以保存为 HTML 文件。

在本文中重点记录如何将 QuantStats 引入 BackTrader,衡量策略的效果。

BackTrader 结合

通过下面代码实现对 BackTrader 策略生成 QuantStats 报告:

cerebro.addanalyzer(bt.analyzers.PyFolio, _name="PyFolio")
strategies = cerebro.run()
pyfolio = strategies[0].analyzers.getbyname("PyFolio")
returns, positions, transactions, gross_lev = pyfolio.get_pf_items()
returns.index = returns.index.tz_convert(None)
import quantstats

quantstats.reports.html(returns, output="stats.html", title="Strategy Report")

其中,使用了《BackTrader PyFolio 分析器》,并将分析器返回的 returns 传入 quantstats 即可。

报告效果图

生成的报告长这样:

生成的报告很长,指标很多,这只是其中的一小部分。

报告指标解读

图表指标:

指标 说明 备注
Cumulative Returns 累计收益率
Cumulative Returns(Log Scaled) 累计收益率(对数缩放)
EOY Returns 年终收益率
Distribution of Monthly Returns 每月收益分布
Daily Returns 日收益
Rolling Volatility(6-Months) 滚动波动率
Rolling Sharpe(6-Months) 滚动夏普比率
Rolling Sortino(6-Months) 滚动索提诺比率
Worst 5 Drawdown Period 5 次最大回撤
Underwater Plot 理解:只看亏损
Monthly Returns(%) 月收益热力图

列表指标:

指标 说明 备注
Risk-Free Rate 无风险利率
Time in Market 理解:持仓时间
Cumulative Returns 累计收益率
CAGR﹪ 复合年均增长率
Sharpe 夏普比率 描述资产收益对投资者所承担风险的补偿程度
Prob. Sharpe Ratio
Smart Sharpe
Sotino 索提诺比率 与夏普比率类似,区别在于区分波动好坏
Smart Sortino
Sortino/√2
Smart Sortino/√2
Omega Omega 比率 考虑收益的分布信息
Max Drawdown 最大回撤
Longest DD Days
Volatility (ann.) 波动率
Calmar 卡玛比率 衡量风险与回报关系
skew skew值 概率统计中衡量随机变量概率分布的不对称性
Kurtosis 峰度 正态分布的陡峭程度
Expected Daily
Expected Monthly
Expected Yearly
太多了,回头慢慢梳理……

网络资源

ranaroussi/quantstats: Portfolio analytics for quants, written in Python (github.com)

QuantStats:量化的投资组合分析 - 简书 (jianshu.com)

量化投资分析工具quantstats使用 | 诸葛说 (rchardzhu.github.io)

量化投资分析工具quantstats介绍及其在backtrader量化框架中使用

quantstats中英对照 – 宅 叔 劝 学 (weishadian.com)

常用量化回测数据/收益指标的一些说明