Spaces:
Running
Running
| import pandas as pd | |
| from pathlib import Path | |
| BASE_DIR = Path(__file__).resolve().parent | |
| NSE_PATH = BASE_DIR / "instruments_nse.csv" | |
| NFO_PATH = BASE_DIR / "instruments_nfo.csv" | |
| def load_nse_instruments(): | |
| if not NSE_PATH.exists(): | |
| raise FileNotFoundError("instruments_nse.csv not found. Run main.py first.") | |
| return pd.read_csv(NSE_PATH) | |
| def load_nfo_instruments(): | |
| if not NFO_PATH.exists(): | |
| raise FileNotFoundError("instruments_nfo.csv not found. Run main.py first.") | |
| return pd.read_csv(NFO_PATH) | |
| def find_nse_symbol(symbol: str): | |
| df = load_nse_instruments() | |
| out = df[df["tradingsymbol"].astype(str).str.upper() == symbol.upper()].copy() | |
| return out | |
| def find_nfo_by_name(name: str): | |
| df = load_nfo_instruments() | |
| out = df[df["name"].astype(str).str.upper() == name.upper()].copy() | |
| return out | |
| def find_nearest_options(underlying: str, option_type: str = None): | |
| df = load_nfo_instruments().copy() | |
| df = df[df["name"].astype(str).str.upper() == underlying.upper()] | |
| df = df[df["instrument_type"].isin(["CE", "PE"])] | |
| if option_type: | |
| df = df[df["instrument_type"].astype(str).str.upper() == option_type.upper()] | |
| if df.empty: | |
| return df | |
| df["expiry"] = pd.to_datetime(df["expiry"], errors="coerce") | |
| df = df.sort_values(["expiry", "strike"]) | |
| return df |