量化投资组合分析

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第三方库


热门话题
java无法从组合框中选择值。需要JS替代方案   打印带有规范问题的Java打印程序?   使用Xmodem传输文件内容时的附加ASCII字符的java传输   java JAXB通过socket和流读取器块   java“错误:在类Grad中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)”   如何在Java中将图像从彩色转换为黑白(灰度)   java如何使用Google云连接服务器发送上游GCM消息   JAVA中的JSON文件字段交叉点   什么是“搜索:{…}”/Java中正式使用的“中断搜索”语法?   由于明显的类路径冲突导致java ToDiscoverable强制转换错误?   java可以成为一种语言。类文件不能添加到URLClassLoader的urlpath   Android设备上会话管理的java最佳实践   Java8Java上的Google应用程序引擎。开发服务器上的时间不可用?   java Derby数据库导出为单个文件?   java如何让jmeter根据访问日志行中的时间戳进行日志重放   访问EJB分离接口时的java IllegalAccessException   java使用JsonPath在不知道密钥的情况下提取值   java将文件保存到Jersey API中的服务器应用程序目录   jsoup中的java Http异常   java有没有错误?