fix: convert Finnhub market cap from millions to absolute USD
Finnhub profile2 reports marketCapitalization in millions; storing it as dollars made mega-caps like SPCX show as micro (e.g. 1.8M). Normalize on ingest, add unit tests, and include a one-shot SQL backfill script.
This commit is contained in:
@@ -101,7 +101,10 @@ class FinnhubFundamentalProvider:
|
||||
earnings_payload = earnings_resp.json() if earnings_resp.text else []
|
||||
|
||||
metrics = metric_payload.get("metric", {}) if isinstance(metric_payload, dict) else {}
|
||||
market_cap = _safe_float((profile_payload or {}).get("marketCapitalization"))
|
||||
# Finnhub profile2 marketCapitalization is in millions of USD.
|
||||
# Normalize to absolute dollars so cap bands / formatters match FMP & Alpha Vantage.
|
||||
market_cap_millions = _safe_float((profile_payload or {}).get("marketCapitalization"))
|
||||
market_cap = market_cap_millions * 1_000_000.0 if market_cap_millions is not None else None
|
||||
pe_ratio = _safe_float(metrics.get("peTTM") or metrics.get("peNormalizedAnnual"))
|
||||
revenue_growth = _safe_float(metrics.get("revenueGrowthTTMYoy") or metrics.get("revenueGrowth5Y"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user