type
status
date
slug
summary
tags
category
icon
password
😀
量化策略的评价通常涉及夏普比率、最大回撤等等指标的计算,同时还需要我们绘制可视化图表和报告展示策略的能力。 这些工作不可或缺但分散了我们专注于策略本身的精力。 而Quantstats库提供了强大的策略业绩评价功能,用几行代码生成美观专业的策略评价报告。 希望通过这个教程能让你开始用上这个强大的开源业绩评价工具。

Quantstats

Quantstats是一个Python库,专为量化分析师和交易员设计,用于分析和可视化量化投资策略的性能。它提供了一系列的工具和函数,可以帮助用户生成各种性能指标和图表,从而对策略的表现进行深入的分析。
本文致力于让你快速启用Quantstas。
你也可以在项目的github仓库查看Quantstats的教程以及详细信息,同时了解项目的更新内容:
Quantstats提供了三个主要的功能
  1. quantstats.stats - 用于计算各种绩效指标,如夏普比率、胜率、波动性等。
  1. quantstats.plots - 用于可视化绩效、回撤、滚动统计、月度回报等。
  1. quantstats.reports - 用于生成指标报告、批量绘图以及创建可以保存为HTML文件的撕页报告。
通过本次教程,你也可以迅速绘制出下面这样的可视化报告:
notion image
【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 报告方法列表
  1. qs.reports.metrics(mode='basic|full", ...) - 展示 基本|完整 指标报告
  1. qs.reports.plots(mode='basic|full", ...) - 展示 基本|完整 图表报告
  1. qs.reports.basic(...) - 展示基本的图表和指标报告
  1. qs.reports.full(...) - 展示完整的图表和指标报告
  1. qs.reports.html(...) - 生成一个HTML文件,包含完整的图表和指标报告
指标名称
中文名称
作用描述
StringIO
内存字符串流
用于在内存中创建一个可写可读的流,通常用于在不直接保存文件的情况下生成报告内容。
basic
基础
生成包含基本性能指标和图表的报告,提供了策略表现的初步概览。
full
完整
生成包含所有可用性能指标和图表的完整报告,提供了对策略表现的深入分析。
html
HTML格式
生成一个完整的HTML格式报告,可以在网页浏览器中查看,便于分享和展示。
iDisplay
显示设置
可能用于配置报告显示的参数,如显示的图表数量或详细程度。
iHTML
HTML信息
可能用于定义报告中HTML页面的具体内容和结构。
metrics
指标
用于生成策略的性能指标报告,如收益率、风险比率等关键数值。
plots
图表
用于生成策略的性能图表报告,如收益率曲线、风险分布图等。
relativedelta
相对增量
可能用于计算和展示策略相对于某个基准或起始点的变动情况。
 
 
如何将 SQLite 作为你的 Nextjs 项目数据库如何设置NotionNext——对于初次使用它的人们