diff --git a/CONFIG_GUIDE.md b/CONFIG_GUIDE.md index 4ac1d7a7..1ab23c88 100644 --- a/CONFIG_GUIDE.md +++ b/CONFIG_GUIDE.md @@ -1,6 +1,8 @@ # Configuration Guide -TradingAgents supports configuration through multiple methods with the following priority: +**Copyright Notice:** Litadel is a successor of TradingAgents by TaurusResearch. + +Litadel supports configuration through multiple methods with the following priority: **Priority (highest to lowest):** 1. Environment variables @@ -200,7 +202,7 @@ The `β†’` lines show values being used from your config, skipping the prompts! ## Troubleshooting **CLI still prompts for everything:** -- Check that `config.ini` exists in the TradingAgents directory +- Check that `config.ini` exists in the Litadel directory - Verify the file has the correct structure (see `config.example.ini`) - Check for typos in section names and keys diff --git a/README.md b/README.md index 7e90c60f..874c54c1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

@@ -25,37 +25,29 @@ --- -# TradingAgents: Multi-Agents LLM Financial Trading Framework +# Litadel: Multi-Agents LLM Financial Trading Framework -> πŸŽ‰ **TradingAgents** officially released! We have received numerous inquiries about the work, and we would like to express our thanks for the enthusiasm in our community. +> **Copyright Notice:** Litadel is a successor of TradingAgents by TaurusResearch. This project builds upon and extends the original TradingAgents framework. +> +> πŸŽ‰ **Litadel** officially released! We have received numerous inquiries about the work, and we would like to express our thanks for the enthusiasm in our community. > > So we decided to fully open-source the framework. Looking forward to building impactful projects with you!
- - - - - TradingAgents Star History - - -
-
- -πŸš€ [TradingAgents](#tradingagents-framework) | ⚑ [Installation & CLI](#installation-and-cli) | 🎬 [Demo](https://www.youtube.com/watch?v=90gr5lwjIho) | πŸ“¦ [Package Usage](#tradingagents-package) | 🀝 [Contributing](#contributing) | πŸ“„ [Citation](#citation) +πŸš€ [Litadel](#litadel-framework) | ⚑ [Installation & CLI](#installation-and-cli) | 🎬 [Demo](https://www.youtube.com/watch?v=90gr5lwjIho) | πŸ“¦ [Package Usage](#litadel-package) | 🀝 [Contributing](#contributing) | πŸ“„ [Citation](#citation)
-## TradingAgents Framework +## Litadel Framework -TradingAgents is a multi-agent trading framework that mirrors the dynamics of real-world trading firms. By deploying specialized LLM-powered agents: from fundamental analysts, sentiment experts, and technical analysts, to trader, risk management team, the platform collaboratively evaluates market conditions and informs trading decisions. Moreover, these agents engage in dynamic discussions to pinpoint the optimal strategy. +Litadel is a multi-agent trading framework that mirrors the dynamics of real-world trading firms. By deploying specialized LLM-powered agents: from fundamental analysts, sentiment experts, and technical analysts, to trader, risk management team, the platform collaboratively evaluates market conditions and informs trading decisions. Moreover, these agents engage in dynamic discussions to pinpoint the optimal strategy.

-> TradingAgents framework is designed for research purposes. Trading performance may vary based on many factors, including the chosen backbone language models, model temperature, trading periods, the quality of data, and other non-deterministic factors. [It is not intended as financial, investment, or trading advice.](https://tauric.ai/disclaimer/) +> Litadel framework is designed for research purposes. Trading performance may vary based on many factors, including the chosen backbone language models, model temperature, trading periods, the quality of data, and other non-deterministic factors. [It is not intended as financial, investment, or trading advice.](https://tauric.ai/disclaimer/) Our framework decomposes complex trading tasks into specialized roles. This ensures the system achieves a robust, scalable approach to market analysis and decision-making. @@ -95,16 +87,16 @@ Our framework decomposes complex trading tasks into specialized roles. This ensu ### Installation -Clone TradingAgents: +Clone Litadel: ```bash -git clone https://github.com/TauricResearch/TradingAgents.git -cd TradingAgents +git clone https://github.com/TauricResearch/Litadel.git +cd Litadel ``` Create a virtual environment in any of your favorite environment managers: ```bash -conda create -n tradingagents python=3.13 -conda activate tradingagents +conda create -n litadel python=3.13 +conda activate litadel ``` Install dependencies: @@ -127,7 +119,7 @@ cp .env.example .env # Edit .env with your actual API keys ``` -**Note:** We are happy to partner with Alpha Vantage to provide robust API support for TradingAgents. You can get a free AlphaVantage API [here](https://www.alphavantage.co/support/#api-key), TradingAgents-sourced requests also have increased rate limits to 60 requests per minute with no daily limits. Typically the quota is sufficient for performing complex tasks with TradingAgents thanks to Alpha Vantage’s open-source support program. If you prefer to use OpenAI for these data sources instead, you can modify the data vendor settings in `tradingagents/default_config.py`. +**Note:** We are happy to partner with Alpha Vantage to provide robust API support for Litadel. You can get a free AlphaVantage API [here](https://www.alphavantage.co/support/#api-key), Litadel-sourced requests also have increased rate limits to 60 requests per minute with no daily limits. Typically the quota is sufficient for performing complex tasks with Litadel thanks to Alpha Vantage's open-source support program. If you prefer to use OpenAI for these data sources instead, you can modify the data vendor settings in `tradingagents/default_config.py`. ### CLI Usage @@ -151,15 +143,15 @@ An interface will appear showing results as they load, letting you track the age

-## TradingAgents Package +## Litadel Package ### Implementation Details -We built TradingAgents with LangGraph to ensure flexibility and modularity. We utilize `o1-preview` and `gpt-4o` as our deep thinking and fast thinking LLMs for our experiments. However, for testing purposes, we recommend you use `o4-mini` and `gpt-4.1-mini` to save on costs as our framework makes **lots of** API calls. +We built Litadel with LangGraph to ensure flexibility and modularity. We utilize `o1-preview` and `gpt-4o` as our deep thinking and fast thinking LLMs for our experiments. However, for testing purposes, we recommend you use `o4-mini` and `gpt-4.1-mini` to save on costs as our framework makes **lots of** API calls. ### Python Usage -To use TradingAgents inside your code, you can import the `tradingagents` module and initialize a `TradingAgentsGraph()` object. The `.propagate()` function will return a decision. You can run `main.py`, here's also a quick example: +To use Litadel inside your code, you can import the `tradingagents` module and initialize a `TradingAgentsGraph()` object. The `.propagate()` function will return a decision. You can run `main.py`, here's also a quick example: ```python from tradingagents.graph.trading_graph import TradingAgentsGraph @@ -204,13 +196,20 @@ print(decision) You can view the full list of configurations in `tradingagents/default_config.py`. +## Roadmap + +### Upcoming Improvements +- [ ] **Switch from LangChain/LangGraph to OpenAI Agents SDK** - For better maintainability and parallelization + ## Contributing We welcome contributions from the community! Whether it's fixing a bug, improving documentation, or suggesting a new feature, your input helps make this project better. If you are interested in this line of research, please consider joining our open-source financial AI research community [Tauric Research](https://tauric.ai/). ## Citation -Please reference our work if you find *TradingAgents* provides you with some help :) +Please reference our work if you find *Litadel* provides you with some help :) + +Original TradingAgents citation: ``` @misc{xiao2025tradingagentsmultiagentsllmfinancial, diff --git a/assets/TauricResearch.png b/assets/TauricResearch.png deleted file mode 100644 index 3e88994d..00000000 Binary files a/assets/TauricResearch.png and /dev/null differ diff --git a/assets/litadel.png b/assets/litadel.png new file mode 100644 index 00000000..0192e0ce Binary files /dev/null and b/assets/litadel.png differ diff --git a/cli/file_handlers.py b/cli/file_handlers.py index 7c77f1a2..bba65fee 100644 --- a/cli/file_handlers.py +++ b/cli/file_handlers.py @@ -1,4 +1,4 @@ -"""File handling and logging decorators for the TradingAgents CLI.""" +"""File handling and logging decorators for the Litadel CLI.""" from functools import wraps from pathlib import Path diff --git a/cli/llm_config.py b/cli/llm_config.py index fee6fc92..5890d3d5 100644 --- a/cli/llm_config.py +++ b/cli/llm_config.py @@ -1,4 +1,4 @@ -"""LLM provider and model configuration data for the TradingAgents CLI.""" +"""LLM provider and model configuration data for the Litadel CLI.""" # LLM provider base URLs LLM_PROVIDERS = [ diff --git a/cli/main.py b/cli/main.py index 9a810b8f..c17ed185 100644 --- a/cli/main.py +++ b/cli/main.py @@ -37,8 +37,8 @@ from cli.stream_processor import process_chunk console = Console() app = typer.Typer( - name="TradingAgents", - help="TradingAgents CLI: Multi-Agents LLM Financial Trading Framework", + name="Litadel", + help="Litadel CLI: Multi-Agents LLM Financial Trading Framework (successor of TradingAgents)", add_completion=True, # Enable shell completion ) @@ -59,7 +59,8 @@ def get_user_selections(): # Create welcome box content welcome_content = f"{welcome_ascii}\n" - welcome_content += "[bold green]TradingAgents: Multi-Agents LLM Financial Trading Framework - CLI[/bold green]\n\n" + welcome_content += "[bold green]Litadel: Multi-Agents LLM Financial Trading Framework - CLI[/bold green]\n\n" + welcome_content += "[dim]Successor of TradingAgents by TaurusResearch[/dim]\n\n" welcome_content += "[bold]Workflow Steps:[/bold]\n" welcome_content += "I. Analyst Team β†’ II. Research Team β†’ III. Trader β†’ IV. Risk Management β†’ V. Portfolio Management\n\n" welcome_content += ( @@ -71,7 +72,7 @@ def get_user_selections(): welcome_content, border_style="green", padding=(1, 2), - title="Welcome to TradingAgents", + title="Welcome to Litadel", subtitle="Multi-Agents LLM Financial Trading Framework", ) console.print(Align.center(welcome_box)) diff --git a/cli/prompts.py b/cli/prompts.py index b7175477..4960491f 100644 --- a/cli/prompts.py +++ b/cli/prompts.py @@ -1,4 +1,4 @@ -"""Interactive user prompts for the TradingAgents CLI.""" +"""Interactive user prompts for the Litadel CLI.""" import questionary from typing import List, Optional, Tuple, Dict diff --git a/cli/report_display.py b/cli/report_display.py index 80772fe2..741eb962 100644 --- a/cli/report_display.py +++ b/cli/report_display.py @@ -1,4 +1,4 @@ -"""Report display functions for the TradingAgents CLI.""" +"""Report display functions for the Litadel CLI.""" from rich.console import Console from rich.panel import Panel diff --git a/cli/stream_processor.py b/cli/stream_processor.py index 6510cc1c..471df3f8 100644 --- a/cli/stream_processor.py +++ b/cli/stream_processor.py @@ -1,4 +1,4 @@ -"""Stream processing logic for handling agent analysis chunks in the TradingAgents CLI.""" +"""Stream processing logic for handling agent analysis chunks in the Litadel CLI.""" from cli.helpers import extract_content_string, update_research_team_status diff --git a/cli/ui_display.py b/cli/ui_display.py index ef7874bf..54c24f0c 100644 --- a/cli/ui_display.py +++ b/cli/ui_display.py @@ -1,4 +1,4 @@ -"""UI display functions for the TradingAgents CLI using Rich library.""" +"""UI display functions for the Litadel CLI using Rich library.""" from rich.panel import Panel from rich.spinner import Spinner @@ -30,9 +30,9 @@ def update_display(layout, message_buffer, spinner_text=None): # Header with welcome message layout["header"].update( Panel( - "[bold green]Welcome to TradingAgents CLI[/bold green]\n" + "[bold green]Welcome to Litadel CLI[/bold green]\n" "[dim]Β© [Tauric Research](https://github.com/TauricResearch)[/dim]", - title="Welcome to TradingAgents", + title="Welcome to Litadel", border_style="green", padding=(1, 2), expand=True, diff --git a/config.example.ini b/config.example.ini index 7ccc1eea..ac974893 100644 --- a/config.example.ini +++ b/config.example.ini @@ -1,4 +1,5 @@ -# TradingAgents Configuration +# Litadel Configuration +# Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch # Copy this file to config.ini and customize your settings [llm] diff --git a/pyproject.toml b/pyproject.toml index 63af4721..d4baf564 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] -name = "tradingagents" +name = "litadel" version = "0.1.0" -description = "Add your description here" +description = "Multi-Agents LLM Financial Trading Framework (successor of TradingAgents by TaurusResearch)" readme = "README.md" requires-python = ">=3.10" dependencies = [ diff --git a/setup.py b/setup.py index 793df3e6..ea768d89 100644 --- a/setup.py +++ b/setup.py @@ -1,14 +1,17 @@ """ -Setup script for the TradingAgents package. +Setup script for the Litadel package. + +Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch. +This project builds upon and extends the original TradingAgents framework. """ from setuptools import setup, find_packages setup( - name="tradingagents", + name="litadel", version="0.1.0", - description="Multi-Agents LLM Financial Trading Framework", - author="TradingAgents Team", + description="Multi-Agents LLM Financial Trading Framework (successor of TradingAgents)", + author="Litadel Team", author_email="yijia.xiao@cs.ucla.edu", url="https://github.com/TauricResearch", packages=find_packages(), @@ -29,7 +32,7 @@ setup( python_requires=">=3.10", entry_points={ "console_scripts": [ - "tradingagents=cli.main:app", + "litadel=cli.main:app", ], }, classifiers=[ diff --git a/tradingagents/graph/__init__.py b/tradingagents/graph/__init__.py index 80982c19..ec99f629 100644 --- a/tradingagents/graph/__init__.py +++ b/tradingagents/graph/__init__.py @@ -1,4 +1,6 @@ -# TradingAgents/graph/__init__.py +# Litadel/graph/__init__.py +# Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch. +# This project builds upon and extends the original TradingAgents framework. from .trading_graph import TradingAgentsGraph from .conditional_logic import ConditionalLogic diff --git a/tradingagents/graph/propagation.py b/tradingagents/graph/propagation.py index 58ebd0a8..626dac0b 100644 --- a/tradingagents/graph/propagation.py +++ b/tradingagents/graph/propagation.py @@ -1,4 +1,6 @@ -# TradingAgents/graph/propagation.py +# Litadel/graph/propagation.py +# Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch. +# This project builds upon and extends the original TradingAgents framework. from typing import Dict, Any from tradingagents.agents.utils.agent_states import ( diff --git a/tradingagents/graph/reflection.py b/tradingagents/graph/reflection.py index 33303231..79b59f25 100644 --- a/tradingagents/graph/reflection.py +++ b/tradingagents/graph/reflection.py @@ -1,4 +1,6 @@ -# TradingAgents/graph/reflection.py +# Litadel/graph/reflection.py +# Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch. +# This project builds upon and extends the original TradingAgents framework. from typing import Dict, Any from langchain_openai import ChatOpenAI diff --git a/tradingagents/graph/setup.py b/tradingagents/graph/setup.py index b270ffc0..1718c4d6 100644 --- a/tradingagents/graph/setup.py +++ b/tradingagents/graph/setup.py @@ -1,4 +1,6 @@ -# TradingAgents/graph/setup.py +# Litadel/graph/setup.py +# Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch. +# This project builds upon and extends the original TradingAgents framework. from typing import Dict, Any from langchain_openai import ChatOpenAI diff --git a/tradingagents/graph/signal_processing.py b/tradingagents/graph/signal_processing.py index 903e8529..16557925 100644 --- a/tradingagents/graph/signal_processing.py +++ b/tradingagents/graph/signal_processing.py @@ -1,4 +1,6 @@ -# TradingAgents/graph/signal_processing.py +# Litadel/graph/signal_processing.py +# Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch. +# This project builds upon and extends the original TradingAgents framework. from langchain_openai import ChatOpenAI diff --git a/tradingagents/graph/trading_graph.py b/tradingagents/graph/trading_graph.py index 40f14c9c..a8d820ff 100644 --- a/tradingagents/graph/trading_graph.py +++ b/tradingagents/graph/trading_graph.py @@ -1,4 +1,6 @@ -# TradingAgents/graph/trading_graph.py +# Litadel/graph/trading_graph.py +# Copyright Notice: Litadel is a successor of TradingAgents by TaurusResearch. +# This project builds upon and extends the original TradingAgents framework. import os from pathlib import Path diff --git a/uv.lock b/uv.lock index e4a5030c..2be7c04d 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 3 +revision = 2 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.13'", @@ -1951,6 +1951,71 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/03/a5/866b44697cee47d1cae429ed370281d937ad4439f71af82a6baaa139d26a/Lazify-0.4.0-py2.py3-none-any.whl", hash = "sha256:c2c17a7a33e9406897e3f66fde4cd3f84716218d580330e5af10cfe5a0cd195a", size = 3107, upload-time = "2018-06-14T13:12:22.273Z" }, ] +[[package]] +name = "litadel" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "akshare" }, + { name = "backtrader" }, + { name = "chainlit" }, + { name = "chromadb" }, + { name = "eodhd" }, + { name = "feedparser" }, + { name = "finnhub-python" }, + { name = "grip" }, + { name = "langchain-anthropic" }, + { name = "langchain-experimental" }, + { name = "langchain-google-genai" }, + { name = "langchain-openai" }, + { name = "langgraph" }, + { name = "pandas" }, + { name = "parsel" }, + { name = "praw" }, + { name = "pytz" }, + { name = "questionary" }, + { name = "redis" }, + { name = "requests" }, + { name = "rich" }, + { name = "setuptools" }, + { name = "stockstats" }, + { name = "tqdm" }, + { name = "tushare" }, + { name = "typing-extensions" }, + { name = "yfinance" }, +] + +[package.metadata] +requires-dist = [ + { name = "akshare", specifier = ">=1.16.98" }, + { name = "backtrader", specifier = ">=1.9.78.123" }, + { name = "chainlit", specifier = ">=2.5.5" }, + { name = "chromadb", specifier = ">=1.0.12" }, + { name = "eodhd", specifier = ">=1.0.32" }, + { name = "feedparser", specifier = ">=6.0.11" }, + { name = "finnhub-python", specifier = ">=2.4.23" }, + { name = "grip", specifier = ">=4.6.2" }, + { name = "langchain-anthropic", specifier = ">=0.3.15" }, + { name = "langchain-experimental", specifier = ">=0.3.4" }, + { name = "langchain-google-genai", specifier = ">=2.1.5" }, + { name = "langchain-openai", specifier = ">=0.3.23" }, + { name = "langgraph", specifier = ">=0.4.8" }, + { name = "pandas", specifier = ">=2.3.0" }, + { name = "parsel", specifier = ">=1.10.0" }, + { name = "praw", specifier = ">=7.8.1" }, + { name = "pytz", specifier = ">=2025.2" }, + { name = "questionary", specifier = ">=2.1.0" }, + { name = "redis", specifier = ">=6.2.0" }, + { name = "requests", specifier = ">=2.32.4" }, + { name = "rich", specifier = ">=14.0.0" }, + { name = "setuptools", specifier = ">=80.9.0" }, + { name = "stockstats", specifier = ">=0.6.5" }, + { name = "tqdm", specifier = ">=4.67.1" }, + { name = "tushare", specifier = ">=1.4.21" }, + { name = "typing-extensions", specifier = ">=4.14.0" }, + { name = "yfinance", specifier = ">=0.2.63" }, +] + [[package]] name = "literalai" version = "0.1.201" @@ -4762,71 +4827,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/67/53/d840eff3b6cc64f40f115b8de9a17a100973be3679f14b66056ab5a4615e/traceloop_sdk-0.40.9-py3-none-any.whl", hash = "sha256:c061a278f40062986379bc2df76635cb545c3f81301f6b38d51b3a6f9c288f54", size = 31486, upload-time = "2025-06-10T09:55:57.458Z" }, ] -[[package]] -name = "tradingagents" -version = "0.1.0" -source = { virtual = "." } -dependencies = [ - { name = "akshare" }, - { name = "backtrader" }, - { name = "chainlit" }, - { name = "chromadb" }, - { name = "eodhd" }, - { name = "feedparser" }, - { name = "finnhub-python" }, - { name = "grip" }, - { name = "langchain-anthropic" }, - { name = "langchain-experimental" }, - { name = "langchain-google-genai" }, - { name = "langchain-openai" }, - { name = "langgraph" }, - { name = "pandas" }, - { name = "parsel" }, - { name = "praw" }, - { name = "pytz" }, - { name = "questionary" }, - { name = "redis" }, - { name = "requests" }, - { name = "rich" }, - { name = "setuptools" }, - { name = "stockstats" }, - { name = "tqdm" }, - { name = "tushare" }, - { name = "typing-extensions" }, - { name = "yfinance" }, -] - -[package.metadata] -requires-dist = [ - { name = "akshare", specifier = ">=1.16.98" }, - { name = "backtrader", specifier = ">=1.9.78.123" }, - { name = "chainlit", specifier = ">=2.5.5" }, - { name = "chromadb", specifier = ">=1.0.12" }, - { name = "eodhd", specifier = ">=1.0.32" }, - { name = "feedparser", specifier = ">=6.0.11" }, - { name = "finnhub-python", specifier = ">=2.4.23" }, - { name = "grip", specifier = ">=4.6.2" }, - { name = "langchain-anthropic", specifier = ">=0.3.15" }, - { name = "langchain-experimental", specifier = ">=0.3.4" }, - { name = "langchain-google-genai", specifier = ">=2.1.5" }, - { name = "langchain-openai", specifier = ">=0.3.23" }, - { name = "langgraph", specifier = ">=0.4.8" }, - { name = "pandas", specifier = ">=2.3.0" }, - { name = "parsel", specifier = ">=1.10.0" }, - { name = "praw", specifier = ">=7.8.1" }, - { name = "pytz", specifier = ">=2025.2" }, - { name = "questionary", specifier = ">=2.1.0" }, - { name = "redis", specifier = ">=6.2.0" }, - { name = "requests", specifier = ">=2.32.4" }, - { name = "rich", specifier = ">=14.0.0" }, - { name = "setuptools", specifier = ">=80.9.0" }, - { name = "stockstats", specifier = ">=0.6.5" }, - { name = "tqdm", specifier = ">=4.67.1" }, - { name = "tushare", specifier = ">=1.4.21" }, - { name = "typing-extensions", specifier = ">=4.14.0" }, - { name = "yfinance", specifier = ">=0.2.63" }, -] - [[package]] name = "tushare" version = "1.4.21"