An exchange-traded fund (ETF) pools multiple assets into one fund whose shares trade on an exchange during market hours. Buying one share can diversify exposure without purchasing many securities separately. Most ETFs passively track an index, while actively managed ETFs use a portfolio manager; both charge an annual expense ratio. section 1.2.3 section 1.6
Analyze an ETF through these practical distinctions:
- Identify it by a ticker such as VOO or SPY; prices update while the exchange is open, and some ETFs pay dividends. section 6.5.2
- Interpret metrics as portfolio-level values: VOO’s P/E represents the weighted average of the pooled assets’ P/E ratios, not one company’s ratio. section 6.5.2
- Track navPrice as current market value and yield as passive income, while treating projected gains cautiously because multiple assets make price development difficult to forecast. section 6.5.2
Listing 6.9 Exporting ETFs
all_etfs_held = all_positions[all_positions['asset_type'].isin(["ETF"])]
yfin_data_etf = collect_fin_data(all_etfs_held[COL_YAHOO].unique().tolist())
etf_info = merge_fin_data(all_etfs_held, yfin_data_etf, ["navPrice", "yield"])
etf_info = calculating_price_data(etf_info, "navPrice", "yield")
export_etf_columns = [COL_TICKER, COL_PORTFOLIO,
COL_TOT_VALUE, COL_TOT_YIELD,
COL_AMOUNT, COL_TOT_INIT_VALUE]
export_df_to_sheet(COL_WORKSHEET_ETF, etf_info[export_etf_columns])
add_live_data(COL_WORKSHEET_ETF,
etf_info[COL_GOOGLE].tolist(),
export_etf_columns)
Export ETF holdings, enrich them with yfinance data, calculate price and yield fields, and write selected columns to a worksheet. section 6.5.2


