量化投资组合分析
项目描述
QuantStats:量化投资组合分析
QuantStats执行投资组合分析的 Python 库,允许量化和投资组合经理通过为他们提供深入的分析和风险指标来更好地了解他们的绩效。
QuantStats 由 3 个主要模块组成:
quantstats.stats - 用于计算各种性能指标,如夏普比率、胜率、波动率等。
quantstats.plots - 用于可视化性能、回撤、滚动统计、月度回报等。
quantstats.reports - 用于生成指标报告、批量绘图和创建可保存为 HTML 文件的撕样。
以下是分析策略的简单示例:
快速开始
%matplotlib inline
import quantstats as qs
# extend pandas functionality with metrics, etc.
qs.extend_pandas()
# fetch the daily returns for a stock
stock = qs.utils.download_returns('FB')
# show sharpe ratio
qs.stats.sharpe(stock)
# or using extend_pandas() :)
stock.sharpe()
输出:
0.8135304438803402
可视化股票表现
qs.plots.snapshot(stock, title='Facebook Performance')
# can also be called via:
# stock.plot_snapshot(title='Facebook Performance')
输出:
创建报告
您可以创建 7 种不同的报告撕样:
qs.reports.metrics(mode='basic|full", ...) - 显示基本/完整指标
qs.reports.plots(mode='basic|full", ...) - 显示基本/完整图
qs.reports.basic(...) - 显示基本指标和图表
qs.reports.full(...) - 显示完整的指标和图表
qs.reports.html(...) - 生成完整的 html 报告
让我们创建一个 html 撕纸
(benchmark can be a pandas Series or ticker)
qs.reports.html(stock, "SPY")
输出将生成如下内容:
要查看可用方法的完整列表,请运行
[f for f in dir(qs.stats) if f[0] != '_']
['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',
'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',
'outlier_loss_ratio',
'outlier_win_ratio',
'outliers',
'payoff_ratio',
'profit_factor',
'profit_ratio',
'r2',
'r_squared',
'rar',
'recovery_factor',
'remove_outliers',
'risk_of_ruin',
'risk_return_ratio',
'rolling_greeks',
'ror',
'sharpe',
'skew',
'sortino',
'adjusted_sortino',
'tail_ratio',
'to_drawdown_series',
'ulcer_index',
'ulcer_performance_index',
'upi',
'utils',
'value_at_risk',
'var',
'volatility',
'win_loss_ratio',
'win_rate',
'worst']
[f for f in dir(qs.plots) if f[0] != '_']
['daily_returns',
'distribution',
'drawdown',
'drawdowns_periods',
'earnings',
'histogram',
'log_returns',
'monthly_heatmap',
'returns',
'rolling_beta',
'rolling_sharpe',
'rolling_sortino',
'rolling_volatility',
'snapshot',
'yearly_returns']
*** 完整文档即将推出 ***
同时,您可以使用 Python 的帮助方法了解每种方法的可选参数:
help(qs.stats.conditional_value_at_risk)
Help on function conditional_value_at_risk in module quantstats.stats:
conditional_value_at_risk(returns, sigma=1, confidence=0.99)
calculats the conditional daily value-at-risk (aka expected shortfall)
quantifies the amount of tail risk an investment
安装
使用pip安装:
$ pip install quantstats --upgrade --no-cache-dir
使用conda安装:
$ conda install -c ranaroussi quantstats
要求
问题?
这是一个新库……如果您发现错误,请 在此存储库中打开一个问题。
如果您想做出贡献,一个很好的地方是 标记为 help-wanted 的问题。
已知的问题
出于某种原因,我找不到一种方法来告诉 seaborn 在指示保存时不要返回月度收益热图 - 所以即使您保存图(通过传递savefig={...})它仍然会显示图.
法律资料
QuantStats是根据Apache 软件许可证分发的。有关详细信息,请参阅发行版中的LICENSE.txt文件。
附言
如果您有任何反馈,请给我留言。
冉阿鲁西