Spaces:
Sleeping
Sleeping
| from traders import Trader | |
| from typing import List | |
| import asyncio | |
| from tracers import LogTracer | |
| from agents import add_trace_processor | |
| from market import is_market_open | |
| from dotenv import load_dotenv | |
| import os | |
| load_dotenv(override=True) | |
| RUN_EVERY_N_MINUTES = int(os.getenv("RUN_EVERY_N_MINUTES", "60")) | |
| RUN_EVEN_WHEN_MARKET_IS_CLOSED = ( | |
| os.getenv("RUN_EVEN_WHEN_MARKET_IS_CLOSED", "false").strip().lower() == "true" | |
| ) | |
| USE_MANY_MODELS = os.getenv("USE_MANY_MODELS", "false").strip().lower() == "true" | |
| names = ["Warren", "George", "Ray", "Cathie"] | |
| lastnames = ["Patience", "Bold", "Systematic", "Crypto"] | |
| if USE_MANY_MODELS: | |
| model_names = [ | |
| "gpt-4.1-mini", | |
| "deepseek-chat", | |
| "gemini-2.5-flash-preview-04-17", | |
| "grok-3-mini-beta", | |
| ] | |
| short_model_names = ["GPT 4.1 Mini", "DeepSeek V3", "Gemini 2.5 Flash", "Grok 3 Mini"] | |
| else: | |
| model_names = ["gpt-4o-mini"] * 4 | |
| short_model_names = ["GPT 4o mini"] * 4 | |
| def create_traders() -> List[Trader]: | |
| traders = [] | |
| for name, lastname, model_name in zip(names, lastnames, model_names): | |
| traders.append(Trader(name, lastname, model_name)) | |
| return traders | |
| async def run_every_n_minutes(): | |
| add_trace_processor(LogTracer()) | |
| traders = create_traders() | |
| while True: | |
| if RUN_EVEN_WHEN_MARKET_IS_CLOSED or is_market_open(): | |
| await asyncio.gather(*[trader.run() for trader in traders]) | |
| else: | |
| print("Market is closed, skipping run") | |
| await asyncio.sleep(RUN_EVERY_N_MINUTES * 60) | |
| if __name__ == "__main__": | |
| print(f"Starting scheduler to run every {RUN_EVERY_N_MINUTES} minutes") | |
| asyncio.run(run_every_n_minutes()) | |