Skip to content

etfray 1.0.0

Choose a tag to compare

@alwank alwank released this 24 May 16:22
· 14 commits to main since this release

What's New in 1.0.0

Added

  • Home Dashboard — Redesigned startup screen with four live panels: Benchmark Marquee (SPY/QQQ/AGG/GLD YTD), Watchlist Snapshot, ETF Movers (top-5 gainers/losers), and Seasonal Spotlight Strip (month win rate + MTD return per watchlist ticker).
  • Recent / Quick-Jump — Pill buttons on Home for up to 5 last-visited ETF tickers plus a "Search →" shortcut.
  • Screener service — New etfray/data/screener_service.py powering the ETF Movers panel via Yahoo Finance screener with a 1-hour SQLite TTL cache and a 40+ ETF seed-universe fallback.
  • Stress Scenarios (Margin view) — Simulates portfolio cushion after −10% and −20% shocks to gross position value.
  • Quick Keys footer on Home — Inline keybinding reference on the Home screen.

Changed

  • Portfolio Risk view — Added Equity Exposure % and Data Coverage rating; Risk Drivers list is now dynamic.
  • Portfolio Concentration view — Ticker normalization for BRK B/BRK/B style variants; Jaccard overlap now scored as High / Medium / Low.
  • Compare view — Added weight-adjusted overlap column and average 52-week return column.
  • Settings view — All settings now exposed in the in-app UI, including ibkr_host, ibkr_client_id, freshness_days_acceptable, cache_dir, and export_dir.
  • Market data service — Auto-corrects previously cached whole-percent YTD values on read.
  • Database — Added screener_cache table; migrated holdings_cache to composite (ticker, source) primary key; renamed 'zacks' source to 'web'.

Installation

pip install etfray

Optional matplotlib charts:

pip install etfray[charts]

Full documentation: https://etfray.readthedocs.io