diff options
Diffstat (limited to 'services/data_service.py')
| -rw-r--r-- | services/data_service.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/services/data_service.py b/services/data_service.py index f0f981b..3de2484 100644 --- a/services/data_service.py +++ b/services/data_service.py @@ -158,6 +158,36 @@ def get_insider_transactions(ticker: str) -> pd.DataFrame: return pd.DataFrame() +@st.cache_data(ttl=900) +def get_options_chain(ticker: str) -> dict: + """Return options chain data for the nearest available expirations. + + Returns: + { + "expirations": [str, ...], # all available expiry dates + "chains": [ + {"expiry": str, "calls": DataFrame, "puts": DataFrame}, + ... + ] + } + """ + try: + t = yf.Ticker(ticker.upper()) + expirations = t.options + if not expirations: + return {} + chains = [] + for exp in expirations[:8]: + try: + chain = t.option_chain(exp) + chains.append({"expiry": exp, "calls": chain.calls, "puts": chain.puts}) + except Exception: + pass + return {"expirations": list(expirations), "chains": chains} + except Exception: + return {} + + @st.cache_data(ttl=3600) def get_sec_filings(ticker: str) -> list[dict]: """Return SEC filings from yfinance. |
