6. File Reference (Python)
watch_downloads.py — Long-running watcher (requires watchdog). Monitors Downloads + optional IBD folders; uses etrade_identify.identify_etrade_file; copies/renames into holdings/ and data/input/ with date stamps. Debounces rapid file system events on Windows.
etrade_identify.py — Stateless classifier for IBD (Big Cap 20/50, IBD 50, RS) vs E*TRADE IRA vs brokerage from filename and header text. No pandas dependency.
normalize_etrade.py — CLI: python normalize_etrade.py <raw.csv> <clean.csv>. Input: E*TRADE positions export; output: minimal schema for portfolio_analyzer.
ingest_ibd_lists.py — CLI orchestrates build_ira_watchlist, build_brokerage_watchlist, find_conviction_stocks, writes IRA_Watchlist.csv, Brokerage_Watchlist.csv, Cross_Strategy_Conviction.csv. Depends on capm_wacc, LibreOffice for .xls, yfinance for betas.
capm_wacc.py — Pure financial utilities: get_risk_free_rate, capm_required_return, alpha_gap, beta_penalty, enrich_dataframe (adds CAPM + WACC columns), portfolio_wacc, stock_wacc. Used by ingest and portfolio_analyzer.
portfolio_analyzer.py — CLI --holdings, --universe, --strategy (ira | brokerage), --account. Joins holdings to universe, assigns Status, fills scores for off-universe rows (Brokerage Leader Score from RS/EPS/ACC), enriches prices and capm_wacc.enrich_dataframe, writes {slug}_Report.csv and {slug}_Summary.csv under data/output/ (slug from account name).
performance_tracker.py — snapshot(force=False) loads watchlists + Etrade_IRA_Report.csv / Etrade_Brokerage_Report.csv, updates performance_tracker_state.json, appends performance_history.csv and kpi_summary.csv, writes performance_latest.json. Skips duplicate ISO week unless --force.
weekly_run.py — Finds latest dated inputs in data/input and holdings, runs normalize_etrade ×2, ingest_ibd_lists, portfolio_analyzer ×2, opens three CSVs in Excel, calls performance_tracker.snapshot(), then open_dashboard_in_browser() (HTTP 8765, see §12).
process_growth_stocks.py — Alternative Leader Score + CAPM batch on a master CSV; useful for experiments; not part of weekly_run.py.
dashboard.html — Static UI; fetch('data/output/performance_latest.json') when served from project root.