TradingAgents/docs/InitAnalysis.md

57 lines
4.3 KiB
Markdown

# 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.