Skip to content

etfray

etfray

A terminal-based ETF research and portfolio analytics application built with Textual.

etfray converts SEC fund filings and IBKR portfolio data into holdings, exposure, concentration, margin, and risk workflows — all from your terminal.

Why etfray?

  • No cloud accounts — No sign-ups, no API keys, no third-party dashboards. Your data stays on your machine.
  • No subscriptions — ETF holdings data comes directly from SEC EDGAR filings. Free, authoritative, and always available.
  • Offline-capable — All data cached locally in SQLite. After the first fetch, everything works without a network connection.
  • Keyboard-first — Command palette, tree navigation, and keybindings. No mouse required.

What can etfray do?

  • Home Dashboard — Live startup screen with benchmark marquee (SPY/QQQ/AGG/GLD YTD), ETF daily movers, watchlist snapshot, seasonal spotlight for the current month, and recent quick-jump pills
  • ETF Research — Search thousands of ETFs, view holdings, sector/geographic exposure, concentration metrics, fees, risk, and SEC documents
  • Fund Overview — Rich fund profile combining SEC filings with Yahoo Finance metadata (category, expense ratio, dividend yield, beta, returns, description)
  • Seasonals — TradingView-style year-over-year cumulative return chart with period returns table (1W to Max) and year range selection
  • Watchlist — Track ETFs with at-a-glance metrics: concentration, top sectors, overlap vs portfolio, and data freshness
  • Portfolio Analytics — Connect to IBKR for live positions, lookthrough exposure (what your ETFs actually own), concentration analysis, margin monitoring, and stress scenarios
  • Side-by-side Compare — Compare multiple ETFs across holdings, exposure, overlap, 52-week returns, and fees
  • Export — Save any view to CSV or JSON for further analysis

Get Started

- :material-home: **[Home Dashboard](user-guide/home-dashboard.md)** --- Live benchmarks, ETF movers, and your watchlist — right from startup - :material-download: **[Installation](getting-started/installation.md)** --- Install etfray from PyPI in one command - :material-rocket-launch: **[Quick Start](getting-started/quickstart.md)** --- Launch the app and explore your first ETF in 2 minutes - :material-connection: **[IBKR Setup](user-guide/ibkr-setup.md)** --- Connect to your IBKR account for portfolio analytics

Learn by Example

Tutorial What you'll learn
Research Workflow Evaluate an ETF from search to export
Portfolio Setup Connect IBKR and explore your positions
Overlap Analysis Find hidden redundancy between ETFs
Three-Fund Analysis Uncover concentration in a "diversified" portfolio
Margin Monitoring Set up early warnings for margin usage

Reference

  • Home Dashboard — Benchmark marquee, ETF movers, watchlist snapshot, and seasonal spotlight
  • User Guide — Detailed explanation of every view and metric
  • Seasonals — Year-over-year return charts and period returns
  • Watchlist — Track ETFs with concentration and overlap metrics
  • Configuration — All settings with examples
  • Keybindings — Keyboard shortcuts and workflows
  • Architecture — How etfray is built
  • Changelog — Release history