448 lines
10 KiB
Markdown
448 lines
10 KiB
Markdown
# Configuration Guide
|
|
|
|
Complete reference for configuring TradingAgents.
|
|
|
|
## Configuration File
|
|
|
|
Location: `tradingagents/default_config.py`
|
|
|
|
## Default Configuration
|
|
|
|
```python
|
|
DEFAULT_CONFIG = {
|
|
# Directories
|
|
"project_dir": "<auto-detected>",
|
|
"results_dir": "./results",
|
|
"data_cache_dir": "./dataflows/data_cache",
|
|
|
|
# LLM settings
|
|
"llm_provider": "openai",
|
|
"deep_think_llm": "o4-mini",
|
|
"quick_think_llm": "gpt-4o-mini",
|
|
"backend_url": "https://api.openai.com/v1",
|
|
|
|
# Workflow settings
|
|
"max_debate_rounds": 1,
|
|
"max_risk_discuss_rounds": 1,
|
|
"max_recur_limit": 100,
|
|
|
|
# Data vendors
|
|
"data_vendors": {
|
|
"core_stock_apis": "yfinance",
|
|
"technical_indicators": "yfinance",
|
|
"fundamental_data": "alpha_vantage",
|
|
"news_data": "alpha_vantage"
|
|
},
|
|
|
|
# Tool-level overrides (optional)
|
|
"tool_vendors": {}
|
|
}
|
|
```
|
|
|
|
## Configuration Options
|
|
|
|
### Directory Settings
|
|
|
|
#### project_dir
|
|
- **Type**: str
|
|
- **Default**: Auto-detected from package location
|
|
- **Description**: Root directory of TradingAgents package
|
|
|
|
#### results_dir
|
|
- **Type**: str
|
|
- **Default**: `"./results"`
|
|
- **Environment Variable**: `TRADINGAGENTS_RESULTS_DIR`
|
|
- **Description**: Directory for storing analysis results
|
|
- **Example**:
|
|
```python
|
|
config["results_dir"] = "/path/to/results"
|
|
# Or set environment variable
|
|
export TRADINGAGENTS_RESULTS_DIR=/path/to/results
|
|
```
|
|
|
|
#### data_cache_dir
|
|
- **Type**: str
|
|
- **Default**: `"./dataflows/data_cache"`
|
|
- **Description**: Directory for caching data vendor responses
|
|
|
|
### LLM Settings
|
|
|
|
#### llm_provider
|
|
- **Type**: str
|
|
- **Options**: `"openai"`, `"anthropic"`, `"google"`, `"openrouter"`, `"ollama"`
|
|
- **Default**: `"openai"`
|
|
- **Description**: LLM provider selection
|
|
|
|
**Examples**:
|
|
```python
|
|
# OpenAI (default)
|
|
config["llm_provider"] = "openai"
|
|
|
|
# Anthropic
|
|
config["llm_provider"] = "anthropic"
|
|
|
|
# OpenRouter (unified access)
|
|
config["llm_provider"] = "openrouter"
|
|
|
|
# Google Generative AI
|
|
config["llm_provider"] = "google"
|
|
|
|
# Ollama (local)
|
|
config["llm_provider"] = "ollama"
|
|
```
|
|
|
|
#### deep_think_llm
|
|
- **Type**: str
|
|
- **Default**: `"o4-mini"`
|
|
- **Description**: Model for complex reasoning tasks
|
|
- **Use Cases**: Research debates, trading decisions, risk assessment
|
|
|
|
**Recommended Models by Provider**:
|
|
```python
|
|
# OpenAI
|
|
config["deep_think_llm"] = "o4-mini" # Fast, affordable
|
|
config["deep_think_llm"] = "o1-preview" # Best reasoning
|
|
|
|
# Anthropic
|
|
config["deep_think_llm"] = "claude-sonnet-4-20250514"
|
|
|
|
# OpenRouter
|
|
config["deep_think_llm"] = "anthropic/claude-sonnet-4.5"
|
|
|
|
# Google
|
|
config["deep_think_llm"] = "gemini-2.0-flash"
|
|
|
|
# Ollama
|
|
config["deep_think_llm"] = "mistral"
|
|
```
|
|
|
|
#### quick_think_llm
|
|
- **Type**: str
|
|
- **Default**: `"gpt-4o-mini"`
|
|
- **Description**: Model for fast, routine tasks
|
|
- **Use Cases**: Analyst reports, data summarization, tool calling
|
|
|
|
**Recommended Models**:
|
|
```python
|
|
# OpenAI
|
|
config["quick_think_llm"] = "gpt-4o-mini" # Most cost-effective
|
|
|
|
# Anthropic
|
|
config["quick_think_llm"] = "claude-sonnet-4-20250514"
|
|
|
|
# OpenRouter
|
|
config["quick_think_llm"] = "openai/gpt-4o-mini"
|
|
```
|
|
|
|
#### backend_url
|
|
- **Type**: str
|
|
- **Default**: `"https://api.openai.com/v1"`
|
|
- **Description**: API endpoint for LLM provider
|
|
|
|
**Examples**:
|
|
```python
|
|
# OpenAI
|
|
config["backend_url"] = "https://api.openai.com/v1"
|
|
|
|
# Anthropic
|
|
config["backend_url"] = "https://api.anthropic.com"
|
|
|
|
# OpenRouter
|
|
config["backend_url"] = "https://openrouter.ai/api/v1"
|
|
|
|
# Ollama (local)
|
|
config["backend_url"] = "http://localhost:11434/v1"
|
|
```
|
|
|
|
### Workflow Settings
|
|
|
|
#### max_debate_rounds
|
|
- **Type**: int
|
|
- **Default**: `1`
|
|
- **Range**: 1-5
|
|
- **Description**: Number of bull/bear debate rounds
|
|
- **Impact**:
|
|
- More rounds = deeper analysis
|
|
- More rounds = higher cost and latency
|
|
- Diminishing returns after 2-3 rounds
|
|
|
|
**Examples**:
|
|
```python
|
|
# Fast, cost-effective
|
|
config["max_debate_rounds"] = 1
|
|
|
|
# Balanced
|
|
config["max_debate_rounds"] = 2
|
|
|
|
# Deep analysis
|
|
config["max_debate_rounds"] = 3
|
|
```
|
|
|
|
#### max_risk_discuss_rounds
|
|
- **Type**: int
|
|
- **Default**: `1`
|
|
- **Range**: 1-3
|
|
- **Description**: Number of risk management discussion rounds
|
|
|
|
#### max_recur_limit
|
|
- **Type**: int
|
|
- **Default**: `100`
|
|
- **Description**: Maximum recursion limit for graph execution
|
|
|
|
### Data Vendor Settings
|
|
|
|
#### data_vendors
|
|
- **Type**: Dict[str, str]
|
|
- **Description**: Category-level data vendor configuration
|
|
|
|
**Available Categories**:
|
|
|
|
##### core_stock_apis
|
|
- **Options**: `"yfinance"`, `"alpha_vantage"`, `"local"`
|
|
- **Default**: `"yfinance"`
|
|
- **Purpose**: Stock prices and quotes
|
|
|
|
##### technical_indicators
|
|
- **Options**: `"yfinance"`, `"alpha_vantage"`, `"local"`
|
|
- **Default**: `"yfinance"`
|
|
- **Purpose**: Technical indicators (MACD, RSI, etc.)
|
|
|
|
##### fundamental_data
|
|
- **Options**: `"openai"`, `"alpha_vantage"`, `"local"`
|
|
- **Default**: `"alpha_vantage"`
|
|
- **Purpose**: Company financials and ratios
|
|
|
|
##### news_data
|
|
- **Options**: `"openai"`, `"alpha_vantage"`, `"google"`, `"local"`
|
|
- **Default**: `"alpha_vantage"`
|
|
- **Purpose**: News articles and events
|
|
|
|
**Example**:
|
|
```python
|
|
config["data_vendors"] = {
|
|
"core_stock_apis": "yfinance",
|
|
"technical_indicators": "yfinance",
|
|
"fundamental_data": "alpha_vantage",
|
|
"news_data": "google" # Use Google for news
|
|
}
|
|
```
|
|
|
|
#### tool_vendors
|
|
- **Type**: Dict[str, str]
|
|
- **Description**: Tool-level vendor overrides (takes precedence over categories)
|
|
|
|
**Example**:
|
|
```python
|
|
config["tool_vendors"] = {
|
|
"get_stock_data": "alpha_vantage", # Override category default
|
|
"get_news": "google" # Override category default
|
|
}
|
|
```
|
|
|
|
## Environment Variables
|
|
|
|
### LLM Provider API Keys
|
|
|
|
```bash
|
|
# OpenAI (required for OpenAI provider or embeddings)
|
|
export OPENAI_API_KEY=sk-your_key_here
|
|
|
|
# Anthropic (required for Anthropic provider)
|
|
export ANTHROPIC_API_KEY=sk-ant-your_key_here
|
|
|
|
# OpenRouter (required for OpenRouter provider)
|
|
export OPENROUTER_API_KEY=sk-or-v1-your_key_here
|
|
|
|
# Google (required for Google provider)
|
|
export GOOGLE_API_KEY=your_key_here
|
|
```
|
|
|
|
### Data Vendor API Keys
|
|
|
|
```bash
|
|
# Alpha Vantage (required for fundamental and news data)
|
|
export ALPHA_VANTAGE_API_KEY=your_key_here
|
|
```
|
|
|
|
### Application Settings
|
|
|
|
```bash
|
|
# Results directory
|
|
export TRADINGAGENTS_RESULTS_DIR=./results
|
|
```
|
|
|
|
## Configuration Examples
|
|
|
|
### Production Configuration
|
|
|
|
```python
|
|
from tradingagents.default_config import DEFAULT_CONFIG
|
|
|
|
config = DEFAULT_CONFIG.copy()
|
|
|
|
# Use production-grade models
|
|
config["llm_provider"] = "openai"
|
|
config["deep_think_llm"] = "o1-preview" # Best reasoning
|
|
config["quick_think_llm"] = "gpt-4o" # High quality
|
|
|
|
# Deep analysis
|
|
config["max_debate_rounds"] = 2
|
|
config["max_risk_discuss_rounds"] = 2
|
|
|
|
# Reliable data sources
|
|
config["data_vendors"] = {
|
|
"core_stock_apis": "alpha_vantage",
|
|
"technical_indicators": "alpha_vantage",
|
|
"fundamental_data": "alpha_vantage",
|
|
"news_data": "alpha_vantage"
|
|
}
|
|
```
|
|
|
|
### Development/Testing Configuration
|
|
|
|
```python
|
|
config = DEFAULT_CONFIG.copy()
|
|
|
|
# Use cost-effective models
|
|
config["llm_provider"] = "openai"
|
|
config["deep_think_llm"] = "o4-mini"
|
|
config["quick_think_llm"] = "gpt-4o-mini"
|
|
|
|
# Fast analysis
|
|
config["max_debate_rounds"] = 1
|
|
config["max_risk_discuss_rounds"] = 1
|
|
|
|
# Free data sources
|
|
config["data_vendors"] = {
|
|
"core_stock_apis": "yfinance",
|
|
"technical_indicators": "yfinance",
|
|
"fundamental_data": "alpha_vantage", # Free tier
|
|
"news_data": "google"
|
|
}
|
|
```
|
|
|
|
### Cost-Optimized Configuration
|
|
|
|
```python
|
|
config = DEFAULT_CONFIG.copy()
|
|
|
|
# Use OpenRouter for competitive pricing
|
|
config["llm_provider"] = "openrouter"
|
|
config["deep_think_llm"] = "anthropic/claude-sonnet-4.5"
|
|
config["quick_think_llm"] = "openai/gpt-4o-mini"
|
|
config["backend_url"] = "https://openrouter.ai/api/v1"
|
|
|
|
# Minimal debate rounds
|
|
config["max_debate_rounds"] = 1
|
|
config["max_risk_discuss_rounds"] = 1
|
|
```
|
|
|
|
### Offline/Local Configuration
|
|
|
|
```python
|
|
config = DEFAULT_CONFIG.copy()
|
|
|
|
# Use local Ollama models
|
|
config["llm_provider"] = "ollama"
|
|
config["deep_think_llm"] = "mistral"
|
|
config["quick_think_llm"] = "mistral"
|
|
config["backend_url"] = "http://localhost:11434/v1"
|
|
|
|
# Use local data cache
|
|
config["data_vendors"] = {
|
|
"core_stock_apis": "local",
|
|
"technical_indicators": "local",
|
|
"fundamental_data": "local",
|
|
"news_data": "local"
|
|
}
|
|
```
|
|
|
|
## Using Configuration
|
|
|
|
### In Code
|
|
|
|
```python
|
|
from tradingagents.graph.trading_graph import TradingAgentsGraph
|
|
from tradingagents.default_config import DEFAULT_CONFIG
|
|
|
|
# Create custom config
|
|
config = DEFAULT_CONFIG.copy()
|
|
config["llm_provider"] = "anthropic"
|
|
config["max_debate_rounds"] = 2
|
|
|
|
# Initialize with config
|
|
ta = TradingAgentsGraph(config=config)
|
|
|
|
# Run analysis
|
|
state, decision = ta.propagate("NVDA", "2024-05-10")
|
|
```
|
|
|
|
### In CLI
|
|
|
|
The CLI reads configuration from `default_config.py` and allows runtime overrides through the interactive menu.
|
|
|
|
### With .env File
|
|
|
|
Create `.env` file:
|
|
|
|
```env
|
|
# LLM Provider
|
|
OPENAI_API_KEY=sk-your_key_here
|
|
ANTHROPIC_API_KEY=sk-ant-your_key_here
|
|
|
|
# Data Vendor
|
|
ALPHA_VANTAGE_API_KEY=your_key_here
|
|
|
|
# Application
|
|
TRADINGAGENTS_RESULTS_DIR=./results
|
|
```
|
|
|
|
Load in Python:
|
|
|
|
```python
|
|
from dotenv import load_dotenv
|
|
load_dotenv()
|
|
|
|
# Now environment variables are available
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
1. **Never Hardcode Keys**: Use environment variables
|
|
2. **Copy Default Config**: Always `config = DEFAULT_CONFIG.copy()`
|
|
3. **Start Minimal**: Use 1 debate round initially
|
|
4. **Test Locally**: Use Ollama for development
|
|
5. **Monitor Costs**: Track LLM API usage
|
|
6. **Cache Aggressively**: Use local data vendor when possible
|
|
7. **Validate Configuration**: Check keys before running
|
|
|
|
## Troubleshooting
|
|
|
|
### Missing API Keys
|
|
|
|
**Error**: `ValueError: OPENAI_API_KEY environment variable is required`
|
|
|
|
**Solution**:
|
|
```bash
|
|
export OPENAI_API_KEY=your_key_here
|
|
```
|
|
|
|
### Invalid Model Names
|
|
|
|
**Error**: `Invalid model name: 'gpt-5'`
|
|
|
|
**Solution**: Check provider documentation for valid model names
|
|
|
|
### Data Vendor Errors
|
|
|
|
**Error**: `VendorError: Alpha Vantage API key invalid`
|
|
|
|
**Solution**: Verify API key is correct and has remaining quota
|
|
|
|
## See Also
|
|
|
|
- [LLM Integration Architecture](../architecture/llm-integration.md)
|
|
- [Data Flow Architecture](../architecture/data-flow.md)
|
|
- [Adding LLM Provider](adding-llm-provider.md)
|
|
- [Quick Start Guide](../QUICKSTART.md)
|