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量化框架中使用