量化投资组合分析

QuantStats的Python项目详细描述


Python versionPyPi versionPyPi statusTravis-CI build statusPyPi downloadsStar this repoFollow me on twitter

quantstats:quants的投资组合分析

quantstats执行投资组合分析的python库,通过向quant和投资组合经理提供深入的分析和风险度量,他们可以更好地了解自己的性能。

Changelog »

quantstats由3个主要模块组成:

  1. quantstats.stats-用于计算各种性能指标,如夏普比率、赢率、波动率等。
  2. quantstats.plots-用于可视化绩效、支取、滚动统计、月度回报等。
  3. quantstats.reports-用于生成度量报告、批量打印和创建可保存为HTML文件的催泪表。

下面是一个分析策略的简单示例:

快速启动

%matplotlibinlineimportquantstatsasqs# extend pandas functionality with metrics, etc.qs.extend_pandas()# fetch the daily returns for a stockstock=qs.utils.download_returns('FB')# show sharpe ratioqs.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')

输出:

Snapshot plot

创建报告

您可以创建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茶几

(benchmarkcanbeapandasSeriesorticker)qs.reports.html(stock,"SPY")

输出将生成如下内容:

HTML tearsheet

view original html file

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

[fforfindir(qs.stats)iff[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',
 'tail_ratio',
 'to_drawdown_series',
 'ulcer_index',
 'ulcer_performance_index',
 'upi',
 'utils',
 'value_at_risk',
 'var',
 'volatility',
 'win_loss_ratio',
 'win_rate',
 'worst']
[fforfindir(qs.plots)iff[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的helpmethod:

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

安装quantstats
$ pip install quantstats --upgrade --no-cache-dir

要求

问题?

这是一个新图书馆…如果你发现一个bug,请 open an issue 在这个仓库里。

如果你想做贡献,一个很好的地方是 issues marked with help-wanted

已知问题

不知什么原因,我找不到办法告诉西伯恩不要把 当指示保存时,monthly返回heatmap-因此即使保存了绘图(通过传递savefig={...}),它仍然会显示绘图。

P.S.

请给我一张便条,上面有你的任何反馈。

ran唤醒

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaCenter是JavaFX2中不可执行的窗格   java Docker将容器连接到本地数据库   java无法通过Spring从Redis获得正确的值   java为什么要将数组转换为列表再转换为数组   Java泛型在方法中放入字符串或整数参数   在Cloud Bigtable SDK中找不到java类   java Mavensiteplugin无法加载生成的源(Jaxb)   java GWT序列化和Appengine通道Api   PrintWriter out=new PrintWriter(sWriter)和PrintWriter out=response之间的java差异。getWriter()   空手道DSL中的javascript,在java参数调用中传递变量时如何转义单引号   windows 64位java可以与32位tomcat一起使用   为for循环| Java输入参数   java您可以更改SWT选项卡项的背景和/或前景颜色吗?   用java生成6位pin码   java如何从另一个通量中排除通量中的所有元素   java无法调用“javafx.scene.control.ComboBox.getItems()”,因为“Controller.getMyBox()”的返回值为null   将Java字符串与数组匹配时出现问题   java如何使用HttpsUrlConnection对SSL连接使用代理身份验证?   java如何检查XML元素是否包含CDATA?