This commit is contained in:
Emil Lerch 2026-04-09 17:33:55 -07:00
parent ddf89f926f
commit f55af318f2
Signed by: lobo
GPG key ID: A7B62D657EF764F8

24
TODO.md
View file

@ -52,6 +52,30 @@ previously selected one (like `cd -` in bash or `Ctrl+^` in vim). Store
key swaps current and last. Works on any tab — particularly useful for
eyeball-comparing performance/risk data between two symbols.
## Fix `enrich` command for international funds
`deriveMetadata` in `src/commands/enrich.zig` misclassifies international ETFs:
1. **`geo`** uses Alpha Vantage's `Country` field, which is the *fund issuer's*
domicile (USA for all US-listed ETFs), not the fund's investment geography.
Every US-domiciled international fund gets `geo::US`.
2. **`asset_class`** short-circuits to `"ETF"` when `asset_type == "ETF"`, or
falls through to a US-market-cap heuristic that always produces
`"US Large Cap"` / `"US Mid Cap"` / `"US Small Cap"`.
Known misclassified tickers (all came back as `geo::US, asset_class::US Large Cap`):
- **FRDM** — Freedom 100 Emerging Markets ETF → should be `geo::Emerging Markets, asset_class::Emerging Markets`
- **HFXI** — NYLI FTSE International Equity Currency Neutral ETF → should be `geo::International Developed, asset_class::International Developed`
- **IDMO** — Invesco S&P International Developed Momentum ETF → should be `geo::International Developed, asset_class::International Developed`
- **IVLU** — iShares MSCI International Developed Value Factor ETF → should be `geo::International Developed, asset_class::International Developed`
The Alpha Vantage OVERVIEW endpoint doesn't provide fund geography data.
Options: use the ETF_PROFILE holdings/country data to infer geography, parse
the fund name for keywords ("International", "Emerging", "ex-US"), or accept
that `enrich` is a scaffold and emit a `# TODO` comment for ETFs instead of
silently misclassifying.
## Market-aware cache TTL for daily candles
Daily candle TTL is currently 23h45m, but candle data only becomes meaningful