分享

量化投资分析工具quantstats介绍及其在backtrader量化框架中使用

 禁忌石 2022-05-28 发布于浙江

简介

quantstats -- 衡量策略绩效指标的python lib库,用于投资组合分析。主要由3部分组成:

  • quantstats.stats:用于计算多种性能指标,如夏普比率、胜率等
  • quantstats.plots:用于性能、下降趋势、月度回报等绩效指标的可视化
  • quantstats.reports:用于生成度量报告,可保存为html文件

安装&使用

  • 安装:pip install quantstats
  • 使用方法:
  1. 使用quantstats.stats计算多种性能指标,如夏普比率、胜率等
import quantstats as qs
qs.extend_pandas()
stock = qs.utils.download_returns('TSLA')
stock
Date
2010-06-29         NaN
2010-06-30   -0.002512
2010-07-01   -0.078472
2010-07-02   -0.125683
2010-07-06   -0.160938
                ...   
2022-04-18    0.019584
2022-04-19    0.023758
2022-04-20   -0.049555
2022-04-21    0.032317
2022-04-22   -0.003698
Name: Close, Length: 2976, dtype: float64
qs.stats.sharpe(stock)
1.0828146689088534
stock.sharpe()
1.0828146689088534

支持的完整指标:

[f for f in dir(qs.stats) if f[0] != '_']
['adjusted_sortino',
 'autocorr_penalty',
 'avg_loss',
 'avg_return',
 'avg_win',
 'best',
 'cagr',
 'calmar',
 'common_sense_ratio',
 'comp',
 'compare',
 'compsum',
 'conditional_value_at_risk',
 'consecutive_losses',
 'consecutive_wins',
 'cpc_index',
 'cvar',
 'distribution',
 'drawdown_details',
 'expected_return',
 'expected_shortfall',
 'exposure',
 'gain_to_pain_ratio',
 'geometric_mean',
 'ghpr',
 'greeks',
 'implied_volatility',
 'information_ratio',
 'kelly_criterion',
 'kurtosis',
 'max_drawdown',
 'monthly_returns',
 'omega',
 'outlier_loss_ratio',
 'outlier_win_ratio',
 'outliers',
 'payoff_ratio',
 'pct_rank',
 'profit_factor',
 'profit_ratio',
 'r2',
 'r_squared',
 'rar',
 'recovery_factor',
 'remove_outliers',
 'risk_of_ruin',
 'risk_return_ratio',
 'rolling_greeks',
 'rolling_sharpe',
 'rolling_sortino',
 'rolling_volatility',
 'ror',
 'serenity_index',
 'sharpe',
 'skew',
 'smart_sharpe',
 'smart_sortino',
 'sortino',
 'tail_ratio',
 'to_drawdown_series',
 'ulcer_index',
 'ulcer_performance_index',
 'upi',
 'value_at_risk',
 'var',
 'volatility',
 'warn',
 'win_loss_ratio',
 'win_rate',
 'worst']
2. 使用quantstats.plots以图形的形式输出绩效指标
qs.plots.snapshot(stock, title='TSLA Performance')
图片

支持的全部绘图函数:

[f for f in dir(qs.plots) if f[0] != '_']
['daily_returns',
 'distribution',
 'drawdown',
 'drawdowns_periods',
 'earnings',
 'histogram',
 'log_returns',
 'monthly_heatmap',
 'monthly_returns',
 'plotly',
 'returns',
 'rolling_beta',
 'rolling_sharpe',
 'rolling_sortino',
 'rolling_volatility',
 'snapshot',
 'to_plotly',
 'warnings',
 'yearly_returns']
3. 使用quantstats.reports生成综合报表,可保存为html文件

qs.reports.html(stock, 'SPY')

支持输出7种不同的报告:

  1. qs.reports.metrics(mode='basic|full', ...) - 展现基础/所有指标
  2. qs.reports.plots(mode='basic|full', ...) - 展现基础/所有绘图
  3. qs.reports.basic(...) - 展现基础指标和绘图
  4. qs.reports.full(...) - 展现所有指标和绘图
  5. qs.reports.html(...) - 生成html完整报告
[f for f in dir(qs.reports) if f[0] != '_']

['basic', 'full', 'html', 'iDisplay', 'iHTML', 'metrics', 'plots']

quantstats输出的html报表如下,可以看到左边是可视化绩效指标,右边是文字绩效指标。图片

图片
图片

图片图片


图片在backtrader中使用quantstats

策略绩效评价是量化交易很重要的一环,backtrader提供多种分析者对象analyzer,可以输出各项策略绩效指标,但输出结果是字典方式的数据,没有可视化的绩效报表,而且还缺少一些重要指标,比如索提诺比率(sortino ratio),使用起来不友好。quantstats可以输出html报表,包括各项绩效指标和图表,且可以非常方便地与backtrader集成。

backtrader使用quantstats示例代码如下:

cerebro.addanalyzer(bt.analyzers.PyFolio, _name='pyfolio')
strats = cerebro.run()
strat0 = strats[0]
pyfolio = strats.analyzers.getbyname('pyfolio')
returns, positions, transactions, gross_lev = pyfoliozer.get_pf_items()
print(returns)
returns.index = returns.index.tz_convert(None)
import pandas as pd
import quantstats
quantstats.reports.html(returns, output='stats.html', title='Stock Sentiment')

交流

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多