TradingAgents/docs/CONFIGURATION_GUIDE.md

691 lines
15 KiB
Markdown

# TradingAgents Configuration Guide
**Complete guide to configuring TradingAgents for different scenarios**
---
## Table of Contents
1. [Quick Start](#quick-start)
2. [Configuration Methods](#configuration-methods)
3. [Deployment Scenarios](#deployment-scenarios)
4. [API Keys Setup](#api-keys-setup)
5. [Configuration Reference](#configuration-reference)
6. [CLI vs Module Usage](#cli-vs-module-usage)
7. [Environment Variables](#environment-variables)
8. [Troubleshooting](#troubleshooting)
---
## Quick Start
### 1. Copy Environment Template
```bash
cp .env.example .env
```
### 2. Choose Your Scenario
Open `.env` and uncomment one of the scenarios:
- **Scenario 1**: OpenAI Everything (Recommended)
- **Scenario 2**: OpenRouter + OpenAI Embeddings (Cost Optimized)
- **Scenario 3**: All Local with Ollama (Offline/Private)
- **Scenario 4**: Anthropic + OpenAI Embeddings
- **Scenario 5**: Google Gemini + OpenAI Embeddings
- **Scenario 6**: OpenRouter + No Memory (Minimal)
- **Scenario 7**: Mixed Models (Advanced)
### 3. Add Your API Keys
Replace placeholder values with your actual API keys.
### 4. Run TradingAgents
**CLI Mode:**
```bash
python -m cli.main
```
**Module Mode:**
```python
from tradingagents.graph.trading_graph import TradingAgentsGraph
graph = TradingAgentsGraph(["market", "news"])
final_state, decision = graph.propagate("AAPL", "2025-01-15")
```
---
## Configuration Methods
### Method 1: Environment Variables (.env file)
**Best for**: CLI usage, development
```bash
# .env file
OPENAI_API_KEY=sk-proj-...
OPENROUTER_API_KEY=sk-or-v1-...
TRADINGAGENTS_LLM_PROVIDER=openrouter
```
The system automatically loads `.env` file on startup.
### Method 2: Config Dictionary (Python)
**Best for**: Module usage, programmatic control
```python
config = {
"llm_provider": "openrouter",
"backend_url": "https://openrouter.ai/api/v1",
"deep_think_llm": "deepseek/deepseek-chat-v3-0324:free",
"quick_think_llm": "meta-llama/llama-3.3-8b-instruct:free",
"embedding_provider": "openai",
"embedding_backend_url": "https://api.openai.com/v1",
"enable_memory": True,
}
graph = TradingAgentsGraph(["market"], config=config)
```
### Method 3: CLI Interactive
**Best for**: Quick testing, exploration
```bash
python -m cli.main
```
Follow the interactive prompts to select:
- Ticker symbol
- Analysis date
- Analysts team
- Research depth
- LLM provider
- Thinking agents
- Embedding provider
---
## Deployment Scenarios
### Scenario 1: OpenAI Everything ⭐ Recommended
**Use Case**: Production deployment with full features
**Configuration:**
```bash
# .env
OPENAI_API_KEY=sk-proj-your_key_here
ALPHA_VANTAGE_API_KEY=your_key_here
```
**Pros:**
- ✅ Full feature support
- ✅ Reliable and fast
- ✅ Single provider simplicity
**Cons:**
- 💰 Moderate cost (chat + embeddings)
**Cost**: ~$0.50-$2.00 per analysis (depending on depth)
---
### Scenario 2: OpenRouter + OpenAI Embeddings 💰 Cost Optimized
**Use Case**: Development, testing, cost optimization
**Configuration:**
```bash
# .env
OPENROUTER_API_KEY=sk-or-v1-your_key_here
OPENAI_API_KEY=sk-proj-your_key_here
ALPHA_VANTAGE_API_KEY=your_key_here
TRADINGAGENTS_LLM_PROVIDER=openrouter
TRADINGAGENTS_BACKEND_URL=https://openrouter.ai/api/v1
TRADINGAGENTS_EMBEDDING_PROVIDER=openai
TRADINGAGENTS_EMBEDDING_BACKEND_URL=https://api.openai.com/v1
```
**Pros:**
- ✅ Very low cost (free chat models)
- ✅ Full memory/embedding support
- ✅ Good for development
**Cons:**
- ⚠️ Free models may be slower
- ⚠️ Quality varies by model
**Cost**: ~$0.05-$0.20 per analysis (embeddings only)
---
### Scenario 3: All Local with Ollama 🔒 Privacy First
**Use Case**: Offline deployment, privacy requirements, no API costs
**Prerequisites:**
```bash
# Install Ollama
# Visit: https://ollama.ai
# Pull required models
ollama pull llama3.1
ollama pull llama3.2
ollama pull nomic-embed-text
```
**Configuration:**
```bash
# .env
ALPHA_VANTAGE_API_KEY=your_key_here
TRADINGAGENTS_LLM_PROVIDER=ollama
TRADINGAGENTS_BACKEND_URL=http://localhost:11434/v1
TRADINGAGENTS_EMBEDDING_PROVIDER=ollama
TRADINGAGENTS_EMBEDDING_BACKEND_URL=http://localhost:11434/v1
TRADINGAGENTS_EMBEDDING_MODEL=nomic-embed-text
```
**Pros:**
- ✅ Completely free
- ✅ Full privacy (no data leaves your machine)
- ✅ Works offline
- ✅ No rate limits
**Cons:**
- ⚠️ Requires local compute resources
- ⚠️ Slower than cloud APIs
- ⚠️ Quality depends on local model
**Cost**: $0 (requires GPU for best performance)
---
### Scenario 4: Anthropic + OpenAI Embeddings 🧠 High Quality
**Use Case**: High-quality reasoning and analysis
**Configuration:**
```bash
# .env
ANTHROPIC_API_KEY=sk-ant-your_key_here
OPENAI_API_KEY=sk-proj-your_key_here
ALPHA_VANTAGE_API_KEY=your_key_here
TRADINGAGENTS_LLM_PROVIDER=anthropic
TRADINGAGENTS_BACKEND_URL=https://api.anthropic.com/
TRADINGAGENTS_EMBEDDING_PROVIDER=openai
TRADINGAGENTS_EMBEDDING_BACKEND_URL=https://api.openai.com/v1
```
**Pros:**
- ✅ Excellent reasoning (Claude)
- ✅ Long context support
- ✅ High-quality outputs
**Cons:**
- 💰 Higher cost
**Cost**: ~$1.00-$5.00 per analysis (depending on model)
---
### Scenario 5: Google Gemini + OpenAI Embeddings 📊 Balanced
**Use Case**: Cost-effective with good performance
**Configuration:**
```bash
# .env
GOOGLE_API_KEY=your_key_here
OPENAI_API_KEY=sk-proj-your_key_here
ALPHA_VANTAGE_API_KEY=your_key_here
TRADINGAGENTS_LLM_PROVIDER=google
TRADINGAGENTS_EMBEDDING_PROVIDER=openai
```
**Pros:**
- ✅ Good quality/cost ratio
- ✅ Fast response times
- ✅ Multimodal capabilities
**Cons:**
- ⚠️ Newer, less tested in production
**Cost**: ~$0.30-$1.00 per analysis
---
### Scenario 6: OpenRouter + No Memory 🚀 Minimal
**Use Case**: Testing, debugging, minimal cost
**Configuration:**
```bash
# .env
OPENROUTER_API_KEY=sk-or-v1-your_key_here
ALPHA_VANTAGE_API_KEY=your_key_here
TRADINGAGENTS_LLM_PROVIDER=openrouter
TRADINGAGENTS_BACKEND_URL=https://openrouter.ai/api/v1
TRADINGAGENTS_ENABLE_MEMORY=false
```
**Pros:**
- ✅ Minimal cost
- ✅ Fast setup
- ✅ No embedding API needed
**Cons:**
- ⚠️ No historical context
- ⚠️ Agents can't learn from past decisions
**Cost**: ~$0.00-$0.10 per analysis (free models)
---
### Scenario 7: Mixed Models 🎛️ Advanced
**Use Case**: Optimize for specific use cases
**Configuration:**
```bash
# .env
# Cheap chat models
OPENROUTER_API_KEY=sk-or-v1-your_key_here
TRADINGAGENTS_LLM_PROVIDER=openrouter
TRADINGAGENTS_DEEP_THINK_LLM=deepseek/deepseek-chat-v3-0324:free
TRADINGAGENTS_QUICK_THINK_LLM=meta-llama/llama-3.3-8b-instruct:free
# Reliable embeddings
OPENAI_API_KEY=sk-proj-your_key_here
TRADINGAGENTS_EMBEDDING_PROVIDER=openai
TRADINGAGENTS_EMBEDDING_MODEL=text-embedding-3-small
# Data sources
ALPHA_VANTAGE_API_KEY=your_key_here
```
**Pros:**
- ✅ Maximum flexibility
- ✅ Optimize each component
- ✅ Balance cost/performance
**Cons:**
- ⚠️ More complex setup
- ⚠️ Multiple API keys required
**Cost**: Varies based on choices
---
## API Keys Setup
### OpenAI
1. Visit: https://platform.openai.com/api-keys
2. Click "Create new secret key"
3. Copy key (format: `sk-proj-...`)
4. Add to `.env`: `OPENAI_API_KEY=sk-proj-...`
**Used for**: Chat models, embeddings
### OpenRouter
1. Visit: https://openrouter.ai/keys
2. Create account and generate key
3. Copy key (format: `sk-or-v1-...`)
4. Add to `.env`: `OPENROUTER_API_KEY=sk-or-v1-...`
**Used for**: Chat models (many providers)
### Anthropic
1. Visit: https://console.anthropic.com/
2. Navigate to API Keys
3. Create new key (format: `sk-ant-...`)
4. Add to `.env`: `ANTHROPIC_API_KEY=sk-ant-...`
**Used for**: Claude chat models
### Google
1. Visit: https://makersuite.google.com/app/apikey
2. Create API key
3. Copy key (format: `AI...`)
4. Add to `.env`: `GOOGLE_API_KEY=AI...`
**Used for**: Gemini chat models
### Alpha Vantage
1. Visit: https://www.alphavantage.co/support/#api-key
2. Get free API key
3. Add to `.env`: `ALPHA_VANTAGE_API_KEY=...`
**Used for**: Financial data, news
---
## Configuration Reference
### Complete Config Dictionary
```python
config = {
# LLM Provider Settings
"llm_provider": "openai", # openai, openrouter, anthropic, google, ollama
"backend_url": "https://api.openai.com/v1",
"deep_think_llm": "o4-mini", # Model for deep reasoning
"quick_think_llm": "gpt-4o-mini", # Model for quick tasks
# Embedding Settings (Separate from chat)
"embedding_provider": "openai", # openai, ollama, none
"embedding_backend_url": "https://api.openai.com/v1",
"embedding_model": "text-embedding-3-small",
"enable_memory": True, # Enable/disable memory system
# Logging Settings
"log_level": "INFO", # DEBUG, INFO, WARNING, ERROR, CRITICAL
"log_dir": "logs",
"log_to_console": True,
"log_to_file": True,
# Research Settings
"max_debate_rounds": 1, # 1-5, higher = deeper analysis
"max_risk_discuss_rounds": 1, # 1-5, higher = more thorough risk assessment
# Data Vendor Settings
"data_vendors": {
"core_stock_apis": "yfinance", # yfinance, alpha_vantage, local
"technical_indicators": "yfinance",
"fundamental_data": "alpha_vantage",
"news_data": "alpha_vantage",
},
# Directory Settings
"project_dir": ".",
"results_dir": "./results",
"data_cache_dir": "./dataflows/data_cache",
}
```
---
## CLI vs Module Usage
### CLI Usage (Interactive)
**When to use**: Quick analysis, exploration, non-technical users
**Run:**
```bash
python -m cli.main
```
**Workflow:**
1. Select ticker (e.g., AAPL)
2. Select date
3. Choose analysts (market, news, fundamentals, social)
4. Choose research depth (shallow, medium, deep)
5. Choose LLM provider (OpenAI, OpenRouter, Anthropic, Google, Ollama)
6. Choose thinking agents (quick/deep models)
7. Choose embedding provider (OpenAI, Ollama, Disable)
**Configuration:**
- API keys from `.env` file
- Prompts guide you through options
- Results saved to `results/` directory
### Module Usage (Programmatic)
**When to use**: Automation, integration, batch processing
**Example:**
```python
from tradingagents.graph.trading_graph import TradingAgentsGraph
from datetime import datetime
# Configure
config = {
"llm_provider": "openrouter",
"backend_url": "https://openrouter.ai/api/v1",
"deep_think_llm": "deepseek/deepseek-chat-v3-0324:free",
"quick_think_llm": "meta-llama/llama-3.3-8b-instruct:free",
"embedding_provider": "openai",
"embedding_backend_url": "https://api.openai.com/v1",
"enable_memory": True,
"log_level": "INFO",
}
# Initialize
graph = TradingAgentsGraph(
selected_analysts=["market", "news", "fundamentals"],
config=config,
debug=False
)
# Run analysis
tickers = ["AAPL", "GOOGL", "MSFT"]
for ticker in tickers:
final_state, decision = graph.propagate(ticker, datetime.now().strftime("%Y-%m-%d"))
print(f"{ticker}: {decision}")
# Optionally reflect on results
# graph.reflect_and_remember(returns_losses)
```
**Configuration:**
- Full control in code
- No interactive prompts
- Ideal for automation
---
## Environment Variables
### Provider Configuration
| Variable | Description | Example |
|----------|-------------|---------|
| `TRADINGAGENTS_LLM_PROVIDER` | Chat LLM provider | `openrouter` |
| `TRADINGAGENTS_BACKEND_URL` | Chat API endpoint | `https://openrouter.ai/api/v1` |
| `TRADINGAGENTS_DEEP_THINK_LLM` | Deep reasoning model | `deepseek/deepseek-chat-v3-0324:free` |
| `TRADINGAGENTS_QUICK_THINK_LLM` | Quick thinking model | `meta-llama/llama-3.3-8b-instruct:free` |
### Embedding Configuration
| Variable | Description | Example |
|----------|-------------|---------|
| `TRADINGAGENTS_EMBEDDING_PROVIDER` | Embedding provider | `openai` |
| `TRADINGAGENTS_EMBEDDING_BACKEND_URL` | Embedding API endpoint | `https://api.openai.com/v1` |
| `TRADINGAGENTS_EMBEDDING_MODEL` | Embedding model | `text-embedding-3-small` |
| `TRADINGAGENTS_ENABLE_MEMORY` | Enable memory system | `true` or `false` |
### Logging Configuration
| Variable | Description | Example |
|----------|-------------|---------|
| `TRADINGAGENTS_LOG_LEVEL` | Logging verbosity | `INFO` |
| `TRADINGAGENTS_LOG_DIR` | Log directory | `logs` |
| `TRADINGAGENTS_LOG_TO_CONSOLE` | Console logging | `true` |
| `TRADINGAGENTS_LOG_TO_FILE` | File logging | `true` |
---
## Troubleshooting
### Issue: No auth credentials found
**Error:**
```
AuthenticationError: Error code: 401 - {'error': {'message': 'No auth credentials found'}}
```
**Solution:**
1. Check if API key is set in `.env`
2. Verify key format (e.g., `sk-proj-...` for OpenAI)
3. Run environment checker:
```bash
python3 check_env_setup.py
```
### Issue: Failed to get embedding
**Error:**
```
ERROR | MEMORY | Failed to get embedding: 401 Unauthorized
```
**Solution:**
1. Set `OPENAI_API_KEY` if using OpenAI for embeddings
2. OR set `TRADINGAGENTS_ENABLE_MEMORY=false` to disable
3. OR use Ollama for local embeddings
### Issue: Memory disabled unexpectedly
**Logs:**
```
WARNING | MEMORY | Memory disabled for 'bull_memory'
```
**Solution:**
1. Check `TRADINGAGENTS_ENABLE_MEMORY=true`
2. Verify embedding provider is valid
3. Check embedding API key is set
### Issue: Wrong provider selected
**Error:**
```
Unsupported LLM provider: xyz
```
**Solution:**
1. Check `TRADINGAGENTS_LLM_PROVIDER` value
2. Valid options: `openai`, `openrouter`, `anthropic`, `google`, `ollama`
3. Case-sensitive!
### Issue: Module not found
**Error:**
```
ModuleNotFoundError: No module named 'tradingagents'
```
**Solution:**
```bash
# Install in development mode
pip install -e .
# Or install dependencies
pip install -r requirements.txt
```
---
## Verification Checklist
Before running TradingAgents, verify:
- [ ] `.env` file exists (copied from `.env.example`)
- [ ] API keys are set correctly
- [ ] Provider configuration matches your API keys
- [ ] Embedding provider is configured if memory enabled
- [ ] Log directory is writable
- [ ] Dependencies are installed
**Quick check:**
```bash
python3 check_env_setup.py
```
---
## Best Practices
### Development
```bash
# Use cost-optimized setup
OPENROUTER_API_KEY=sk-or-v1-...
OPENAI_API_KEY=sk-proj-...
TRADINGAGENTS_LLM_PROVIDER=openrouter
TRADINGAGENTS_EMBEDDING_PROVIDER=openai
TRADINGAGENTS_LOG_LEVEL=DEBUG
```
### Production
```bash
# Use reliable providers
OPENAI_API_KEY=sk-proj-...
TRADINGAGENTS_LLM_PROVIDER=openai
TRADINGAGENTS_LOG_LEVEL=INFO
TRADINGAGENTS_LOG_TO_FILE=true
```
### Testing/CI
```bash
# Disable expensive features
OPENROUTER_API_KEY=sk-or-v1-...
TRADINGAGENTS_LLM_PROVIDER=openrouter
TRADINGAGENTS_ENABLE_MEMORY=false
TRADINGAGENTS_LOG_LEVEL=WARNING
```
---
## Security Notes
1. **Never commit `.env` to git**
```bash
# Add to .gitignore
echo ".env" >> .gitignore
```
2. **Use separate keys for dev/prod**
3. **Rotate keys regularly**
4. **Monitor API usage**
- Set spending limits in provider dashboards
- Review `logs/api_calls.log` for usage tracking
5. **Use least-privilege keys**
- Restrict key permissions when possible
---
## Support
For more help:
- **Environment Setup**: `check_env_setup.py`
- **Embedding Configuration**: `docs/EMBEDDING_CONFIGURATION.md`
- **Logging System**: `docs/LOGGING.md`
- **Feature Overview**: `FEATURE_EMBEDDING_README.md`
---
**Last Updated**: 2025-01-15
**Version**: 2.0
**Status**: Production Ready ✅