TradingAgents/FRED_MACRO_INTEGRATION.md

211 lines
5.6 KiB
Markdown

# FRED API Macro Data Integration
## Summary
Added FRED (Federal Reserve Economic Data) API support to the TradingAgents vendor methods system for macroeconomic analysis.
## Files Added
### 1. `tradingagents/dataflows/macro_utils.py`
New module providing FRED API integration with the following functions:
- **`get_fred_api_key()`** - Get FRED API key from config or environment
- **`get_fred_data(series_id, start_date, end_date)`** - Core FRED API wrapper
- **`get_treasury_yield_curve(curr_date)`** - Treasury yield curve data with inversion analysis
- **`get_economic_indicators_report(curr_date, lookback_days=90)`** - Comprehensive economic indicators
- Federal Funds Rate
- Consumer Price Index (CPI)
- Producer Price Index (PPI)
- Unemployment Rate
- Nonfarm Payrolls
- GDP Growth Rate
- ISM Manufacturing PMI
- Consumer Confidence
- VIX (Market Volatility)
- **`get_fed_calendar_and_minutes(curr_date)`** - Federal Reserve meeting calendar and policy updates
- **`get_macro_economic_summary(curr_date, lookback_days=90)`** - Complete macro economic analysis combining all components
## Files Modified
### 2. `tradingagents/dataflows/interface.py`
Updated vendor routing system to include FRED macro data:
**Added Imports:**
```python
from .macro_utils import get_economic_indicators_report, get_treasury_yield_curve, get_fed_calendar_and_minutes
```
**Updated VENDOR_LIST:**
```python
VENDOR_LIST = [
"local",
"yfinance",
"openai",
"google",
"fred" # New
]
```
**New TOOLS_CATEGORIES Entry:**
```python
"macro_data": {
"description": "Macroeconomic indicators and Federal Reserve data",
"tools": [
"get_economic_indicators",
"get_yield_curve",
"get_fed_calendar"
]
}
```
**New VENDOR_METHODS Entries:**
```python
# macro_data
"get_economic_indicators": {
"fred": get_economic_indicators_report,
},
"get_yield_curve": {
"fred": get_treasury_yield_curve,
},
"get_fed_calendar": {
"fred": get_fed_calendar_and_minutes,
},
```
## Configuration Required
To use FRED API features, set the FRED API key via:
1. **Environment Variable:**
```bash
export FRED_API_KEY="your_api_key_here"
```
2. **Or via Config System:**
The `get_fred_api_key()` function will check:
- Config system via `get_api_key("fred_api_key", "FRED_API_KEY")`
- Environment variable `FRED_API_KEY`
3. **Get a Free API Key:**
- Visit: https://fred.stlouisfed.org/
- Register for a free account
- Generate API key under "My Account" → "API Keys"
## Usage Examples
### Via Vendor Routing System
```python
from tradingagents.dataflows.interface import route_to_vendor
# Get economic indicators
indicators = route_to_vendor(
"get_economic_indicators",
curr_date="2025-10-06",
lookback_days=90
)
# Get yield curve
yield_curve = route_to_vendor(
"get_yield_curve",
curr_date="2025-10-06"
)
# Get Fed calendar
fed_calendar = route_to_vendor(
"get_fed_calendar",
curr_date="2025-10-06"
)
```
### Direct Function Calls
```python
from tradingagents.dataflows.macro_utils import (
get_economic_indicators_report,
get_treasury_yield_curve,
get_fed_calendar_and_minutes,
get_macro_economic_summary
)
# Complete macro analysis
summary = get_macro_economic_summary(
curr_date="2025-10-06",
lookback_days=90
)
# Individual components
indicators = get_economic_indicators_report("2025-10-06", 90)
yield_curve = get_treasury_yield_curve("2025-10-06")
fed_data = get_fed_calendar_and_minutes("2025-10-06")
```
## Integration with Macro Analyst
The macro analyst can now use these tools through the vendor routing system. The tools are automatically available through the `macro_data` category:
```python
# In agent configuration
config = {
"data_vendors": {
"macro_data": "fred" # Use FRED for macro data
}
}
```
## Data Returned
All functions return formatted markdown strings suitable for LLM analysis:
- **Economic Indicators**: Markdown tables with current values, changes, and analysis
- **Yield Curve**: Markdown table with maturities, yields, and inversion warnings
- **Fed Calendar**: FOMC meeting schedule and policy trajectory
- **Trading Implications**: Actionable insights for different economic scenarios
## PR Compatibility Notes
Changes were made with minimal modifications to existing code:
1.**New file only** - `macro_utils.py` is a new addition
2.**Additive changes** - Only added new entries to existing dictionaries
3.**No breaking changes** - Existing functionality unchanged
4.**Follows existing patterns** - Uses same vendor routing architecture as other data sources
5.**Consistent naming** - Follows existing naming conventions (`get_*` pattern)
## Testing
To verify the integration works:
```python
# Test FRED API connection
from tradingagents.dataflows.macro_utils import get_fred_data
result = get_fred_data("FEDFUNDS", "2025-01-01", "2025-10-06")
print(result)
# Test vendor routing
from tradingagents.dataflows.interface import route_to_vendor
indicators = route_to_vendor(
"get_economic_indicators",
curr_date="2025-10-06",
lookback_days=30
)
print(indicators)
```
## Dependencies
No new dependencies required. Uses existing dependencies:
- `requests` - For FRED API calls
- `pandas` - For data manipulation
- `datetime` - For date handling
- Existing config system for API key management
## Future Enhancements
Potential improvements:
- Add caching for FRED API responses (similar to YFinanceDataProvider)
- Add more FRED series (housing data, commodity prices, etc.)
- Add international economic indicators
- Add custom FRED series ID support for advanced users