【从零开始玩量化13】quantstats:分析你的量化策略

背景

之前总结了一些获取量化数据的途径,数据是一个量化策略的“原材料”,接下来要考虑的问题就是如何使用这些数据。

本文,介绍一个量化指标分析工具quantstats,利用它可以很方便的分析你的策略。

Github地址:https://github.com/ranaroussi/quantstats

他的作者是Ran Aroussi,同时也是yfinance的作者,在开源量化领域,也是名声响当当。目前就职于tradologics,一家国外的程序化交易云平台。不过,如果你是一个A股交易者,这些可能也用不太上,可以用的就只有quantstats

安装

常规的pip安装,注意包名是小驼峰,跟GitHub项目名大小写不同。

pip install QuantStats

概念

基本逻辑

先解释下,我们接下来要做的事情的基本逻辑。假设,我们已经制定了一个投资策略,并且已经利用回测工具,计算出了策略的每日的历史回测收益。接下来我们要做的肯定是,想办法评价一下他,这个策略是好是坏,风险如何,收益如何。这个工具就是要做这个。

基准

这是我们评价α相关指标的重要概念,我们需要设定一个基准策略,对比自己的量化策略。在A股,通常把基准设定为沪深300指数的收益率。

指标

指标,是评价一个策略好坏的具体的统计值。比如前面介绍过的,信息比率、夏普比率,再比如最大回撤,α、β收益等。

这些指标的计算规则是客观的,有严格标准的公式,但关于指标的评价,是因人而异的,可能跟你的风险偏好有关。所以,最后并不会有一个绝对的好坏值供我们参考,而重要的是自己去理解各个指标后边的逻辑,自我决定如何评价。

实战

官方给的例子,是基于yfinance的,使用的是美股的数据,我们这里尝试使用A股数据进行下分析。

我制定一个最简单的策略:一直持有工商银行这只股票。那我们的策略收益就是这只股票的每日收益,没问题吧。

基准:选取沪深300指数的收益率。

接下来直接上代码,具体解释写在代码注释上

import pandas as pd
import akshare as ak
import quantstats as qs

# 获取沪深300历史交易数据
df_300 = ak.stock_zh_index_daily_em(symbol="sh000300")

# 获取工商银行历史交易数据
df = ak.stock_zh_a_hist(symbol="601398", adjust="hfq")
# 将列名日期改为date,使其与df_300具备同名日期列
df['date'] = df['日期']

# 合并两个数据表
df_merge = df.merge(df_300, how='inner', on='date')
# 将合并数据表的日期列改为时间格式
df_merge['date'] = pd.to_datetime(df_merge['date'] , format='%Y-%m-%d')

# 目标策略收益率Series,pct_change的作用是根据价格计算收益率
target = df_merge['收盘'].pct_change()
# 将索引设置为日期列
target.index = df_merge['date']
# 基准策略收益率Series,计算方法相同
base = df_merge['close'].pct_change()
base.index = df_merge['date']
# 输出网页格式的分析结果
qs.reports.html(target, base,  output='Output.html')

注意几个点

  • 我们用工具获取到的交易数据原始,基本都是只有开盘价,收盘价,很少包含收益率数据,那这个如何计算呢,其实很简单,pandas里有现成的方法:pct_change
  • quantstats需要的策略数据格式为Series,值是收益率,索引是日期,必须为datetime格式,不能是字符串。
  • 对于股票或者基金的历史交易的交易数据,最好使用复权数据,最好是后复权,这样价格不会出现负数,且收益率不会出现极端错误值。

结果展示

html格式的结果内容很多,就不全贴了,基本上能想到的指标都有,可以具体分析。比如,我这个策略,一直持有工商银行的收益,是没跑赢沪深300的,那就不如持有沪深300了。不过也可看到,工商银行的最大回撤是要比沪深300更小的,说明波动更小一点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果只关注某个指标,也可以只计算这个指标,比如信息比率

# target和base就是上边计算出来的
qs.stats.information_ratio(target, base)

结果为

-0.0053144770904208815

小于0,说明这个策略相对于基准是没有优势的,更多的超额风险,带不来更多的超额收益。

总结

我认为,quantstats完全可以作为策略回测结果的分析工具,值得深入学习和长期使用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI量化投资

支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值