# Codebase Analysis: TradingAgents This document outlines the purpose, architecture, and key components of the "TradingAgents" codebase. ### Purpose and Approach The "TradingAgents" project is a sophisticated, multi-agent framework designed for financial analysis and trading research. It simulates a trading firm's decision-making process by orchestrating a team of specialized AI agents, each with a distinct role. The analysis workflow is structured as follows: 1. **Analyst Team**: A group of agents gathers and synthesizes data from various sources: * **Market Analyst**: Focuses on market trends and technical indicators. * **News Analyst**: Processes financial news. * **Social Media Analyst**: Gathers sentiment from social platforms like Reddit. * **Fundamentals Analyst**: Analyzes company fundamentals (e.g., earnings reports). 2. **Researcher Team**: Two agents, one with a "bullish" (optimistic) and one with a "bearish" (pessimistic) perspective, debate the findings of the analyst team to form a balanced investment thesis. 3. **Trader Agent**: Based on the research, this agent formulates a specific, actionable trading plan. 4. **Risk Management Team**: A team of debaters assesses the proposed trade's potential risks from aggressive, conservative, and neutral viewpoints. 5. **Portfolio Manager**: A final agent gives the ultimate approval or rejection for the trade. A standout feature is the system's ability to **learn from its outcomes**. After a trade is executed (or simulated), the framework reflects on the resulting profit or loss and updates the long-term memory of the agents to refine future decisions. ### Tech Stack and Dependencies The project is built on a modern Python stack, leveraging several powerful libraries and external services. * **Core Framework**: * **Python 3.10+** * **`langgraph`**: The central library used to construct and manage the directed acyclic graph (DAG) of AI agents. * **LLM Integration**: * **`langchain`**: Provides the core abstractions for interacting with Large Language Models. * Integrations for multiple LLM providers are included: `langchain-openai`, `langchain-anthropic`, and `langchain-google-genai`. * **Financial Data Sources**: * The system is designed to be data-source agnostic. It integrates with a wide array of financial data APIs, including: * `alpha_vantage` * `yfinance` (Yahoo Finance) * `praw` (Reddit) * `feedparser` (for RSS news feeds) * `eodhd`, `akshare`, `tushare`, `finnhub-python` * **Command-Line Interface (CLI)**: * An interactive and user-friendly CLI is built using: * `typer` * `rich` (for rich text and beautiful formatting in the terminal) * `questionary` (for interactive prompts) * **Data Handling & Storage**: * **`pandas`**: Used for data manipulation and analysis. * **`chromadb`**: Likely used for vector-based memory storage for the agents (e.g., for Retrieval Augmented Generation). * **`redis`**: Used for caching or state management. ### Features and Usage * **Multi-Agent System**: Decomposes the complex task of financial analysis into smaller, specialized roles, allowing for deeper and more nuanced insights. * **High Configurability**: Key parameters, such as the LLMs to use, the preferred data vendors, and agent behaviors, are centralized in the `tradingagents/default_config.py` file, making the system easy to customize. * **Interactive CLI**: The primary method of interaction is via the command line (`python -m cli.main`). This tool guides the user through setting up an analysis (e.g., selecting a stock ticker, date range, and agents) and displays a live dashboard showing the progress and reasoning of each agent in real-time. * **Reflective Learning**: The framework includes a mechanism for the agents to learn from their successes and failures, creating a feedback loop for continuous improvement. * **Modular and Extensible Architecture**: The codebase is well-structured, with a clear separation of concerns between the agent graph logic (`tradingagents/graph`), the agent definitions (`tradingagents/agents`), and the data fetching layer (`tradingagents/dataflows`). This modularity makes the system flexible and easier to extend with new agents or data sources.