8.0 KiB
Gemini Code Assistant Workspace Configuration
This document provides a comprehensive guide for the Gemini Code Assistant to effectively understand and contribute to the TradingAgents project.
Project Overview
TradingAgents is a multi-agent LLM framework for financial trading that simulates a real-world trading firm. It leverages a team of specialized LLM-powered agents, including analysts, researchers, and a trader, to collaboratively analyze market conditions and make informed trading decisions. The framework is built on LangGraph, which enables a modular and flexible agent-based architecture.
The core of the project is the TradingAgentsGraph, which orchestrates the interactions between the different agents. The agents are organized into teams:
- Analyst Team: Gathers and analyzes different types of data (e.g., fundamentals, news, social media).
- Researcher Team: Debates the findings of the analyst team to form an investment plan.
- Trader Agent: Makes the final trading decision based on the input from the other teams.
- Risk Management Team: Assesses the risk of the proposed trade.
Getting Started
Installation
- Clone the repository:
git clone https://github.com/TauricResearch/TradingAgents.git cd TradingAgents - Create and activate a virtual environment:
conda create -n tradingagents python=3.13 conda activate tradingagents - Install the required dependencies:
pip install -r requirements.txt
API Keys
The project requires the following API keys to be set as environment variables:
- FinnHub: For financial data.
export FINNHUB_API_KEY=$YOUR_FINNHUB_API_KEY - OpenAI: For the LLM agents.
export OPENAI_API_KEY=$YOUR_OPENAI_API_KEY - OpenRouter (optional): If you want to use OpenRouter as your LLM provider.
export OPENROUTER_API_KEY=$YOUR_OPENROUTER_API_KEY
Project Structure
C:\Users\kevin\repo\TradingAgents\
├───.gitignore
├───.python-version
├───ERROR_HANDLING_GUIDE.md
├───LICENSE
├───main.py
├───openrouter_status.py
├───pyproject.toml
├───README.md
├───requirements.txt
├───setup.py
├───uv.lock
├───.git\...
├───.venv\
│ ├───include\...
│ ├───Lib\...
│ ├───Scripts\...
│ └───share\...
├───assets\
│ ├───analyst.png
│ ├───researcher.png
│ ├───risk.png
│ ├───schema.png
│ ├───TauricResearch.png
│ ├───trader.png
│ ├───wechat.png
│ └───cli\
│ ├───cli_init.png
│ ├───cli_news.png
│ ├───cli_technical.png
│ └───cli_transaction.png
├───cli\
│ ├───__init__.py
│ ├───main.py
│ ├───models.py
│ ├───utils.py
│ ├───__pycache__\
│ └───static\
│ └───welcome.txt
├───results\
│ ├───AAPL\...
│ └───TSLA\...
└───tradingagents\
├───default_config.py
├───__pycache__\
├───agents\
│ ├───__init__.py
│ ├───__pycache__\
│ ├───analysts\
│ │ ├───fundamentals_analyst.py
│ │ ├───market_analyst.py
│ │ ├───news_analyst.py
│ │ ├───social_media_analyst.py
│ │ └───__pycache__\
│ ├───managers\
│ │ ├───research_manager.py
│ │ ├───risk_manager.py
│ │ └───__pycache__\
│ ├───researchers\
│ │ ├───bear_researcher.py
│ │ ├───bull_researcher.py
│ │ └───__pycache__\
│ ├───risk_mgmt\
│ │ ├───aggresive_debator.py
│ │ ├───conservative_debator.py
│ │ ├───neutral_debator.py
│ │ └───__pycache__\
│ ├───trader\
│ │ ├───trader.py
│ │ └───__pycache__\
│ └───utils\
│ ├───agent_states.py
│ ├───agent_utils.py
│ ├───memory.py
│ └───__pycache__\
├───dataflows\
│ ├───__init__.py
│ ├───config.py
│ ├───finnhub_utils.py
│ ├───googlenews_utils.py
│ ├───interface.py
│ ├───reddit_utils.py
│ ├───stockstats_utils.py
│ ├───utils.py
│ ├───yfin_utils.py
│ ├───__pycache__\
│ └───data_cache\
└───graph\
├───__init__.py
├───conditional_logic.py
├───propagation.py
├───reflection.py
├───setup.py
├───signal_processing.py
├───trading_graph.py
└───__pycache__\
main.py: A simple script demonstrating how to use theTradingAgentsGraphas a Python package.cli/main.py: The main entry point for the command-line interface.tradingagents/: The core Python package.agents/: Contains the implementation of the different agents.dataflows/: Handles data acquisition from various APIs.graph/: Defines theLangGraphgraph and the overall orchestration of the agents.default_config.py: The default configuration for the project.
requirements.txt: A list of the Python dependencies.pyproject.toml: Project metadata and dependencies.README.md: The main README file for the project.
Core Concepts
TradingAgentsGraph
The TradingAgentsGraph class in tradingagents/graph/trading_graph.py is the central orchestrator of the framework. It initializes the LLMs, tools, and agents, and then constructs a LangGraph graph to define the workflow. The propagate method executes the graph for a given company and date.
Agents
Agents are defined in the tradingagents/agents/ directory. Each agent is a "node" in the LangGraph graph. The agents are created by functions that take the LLM and other necessary components as input. These functions return a node function that processes the current state of the graph and returns an updated state.
Dataflows
The tradingagents/dataflows/ directory contains the logic for fetching data from various financial data APIs, such as Finnhub, Yahoo Finance, and Reddit. The Toolkit class in tradingagents/agents/__init__.py provides a unified interface for the agents to access these data sources.
Development Guidelines
Adding a New Agent
- Create a new Python file in the appropriate subdirectory of
tradingagents/agents/. - Define a
create_<agent_name>_agentfunction that takes the LLM and any other necessary components as input. - Inside this function, define a node function that takes the current state of the graph as input.
- Prepare a prompt for the LLM and invoke it.
- Return an updated state dictionary.
- Add the new agent to the
TradingAgentsGraphintradingagents/graph/trading_graph.py.
Adding a New Tool
- Add a new function to the appropriate file in
tradingagents/dataflows/. - Add the new function to the
Toolkitclass intradingagents/agents/__init__.py. - Add the new tool to the appropriate
ToolNodein the_create_tool_nodesmethod of theTradingAgentsGraphclass.
Running Tests
This project does not currently have a dedicated test suite. When adding new features, it is recommended to add unit tests to ensure the correctness of the code.
Key Commands
- Run the CLI:
python -m cli.main - Run the package example:
python main.py