type
status
date
slug
summary
tags
category
icon
password
量化策略的评价通常涉及夏普比率、最大回撤等等指标的计算,同时还需要我们绘制可视化图表和报告展示策略的能力。
这些工作不可或缺但分散了我们专注于策略本身的精力。
而Quantstats库提供了强大的策略业绩评价功能,用几行代码生成美观专业的策略评价报告。
希望通过这个教程能让你开始用上这个强大的开源业绩评价工具。
Quantstats
Quantstats是一个Python库,专为量化分析师和交易员设计,用于分析和可视化量化投资策略的性能。它提供了一系列的工具和函数,可以帮助用户生成各种性能指标和图表,从而对策略的表现进行深入的分析。
本文致力于让你快速启用Quantstas。
你也可以在项目的github仓库查看Quantstats的教程以及详细信息,同时了解项目的更新内容:
Quantstats提供了三个主要的功能
quantstats.stats
- 用于计算各种绩效指标,如夏普比率、胜率、波动性等。
quantstats.plots
- 用于可视化绩效、回撤、滚动统计、月度回报等。
quantstats.reports
- 用于生成指标报告、批量绘图以及创建可以保存为HTML文件的撕页报告。
通过本次教程,你也可以迅速绘制出下面这样的可视化报告:
【report】
1. 安装和启动
我们通常在jupyternotebook文件中运行我们的代码,你可以直接使用Anaconda中的jupyternotebook,也可以用vscode创建一个ipynb后缀的文件,如
example.ipynb
然后创建一个代码块,运行下述指令安装Quantstats仓库:
运行成功后,我们需要先运行一些配置:
2. 准备收益序列
在大多数情况下,qs各方法的输入都是一份日收益率序列。它应该:
日期
作为索引,收益率
作为值列。
- 是一个pandas的
series
对象。 你可以自己创建一个符合这些要求的收益率序列,例如从你的量化策略结果中提取收益率列。
在这里,我们简单地用单个股票的收益率作为我们的策略收益率,即“买入并持有”。
方法1 qs.utils.download_returns
qs为我们提供了一个快速获取单只股票日收益率的方法:
不过,这个方法用到了yahofinance,你可以测试能否使用yahofinance的服务
查看stock
方法2 Akshare
也可以从其他渠道获取股票日收益率数据
我们用一个免费的交易数据获取库Akshare来获取meta股票的日收益率,那里也有其他获取交易数据的接口
安装akshare包
运行下列代码获取
stock
查看
stock
3. 生成快照
通过
qs.plots.snapshot()
方法,我们可以快速查看策略的累计收益率走势、回撤以及收益率分布情况。这是常用的plots生成图表方法之一,后面我们会讲如何尝试更多图表。
4. 生成报告
生成报告是最令人兴奋的部分,我们只要传入“目标日收益率序列”和“业绩基准”两个参数就可以生成我们开头看到的那份可视化业绩报告。
- 收益率序列我们用刚才准备好的
stock
- 业绩基准可以传入另一个日收益率序列或者股票名称
在这里,我们可以输入标普500指数的名称“SPY”来作为业绩基准。
启动!
更多指标和更多尝试
指标、图表、报告,这三个主要功能还有更多可以使用的内容。接下来我们来探索如何查看然后尝试这些指标。在最后,我也会给出几份表格,快速浏览所有可以使用的内容.
你可以直接按照
qs.<stats|plot|reports>.<method>(...)
的方法,使用qs库提供的各种参数qs.
- 声明quantstats库
<stats|plot|reports>.
- 我们之前提到的三大方法
.<method>(...)
- 方法命令和他们的参数
前两个比较好理解,接下来我们看看如何查找可用的方法
查看所有可用方法
查看所有的
qs.stats
指标方法查看所有的
qs.plot
图表方法查看所有的
qs.reports
图表方法方法速览
quantstats.stats 指标方法列表
指标名称 | 中文名称 | 作用 |
avg_loss | 平均亏损 | 投资策略在亏损期间的平均损失。 |
avg_return | 平均收益率 | 投资策略在一定时期内的平均收益。 |
avg_win | 平均获胜 | 投资策略在盈利期间的平均收益。 |
best | 最佳表现 | 投资策略在特定时间段内的最佳表现。 |
cagr | 年化复合增长率(CAGR) | 投资策略的年化复合增长率,用于衡量长期投资的增长潜力。 |
calmar | 卡尔玛比率 | 投资策略的收益与最大回撤之比,衡量风险调整后的收益。 |
common_sense_ratio | 常识比率 | 一种衡量投资策略表现的指标,考虑了盈利和亏损的概率。 |
comp | 比较 | 对比投资策略与其他策略或基准的表现。 |
comparesum | 比较总结 | 对投资策略与其他策略或基准的比较结果进行总结。 |
conditional_value_at_risk | 条件风险价值(CVaR) | 在给定置信水平下,预期损失超过某个阈值的平均额外损失。 |
consecutive_losses | 连续亏损 | 投资策略连续亏损的次数。 |
consecutive_wins | 连续获胜 | 投资策略连续盈利的次数。 |
cpc_index | CPC指数 | 一种衡量投资策略表现的指标,考虑了盈利和亏损的频率及幅度。 |
cvar | 条件风险价值(CVaR) | 与CVaR相同,表示在给定置信水平下,预期损失超过某个阈值的平均额外损失。 |
drawdown_details | 回撤详情 | 提供投资策略在不同回撤期间的详细信息。 |
expected_return | 预期收益率 | 投资策略在未来某一特定时间段内预期的平均收益。 |
expected_shortfall | 预期短缺 | 投资策略在特定时间范围内可能遭受的最大损失。 |
exposure | 风险敞口 | 投资策略在特定资产或市场上的敞口大小,反映市场风险的敏感度。 |
gain_to_pain_ratio | 盈亏比 | 投资策略的盈利与亏损之比。 |
geometric_mean | 几何平均收益率 | 投资策略在不同时间段的复合平均收益率。 |
ghpr | 几何收益率 | 与几何平均收益率相同,用于衡量投资策略的长期复合增长。 |
greeks | 希腊字母指标(风险指标) | 一系列衡量期权价格变动的指标,如Delta、Gamma等。 |
implied_volatility | 隐含波动率 | 根据当前期权价格推算出的标的资产未来波动率的预期。 |
information_ratio | 信息比率 | 衡量投资策略相对于基准指数的超额收益与跟踪误差之比。 |
kelly_criterion | 凯利准则 | 一种资金管理策略,旨在最大化长期资本增长。 |
kurtosis | 峰度 | 衡量收益率分布的尖峰程度,即分布尾部厚度。 |
max_drawdown | 最大回撤 | 投资策略在特定时间段内从最高点到最低点的最大跌幅。 |
monthly_returns | 月收益率 | 投资策略在每个月的收益率。 |
outlier_loss_ratio | 异常亏损比 | 投资策略中异常亏损与总亏损之比。 |
outlier_win_ratio | 异常获胜比 | 投资策略中异常盈利与总盈利之比。 |
outliers | 异常值 | 投资策略中的异常高或低的收益率。 |
payoff_ratio | 收益比 | 投资策略的收益与风险之比。 |
profit_factor | 利润因子 | 投资策略的总盈利与总亏损之比。 |
profit_ratio | 盈利比 | 投资策略的盈利交易与总交易之比。 |
r2 | 决定系数 | 衡量回归模型解释的方差占总方差的比例。 |
r_squared | 决定系数 | 与R²相同,衡量回归模型的拟合优度。 |
rar | 风险调整后的收益率 | 投资策略的收益率与风险之比,考虑了风险因素。 |
recovery_factor | 恢复因子 | 衡量投资策略从最大回撤中恢复的速度。 |
remove_outliers | 移除异常值 | 从投资策略的表现中排除异常高或低的收益率。 |
risk_of_ruin | 破产风险 | 投资策略在特定时间段内达到某一损失水平的概率。 |
risk_return_ratio | 风险收益比 | 投资策略的预期收益与风险之比。 |
rolling_greeks | 滚动希腊字母指标 | 随时间滚动计算的期权希腊字母指标。 |
ror | 风险调整后的收益率 | 与RAR相同,衡量投资策略的风险调整后的收益。 |
sharpe | 夏普比率 | 投资策略的超额收益与风险之比,衡量风险调整后的收益。 |
skew | 偏度 | 衡量收益率分布的不对称性。 |
sortino | 索提诺比率 | 投资策略的超额收益与下行风险之比,类似于夏普比率,但只考虑负收益的波动。 |
adjusted_sortino | 调整后的索提诺比率 | 考虑了投资策略的杠杆效应后的索提诺比率。 |
tail_ratio | 尾部比率 | 衡量投资策略在极端情况下的表现,通常与价值在风险(VaR)或条件风险价值(CVaR)一起使用。 |
to_drawdown_series | 回撤序列 | 投资策略在不同时间段内的回撤序列。 |
ulcer_index | 溃疡指数 | 衡量投资策略的下行风险和最大回撤对投资者心理影响的指标。 |
ulcer_performance_index | 溃疡表现指数 | 综合考虑投资策略的收益和最大回撤,用于评估投资者可能感受到的压力。 |
upi | 未定义 | 未提供具体信息,可能是指某种特定的投资策略性能指标。 |
utils | 工具函数 | 可能是指用于计算或分析投资策略性能的一系列工具函数。 |
value_at_risk | 风险价值(VaR) | 在给定置信水平和时间范围内,投资策略可能遭受的最大损失。 |
var | 风险价值(VaR) | 与VaR相同,表示在给定置信水平和时间范围内,投资策略可能遭受的最大损失。 |
volatility | 波动率 | 投资策略收益率的标准差,衡量投资策略的波动性和风险。 |
win_loss_ratio | 盈亏比 | 投资策略的盈利交易与亏损交易之比。 |
win_rate | 胜率 | 投资策略盈利交易的比例。 |
worst | 最差表现 | 投资策略在特定时间段内的最差表现。 |
quantstats.plot 图表方法列表
指标名称 | 中文名称 | 作用 |
daily_returns | 日收益率 | 显示投资组合或资产每天的收益率变化,用于分析短期表现和波动性。 |
distribution | 分布图 | 展示数据的分布情况,通常用于概率分布或收益率分布分析。 |
drawdown | 最大回撤 | 表示投资组合或资产从峰值下跌到下一个谷底的最大跌幅,用于衡量风险。 |
drawdowns_periods | 回撤期 | 指投资组合或资产经历的回撤期,即从峰值下跌到恢复原值所需的时间。 |
earnings | 收益 | 显示投资组合或资产在一定时期内的盈利情况。 |
histogram | 直方图 | 一种统计报告图,用于展示数据分布的图形表示,类似于柱状图。 |
log_returns | 对数收益率 | 收益率的自然对数,用于分析投资的复合增长情况。 |
monthly_heatmap | 月度热力图 | 以颜色深浅表示投资组合或资产每月的表现,颜色越深表示表现越好。 |
returns | 收益率 | 表示投资组合或资产在一定时期内的收益情况。 |
rolling_beta | 滚动贝塔 | 衡量投资组合相对于基准指数的市场风险敏感度,随时间滚动计算。 |
rolling_sharpe | 滚动夏普比率 | 衡量投资组合风险调整后的超额回报,随时间滚动计算。 |
rolling_sortino | 滚动索提诺比率 | 类似于夏普比率,但考虑的是投资组合的下行风险而非总风险。 |
rolling_volatility | 滚动波动率 | 投资组合或资产收益率波动的滚动标准差,用于衡量风险。 |
snapshot | 快照 | 某一特定时间点的投资组合或资产的详细情况,如持仓、收益率等。 |
yearly_returns | 年收益率 | 显示投资组合或资产在一年内的收益率变化,用于年度表现评估。 |
quantstats.report 报告方法列表
qs.reports.metrics(mode='basic|full", ...)
- 展示 基本|完整 指标报告
qs.reports.plots(mode='basic|full", ...)
- 展示 基本|完整 图表报告
qs.reports.basic(...)
- 展示基本的图表和指标报告
qs.reports.full(...)
- 展示完整的图表和指标报告
qs.reports.html(...)
- 生成一个HTML文件,包含完整的图表和指标报告
指标名称 | 中文名称 | 作用描述 |
StringIO | 内存字符串流 | 用于在内存中创建一个可写可读的流,通常用于在不直接保存文件的情况下生成报告内容。 |
basic | 基础 | 生成包含基本性能指标和图表的报告,提供了策略表现的初步概览。 |
full | 完整 | 生成包含所有可用性能指标和图表的完整报告,提供了对策略表现的深入分析。 |
html | HTML格式 | 生成一个完整的HTML格式报告,可以在网页浏览器中查看,便于分享和展示。 |
iDisplay | 显示设置 | 可能用于配置报告显示的参数,如显示的图表数量或详细程度。 |
iHTML | HTML信息 | 可能用于定义报告中HTML页面的具体内容和结构。 |
metrics | 指标 | 用于生成策略的性能指标报告,如收益率、风险比率等关键数值。 |
plots | 图表 | 用于生成策略的性能图表报告,如收益率曲线、风险分布图等。 |
relativedelta | 相对增量 | 可能用于计算和展示策略相对于某个基准或起始点的变动情况。 |
- 作者:Sawana H
- 链接:https://tangly1024.com/article/quantstats-tutorial-starter
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。