Spaces:
Running
Running
| from pathlib import Path | |
| import pandas as pd | |
| from strategy_engine import scan_symbol_for_day, OUTPUT_COLUMNS | |
| BASE_DIR = Path(__file__).resolve().parent | |
| UNIVERSE_PATH = BASE_DIR / "option_stock_universe.csv" | |
| OUT_DIR = BASE_DIR / "outputs" | |
| TRADE_DATE = "2026-02-26" | |
| MODE = "priority" # "priority" or "all" | |
| # MODE = "all" | |
| def load_universe(): | |
| df = pd.read_csv(UNIVERSE_PATH) | |
| df["symbol"] = df["symbol"].astype(str).str.upper() | |
| df["sector"] = df["sector"].fillna("").astype(str) | |
| df["priority_rank"] = pd.to_numeric(df["priority_rank"], errors="coerce").fillna(999) | |
| return df | |
| def pick_universe(df, mode): | |
| if mode == "priority": | |
| return df[df["priority_rank"] == 1].copy() | |
| if mode == "all": | |
| return df.copy() | |
| raise ValueError("MODE must be 'priority' or 'all'") | |
| def main(): | |
| OUT_DIR.mkdir(exist_ok=True) | |
| universe = load_universe() | |
| universe = pick_universe(universe, MODE) | |
| print(f"Universe mode: {MODE}") | |
| print(f"Symbols to scan: {len(universe)}") | |
| for variant in ["v1", "v2"]: | |
| print(f"\nRunning {variant} ...") | |
| option_cache = {} | |
| frames = [] | |
| for _, row in universe.iterrows(): | |
| symbol = row["symbol"] | |
| sector = row["sector"] | |
| print(f"Scanning {symbol} ...") | |
| try: | |
| df = scan_symbol_for_day( | |
| stock_symbol=symbol, | |
| sector=sector, | |
| trade_date=TRADE_DATE, | |
| variant=variant, | |
| option_cache=option_cache, | |
| ) | |
| if not df.empty: | |
| frames.append(df) | |
| print(f" Trades found: {len(df)}") | |
| else: | |
| print(" No trades") | |
| except Exception as e: | |
| print(f" Error: {e}") | |
| if frames: | |
| result = pd.concat(frames, ignore_index=True) | |
| else: | |
| result = pd.DataFrame(columns=OUTPUT_COLUMNS) | |
| out_path = OUT_DIR / f"paper_trades_{TRADE_DATE}_{MODE}_{variant}.csv" | |
| result.to_csv(out_path, index=False) | |
| print(f"\nSaved: {out_path}") | |
| print(f"Total rows: {len(result)}") | |
| if __name__ == "__main__": | |
| main() |