# πŸ€– Autonomous Trading System A 24/7 intelligent trading system that monitors your IBKR portfolio, analyzes multiple data sources, and provides actionable trading signals. ## πŸš€ Features ### Real-Time Monitoring - **IBKR Portfolio Sync** - Live connection to your Interactive Brokers account - **Position Tracking** - Monitor P&L, cost basis, and performance - **Risk Management** - Automatic alerts for position limits and losses ### Multi-Source Intelligence - **Congressional Trades** - Track politician stock trades via QuiverQuant - **Insider Trading** - Monitor SEC filings and insider activity - **Market Sentiment** - News analysis and social media sentiment - **Technical Analysis** - Support/resistance, RSI, moving averages - **AI Analysis** - TradingAgents multi-agent evaluation ### Smart Alerts - **Trading Signals** - Specific entry/exit prices with confidence scores - **Risk Warnings** - Position concentration and loss alerts - **Opportunity Detection** - Congressional trades matching your portfolio - **Multi-Channel** - Discord, Telegram, Email notifications ## πŸ“‹ Prerequisites 1. **Interactive Brokers Account** with TWS or IB Gateway 2. **API Keys**: - OpenAI API key (required) - Alpha Vantage API key (required) - QuiverQuant API key (optional, for congressional trades) - Discord Webhook URL (optional, for alerts) ## πŸ› οΈ Installation ### 1. Install Dependencies ```bash # Install autonomous system requirements pip install -r requirements_autonomous.txt # Install base TradingAgents requirements pip install -r requirements.txt ``` ### 2. Configure IBKR 1. Open TWS or IB Gateway 2. Enable API connections: - File β†’ Global Configuration β†’ API β†’ Settings - Enable "Enable ActiveX and Socket Clients" - Add "127.0.0.1" to trusted IPs 3. Note the port: - TWS Paper: 7497 - TWS Live: 7496 - IB Gateway Paper: 4002 - IB Gateway Live: 4001 ### 3. Set Environment Variables Create or update `.env` file: ```bash # === REQUIRED === OPENAI_API_KEY=your-openai-key ALPHA_VANTAGE_API_KEY=your-alpha-vantage-key # === IBKR Settings === IBKR_HOST=127.0.0.1 IBKR_PORT=7497 # Paper trading port IBKR_CLIENT_ID=1 # === Optional Data Sources === QUIVER_API_KEY=your-quiver-key # For congressional trades POLYGON_API_KEY=your-polygon-key # For real-time data NEWS_API_KEY=your-news-api-key # For news aggregation # === Notifications (at least one recommended) === DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/... TELEGRAM_BOT_TOKEN=your-telegram-bot-token TELEGRAM_CHAT_ID=your-chat-id # === Trading Settings === TRADING_ENABLED=false # Set to true to enable trading PAPER_TRADING=true # Use paper account MAX_POSITION_SIZE=0.20 # Max 20% per position CONFIDENCE_THRESHOLD=70 # Min confidence for trades ``` ## 🎯 Quick Start ### 1. Test Connection ```bash # Test IBKR connection python -c "from autonomous.ibkr_connector import IBKRConnector; import asyncio; asyncio.run(IBKRConnector().connect())" ``` ### 2. Start Monitoring (Safe Mode) ```bash # Start with monitoring only (no trading) TRADING_ENABLED=false python autonomous_trader.py ``` ### 3. Paper Trading ```bash # Test with paper account PAPER_TRADING=true TRADING_ENABLED=true python autonomous_trader.py ``` ### 4. Live Trading (⚠️ Use with caution!) ```bash # Live trading - BE VERY CAREFUL PAPER_TRADING=false TRADING_ENABLED=true python autonomous_trader.py ``` ## πŸ“Š System Architecture ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ AUTONOMOUS TRADER β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ IBKR β”‚ β”‚ Data β”‚ β”‚ AI β”‚ β”‚ β”‚ β”‚ Connectorβ”‚ β”‚Aggregatorβ”‚ β”‚ Analysis β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚Signal Processorβ”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β” β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β” β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β” β”‚ β”‚ β”‚ Alerts β”‚ β”‚ Risk β”‚ β”‚ Orders β”‚ β”‚ β”‚ β”‚ Engine β”‚ β”‚ Managerβ”‚ β”‚(Future)β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ## πŸ“± Alert Examples ### Trading Signal Alert ``` 🎯 ACTION: BUY πŸ“ˆ TICKER: NVDA πŸ’° ENTRY: $132.50 - $133.00 🎯 TARGET 1: $138.00 (+4.1%) πŸ›‘ STOP LOSS: $129.00 (-2.6%) πŸ“Š CONFIDENCE: 85% πŸ“ REASONING: β€’ Congressional buying detected β€’ Strong technical breakout β€’ Positive earnings momentum ``` ### Risk Warning Alert ``` ⚠️ Risk Alert: AVGO AVGO is down 5.2% Current: $912.45 P&L: -$2,145.00 Consider stop loss or hedging ``` ## πŸ• Schedule The system runs these tasks automatically: | Task | Frequency | Description | |------|-----------|-------------| | Portfolio Sync | 5 min | Update positions and P&L | | Market Scan | 15 min | Look for opportunities | | Congressional Check | 1 hour | New politician trades | | News Monitor | 30 min | Sentiment analysis | | Risk Check | 30 min | Portfolio risk assessment | | Daily Summary | 4:30 PM | End of day report | ## πŸ›‘οΈ Safety Features 1. **Position Limits** - Max 20% in any single position 2. **Daily Loss Limit** - Stops at 5% daily loss 3. **Paper Trading Mode** - Test without real money 4. **Manual Confirmation** - Required for large trades 5. **Stop Loss** - Automatic stop loss recommendations 6. **Circuit Breakers** - Halts during extreme volatility ## πŸ”§ Customization ### Add Custom Indicators Edit `autonomous/signal_processor.py`: ```python async def calculate_custom_indicator(self, ticker: str): # Your custom logic here pass ``` ### Modify Alert Channels Edit `autonomous/alert_engine.py`: ```python async def _send_custom_channel(self, title, message): # Your custom notification method pass ``` ### Change Trading Rules Edit `autonomous/config/settings.py`: ```python MAX_POSITION_SIZE = 0.15 # 15% instead of 20% CONFIDENCE_THRESHOLD = 80 # Require 80% confidence ``` ## πŸ“ˆ Performance Monitoring View logs and metrics: ```bash # View real-time logs tail -f autonomous_trader.log # Check alert history python -c "from autonomous.alert_engine import AlertEngine; print(AlertEngine().alert_history)" ``` ## πŸ› Troubleshooting ### IBKR Connection Issues - Ensure TWS/Gateway is running - Check API settings are enabled - Verify port number matches config - Check firewall isn't blocking connection ### No Alerts Received - Verify at least one notification channel is configured - Check webhook URLs are correct - Test with console output first ### High API Usage - Reduce `MARKET_SCAN_INTERVAL` in config - Use fewer models or smaller LLMs - Implement caching for repeated queries ## ⚠️ Disclaimer **This system is for educational and research purposes only.** - Trading involves substantial risk of loss - Past performance doesn't guarantee future results - Always do your own research - Start with paper trading - Never risk more than you can afford to lose ## πŸ“š Resources - [IBKR API Documentation](https://interactivebrokers.github.io/) - [QuiverQuant API](https://www.quiverquant.com/api) - [TradingAgents Documentation](../README.md) - [Discord Webhooks Guide](https://discord.com/developers/docs/resources/webhook) ## 🀝 Support For issues or questions: 1. Check the logs: `autonomous_trader.log` 2. Review configuration in `.env` 3. Test components individually 4. Open an issue with error details --- **Remember**: Start small, test thoroughly, and never trade with money you can't afford to lose! 🎯