问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Quantstats量化策略分析库使用教程

创作时间:
作者:
@小白创作中心

Quantstats量化策略分析库使用教程

引用
1
来源
1.
https://www.hsawana9.com/article/quantstats-tutorial-starter

量化策略的评价通常涉及夏普比率、最大回撤等等指标的计算,同时还需要我们绘制可视化图表和报告展示策略的能力。 这些工作不可或缺但分散了我们专注于策略本身的精力。 而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>.(...)

的方法,使用qs库提供的各种参数

qs.

  • 声明quantstats库

<stats|plot|reports>.

  • 我们之前提到的三大方法

.(...)

  • 方法命令和他们的参数

前两个比较好理解,接下来我们看看如何查找可用的方法

查看所有可用方法

查看所有的

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 相对增量 可能用于计算和展示策略相对于某个基准或起始点的变动情况。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号