# ========================= # Telegram # ========================= TELEGRAM_BOT_TOKEN=123456:your_telegram_bot_token TELEGRAM_CHAT_ID=@your_channel_username TELEGRAM_ADMIN_CHAT_ID=@your_private_admin_channel # ========================= # Scheduling / Scope # ========================= RUN_INTERVAL_MINUTES=30 REPORT_TIMEZONE=Asia/Kolkata MARKET_SCOPE=all_nse ALLOW_OFF_MARKET_RUNS=true NSE_HOLIDAYS= # all_nse performance tuning MAX_SYMBOLS= ANALYSIS_CONCURRENCY=20 NEWS_CONCURRENCY=6 NEWS_CANDIDATES_LIMIT=30 QUEUE_CAPACITY=512 # watchlist fallback (used only when MARKET_SCOPE=watchlist) WATCHLIST=RELIANCE.NS,TCS.NS,INFY.NS,HDFCBANK.NS,ICICIBANK.NS,SBIN.NS,BHARTIARTL.NS,LT.NS,HINDUNILVR.NS # ========================= # News/Search providers # ========================= # SEARCH_PROVIDER: tavily | serpapi | none SEARCH_PROVIDER=tavily NEWS_MULTI_SOURCE=true TAVILY_API_KEY=your_tavily_key SERPAPI_API_KEY= RSS_FALLBACK_ENABLED=true # Optional fallback price provider ALPHA_VANTAGE_API_KEY= # ========================= # OpenAI ChatGPT core ranking # ========================= ENABLE_OPENAI_CORE=true OPENAI_API_KEY= OPENAI_MODEL=gpt-5-mini OPENAI_REASONING_EFFORT=medium LLM_CANDIDATES_LIMIT=30 LLM_DYNAMIC_CANDIDATES_ENABLED=true LLM_DYNAMIC_MIN_CANDIDATES=10 LLM_DYNAMIC_MAX_CANDIDATES=60 LLM_TOKEN_BUDGET_DAILY=1500000 LLM_HARD_CAP_STOP=true MODEL_VERSION_PIN=gpt-5-mini MODEL_ALLOWLIST=gpt-5-mini,gpt-5 # ========================= # Recommendation output controls # ========================= NEWS_LIMIT_PER_SYMBOL=5 MAX_RECOMMENDATIONS=10 OUTLIER_THRESHOLD_PCT=20 MATERIAL_CHANGE_THRESHOLD=0.35 # Quality gates MIN_HISTORY_DAYS=60 MAX_STALE_DAYS=3 MIN_AVG_VOLUME=20000 # ========================= # Resilience (retry / circuit breaker) # ========================= PROVIDER_TIMEOUT_SECONDS=20 RETRY_MAX_ATTEMPTS=4 RETRY_BASE_DELAY_MS=500 RETRY_MAX_DELAY_MS=8000 RETRY_JITTER_MS=250 CIRCUIT_FAILURE_THRESHOLD=5 CIRCUIT_OPEN_SECONDS=90 # ========================= # Cache TTLs # ========================= PRICE_CACHE_TTL_SECONDS=300 NEWS_CACHE_TTL_SECONDS=3600 UNIVERSE_CACHE_TTL_SECONDS=21600 # ========================= # Observability / Health # ========================= HTTP_PORT=8080 RUST_LOG=info LOG_JSON=false # ========================= # Storage # ========================= # Supabase Postgres connection string SUPABASE_DB_URL=postgresql://postgres:[PASSWORD]@db.[PROJECT-REF].supabase.co:5432/postgres?sslmode=require DB_MAX_CONNECTIONS=20 # ========================= # Admin alert thresholds # ========================= ALERT_FAILURE_RATE_THRESHOLD=0.35 ALERT_MISSING_DATA_THRESHOLD=100 # ========================= # Portfolio / paper trading / governance # ========================= PORTFOLIO_MODE_ENABLED=true PAPER_TRADING_ENABLED=true PAPER_INITIAL_CAPITAL=1000000 USER_RISK_BUDGET=1.0 MAX_SECTOR_EXPOSURE=0.30 RISK_TARGET_VOLATILITY=18.0 SLIPPAGE_BPS=5.0 STOP_LOSS_PCT=8.0 TRAILING_STOP_PCT=10.0 STRATEGY_PROFILE=momentum NO_TRADE_UNCERTAINTY_THRESHOLD=0.72 # ========================= # Event / derivatives / macro signal layers # ========================= EVENTS_ENABLED=true DERIVATIVES_ENABLED=true MACRO_ENABLED=true # ========================= # Multi-channel delivery # ========================= DELIVERY_EMAIL_ENABLED=false DELIVERY_EMAIL_TO= RESEND_API_KEY= DELIVERY_SLACK_ENABLED=false DELIVERY_SLACK_WEBHOOK_URL= DELIVERY_WEBHOOK_ENABLED=false DELIVERY_WEBHOOK_URL= DELIVERY_WEBHOOK_TOKEN=