Skip to main content

量化投资组合分析

项目描述

蟒蛇版本 派皮版本 PyPi 状态 Travis-CI 构建状态 PyPi 下载 代码因子 为这个 repo 加注星标 在推特上关注我

QuantStats:量化投资组合分析

QuantStats执行投资组合分析的 Python 库,允许量化和投资组合经理通过为他们提供深入的分析和风险指标来更好地了解他们的绩效。

变更日志 »

QuantStats 由 3 个主要模块组成:

  1. quantstats.stats - 用于计算各种性能指标,如夏普比率、胜率、波动率等。

  2. quantstats.plots - 用于可视化性能、回撤、滚动统计、月度回报等。

  3. 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 种不同的报告撕样:

  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 报告

让我们创建一个 html 撕纸

(benchmark can be a pandas Series or ticker)
qs.reports.html(stock, "SPY")

输出将生成如下内容:

HTML 撕样

查看原始html文件

要查看可用方法的完整列表,请运行

[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={...})它仍然会显示图.

附言

如果您有任何反馈,请给我留言。

冉阿鲁西

发布历史 发布通知| RSS订阅