7.1 KiB
7.1 KiB
AGENTS.md - TradingAgents Development Guide
What TradingAgents Does
TradingAgents is a multi-agent LLM financial trading framework that simulates a real-world trading firm using specialized AI agents. The system analyzes stocks through collaborative decision-making, mirroring professional trading teams.
Core Architecture
- Built on LangGraph with state-based workflows
- TradingAgentsGraph orchestrates the entire process
- Agents work sequentially and in parallel to analyze market conditions
Agent Teams & Workflow
- Analyst Team: Market, Social Media, News, and Fundamentals analysts gather data
- Research Team: Bull/Bear researchers debate, Research Manager decides
- Trading Team: Trader develops detailed trading plans
- Risk Management: Risk analysts debate, Risk Manager makes final decision
Data Sources
- Yahoo Finance, FinnHub API, Reddit, Google News, StockStats
- Supports both real-time online data and cached offline data for backtesting
Decision Process
Sequential analysis → Structured debate → Managerial oversight → Risk assessment → Memory & learning
Build/Test Commands
This project uses mise for tool and task management. All development tasks are managed through mise.
Initial Setup
- First-time setup:
mise run setup- Install tools and dependencies - Install tools only:
mise install- Install Python, uv, ruff, pyright - Install dependencies:
mise run install- Install project dependencies with uv
Development Workflow
- CLI Application:
mise run dev- Interactive CLI for running trading analysis - Direct Python Usage:
mise run run- Run main.py programmatically - Format code:
mise run format- Auto-format with ruff - Lint code:
mise run lint- Check code quality with ruff - Type checking:
mise run typecheck- Run pyright type checker - Fix lint issues:
mise run fix- Auto-fix linting issues - Run all checks:
mise run all- Format, lint, and typecheck - Clean artifacts:
mise run clean- Remove cache and build files
Testing
- Run tests:
mise run test- Run tests with pytest (when available)
Configuration
- Environment Variables: Create
.envfile with API keys (see.env.example) - Tool Configuration:
.mise.tomlmanages Python 3.13, uv, ruff, pyright - Code Quality:
pyproject.tomlcontains ruff and pyright configurations
Configuration System
Environment Variables
Create .env file with API keys (see .env.example):
Core LLM APIs (Choose One)
# For OpenAI (default)
export OPENAI_API_KEY="your_openai_api_key"
# For Anthropic Claude
export ANTHROPIC_API_KEY="your_anthropic_api_key"
# For Google Gemini
export GOOGLE_API_KEY="your_google_api_key"
Data Sources (Optional)
# For financial data
export FINNHUB_API_KEY="your_finnhub_api_key"
# For Reddit data
export REDDIT_CLIENT_ID="your_reddit_client_id"
export REDDIT_CLIENT_SECRET="your_reddit_client_secret"
export REDDIT_USER_AGENT="your_app_name"
Configuration Management
- Config Class:
TradingAgentsConfigintradingagents/config.pyhandles all configuration - Use
TradingAgentsConfig.from_env()for environment-based configuration - Key settings:
max_debate_rounds,llm_provider,online_tools - Results are saved to
results_dir/{ticker}/{date}/with structured reports
Configuration Examples
Anthropic Setup
config = TradingAgentsConfig.from_env()
config.llm_provider = "anthropic"
config.deep_think_llm = "claude-3-5-sonnet-20241022"
config.quick_think_llm = "claude-3-5-haiku-20241022"
Google Gemini Setup
config.llm_provider = "google"
config.deep_think_llm = "gemini-2.0-flash"
config.quick_think_llm = "gemini-2.0-flash"
Data Mode Configuration
config.online_tools = True- Real-time data (requires API keys)config.online_tools = False- Cached data (faster, historical only)
Code Style Guidelines
- Imports: Standard library first, third-party, then local imports (langchain, tradingagents modules)
- Formatting: Auto-formatted with ruff (
mise run format) - Linting: Code quality checked with ruff (
mise run lint) - Type Checking: Static analysis with pyright (
mise run typecheck) - Functions: Snake_case naming (e.g.,
fundamentals_analyst_node,create_fundamentals_analyst) - Classes: PascalCase (e.g.,
TradingAgentsGraph,MessageBuffer) - Variables: Snake_case (e.g.,
current_date,company_of_interest) - Constants: UPPER_CASE (e.g.,
DEFAULT_CONFIG)
Project Structure
- Main entry:
main.pyfor package usage,cli/main.pyfor CLI - Core logic:
tradingagents/package with agents, dataflows, graph modules - Configuration:
tradingagents/config.pyfor LLM and system settings - CLI interface:
cli/directory with rich-based terminal UI - Tool Management:
.mise.tomlfor development tool configuration - Dependencies:
pyproject.tomlfor project dependencies and tool settings
Key Patterns
- Agent creation: Factory functions that return node functions (e.g.,
create_fundamentals_analyst) - State management: Dictionary-based state passed between graph nodes
- Tool integration: LangChain tools bound to LLMs via
llm.bind_tools(tools) - Configuration: Use
TradingAgentsConfig.from_env()for environment-based configuration - Debate-Driven Decision Making: Critical decisions emerge from structured agent debates
- Memory-Augmented Learning: Agents learn from past similar situations using vector similarity
- Dual-Mode Data Access: Support for both live API calls and pre-processed cached data
- Factory Pattern: Agent creation via factory functions for flexible configuration
- Signal Processing: Final trading decisions processed into clean BUY/SELL/HOLD signals
Development Guidelines
Working with Agents
- Each agent has its own memory instance in
FinancialSituationMemory - Agents use the unified
Toolkitfor data access - Agent state is passed sequentially through the workflow
- Configuration affects debate rounds, LLM selection, and data sources
Working with Data Sources
- All data utilities follow consistent date range patterns:
curr_date + look_back_days - Interface functions return markdown-formatted strings for LLM consumption
- Check
online_toolsconfig flag to determine live vs cached data usage - Data caching happens in
data_cache_dirfor online mode
CLI Development
- CLI uses Rich for terminal UI with live updating displays
- Agent progress tracking through
MessageBufferclass - Questionnaire-driven configuration collection
- Real-time streaming of analysis results
File Structure Context
cli/: Interactive command-line interfacetradingagents/agents/: All agent implementationstradingagents/dataflows/: Data source integrationstradingagents/graph/: LangGraph workflow orchestrationtradingagents/config.py: Configuration managementmain.py: Direct Python usage exampleCLAUDE.md: Guidance for Claude Code development