diff options
Diffstat (limited to 'services/fmp_service.py')
| -rw-r--r-- | services/fmp_service.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/services/fmp_service.py b/services/fmp_service.py index bba6c85..3bfa5c1 100644 --- a/services/fmp_service.py +++ b/services/fmp_service.py @@ -3,7 +3,7 @@ import os import requests import streamlit as st from dotenv import load_dotenv -from services.data_service import get_company_info +from services.data_service import get_company_info, get_historical_ratios_yfinance load_dotenv() @@ -121,16 +121,24 @@ def get_company_news(ticker: str, limit: int = 20) -> list[dict]: @st.cache_data(ttl=86400) def get_historical_ratios(ticker: str, limit: int = 10) -> list[dict]: - """Annual historical valuation ratios (P/E, P/B, P/S, EV/EBITDA, etc.).""" + """Annual historical valuation ratios (P/E, P/B, P/S, EV/EBITDA, etc.). + Falls back to yfinance-computed ratios if FMP returns empty (e.g. rate limit).""" data = _get(STABLE_BASE, "/ratios", params={"symbol": ticker.upper(), "limit": limit}) - return data if isinstance(data, list) else [] + if isinstance(data, list) and data: + return data + return get_historical_ratios_yfinance(ticker.upper()) @st.cache_data(ttl=86400) def get_historical_key_metrics(ticker: str, limit: int = 10) -> list[dict]: - """Annual historical key metrics (ROE, ROA, margins, debt/equity, etc.).""" + """Annual historical key metrics (ROE, ROA, margins, debt/equity, etc.). + Falls back to yfinance-computed metrics if FMP returns empty (e.g. rate limit).""" data = _get(STABLE_BASE, "/key-metrics", params={"symbol": ticker.upper(), "limit": limit}) - return data if isinstance(data, list) else [] + if isinstance(data, list) and data: + return data + # yfinance fallback already covers all key metrics — return empty to avoid duplication + # (get_historical_ratios will have already provided the full merged dataset) + return [] @st.cache_data(ttl=3600) |
