aboutsummaryrefslogtreecommitdiff
path: root/services/fmp_service.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/fmp_service.py')
-rw-r--r--services/fmp_service.py18
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)