{"library":"quantstats","title":"QuantStats","description":"QuantStats is a Python library for portfolio analytics that enables quantitative analysts and portfolio managers to gain in-depth insights into their investment performance and risk metrics. It provides modules for calculating various statistics, generating plots, and creating comprehensive HTML reports. The library is actively maintained with frequent updates, with the current version being 0.0.81.","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install quantstats"],"cli":null},"imports":["import quantstats as qs","qs.extend_pandas()"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import quantstats as qs\nimport yfinance as yf\nimport pandas as pd\n\n# Extend pandas functionality with QuantStats methods\nqs.extend_pandas()\n\n# Download daily returns for a stock using yfinance\nticker = 'AAPL'\nstock_data = yf.download(ticker, start='2020-01-01', end='2023-12-31')\nreturns = stock_data['Adj Close'].pct_change().dropna()\n\n# Optionally, download benchmark returns\nbenchmark_ticker = 'SPY'\nbenchmark_data = yf.download(benchmark_ticker, start='2020-01-01', end='2023-12-31')\nbenchmark_returns = benchmark_data['Adj Close'].pct_change().dropna()\n\n# Calculate and print Sharpe Ratio\nsharpe_ratio = returns.sharpe()\nprint(f\"Sharpe Ratio for {ticker}: {sharpe_ratio:.4f}\")\n\n# Generate a full HTML report (opens in browser by default)\n# Ensure you have matplotlib and seaborn installed for plots\nqs.reports.html(returns, benchmark=benchmark_returns, title=f'{ticker} vs {benchmark_ticker} Performance', output='quantstats_report.html')","lang":"python","description":"This quickstart demonstrates how to import QuantStats, extend pandas DataFrames for easy access to metrics, download historical stock data using `yfinance`, calculate a basic performance metric like the Sharpe Ratio, and generate a comprehensive HTML tearsheet comparing a stock's performance against a benchmark.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"0.0.77","pypi_latest":"0.0.81","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":19.1,"avg_import_s":7.56,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":6.45,"mem_mb":92.1,"disk_size":"454.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":19.2,"import_time_s":4.96,"mem_mb":91.1,"disk_size":"435M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":9.22,"mem_mb":109.2,"disk_size":"489.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":18.4,"import_time_s":8.19,"mem_mb":108.3,"disk_size":"467M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":8.3,"mem_mb":106.7,"disk_size":"469.7M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":18.3,"import_time_s":8.35,"mem_mb":105.7,"disk_size":"447M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":7.49,"mem_mb":108.4,"disk_size":"467.8M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":18.4,"import_time_s":7.53,"mem_mb":107.4,"disk_size":"445M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":"431.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"quantstats","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":21.2,"import_time_s":null,"mem_mb":null,"disk_size":"419M"}]}}