diff --git a/.env.example b/.env.example
index 0f1f9a953..f1e8cbdf9 100644
--- a/.env.example
+++ b/.env.example
@@ -35,4 +35,7 @@ SEC_EMAIL=
# refer to ./python/third_party/TradingAgents/.env.example for details
# OpenAI API Key - Required for LLM models and online data search
# Get your key from: https://platform.openai.com/api-keys
-# OPENAI_API_KEY=
\ No newline at end of file
+OPENAI_API_KEY=
+# Finnhub API Key - Required for financial news and insider trading data
+# Get your free key from: https://finnhub.io/register
+FINNHUB_API_KEY=
\ No newline at end of file
diff --git a/README.md b/README.md
index 0c7a8811b..16a65bd0d 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/README.zh.md b/README.zh.md
index 7ba5ca9de..febf277c4 100644
--- a/README.zh.md
+++ b/README.zh.md
@@ -6,7 +6,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/frontend/src/constants/agent.ts b/frontend/src/constants/agent.ts
index af5fef3ab..104a51fdd 100644
--- a/frontend/src/constants/agent.ts
+++ b/frontend/src/constants/agent.ts
@@ -66,6 +66,6 @@ export const AGENT_AVATAR_MAP: Record = {
SentimentAnalystAgent: EmotionalAgencyPng,
// System Agents
- TradingAgentsAdapter: PortfolioManagerPng,
+ TradingAgents: PortfolioManagerPng,
SECAgent: SecAgentPng,
};
diff --git a/frontend/src/mock/agent-data.tsx b/frontend/src/mock/agent-data.tsx
index 829e8208b..ef66d20c1 100644
--- a/frontend/src/mock/agent-data.tsx
+++ b/frontend/src/mock/agent-data.tsx
@@ -4,7 +4,7 @@ import { IconGroupPng, MessageGroupPng, TrendPng } from "@/assets/png";
export const agentSuggestions: AgentSuggestion[] = [
{
- id: "TradingAgentsAdapter",
+ id: "TradingAgents",
title: "Research Report",
icon: ,
description: "Diversified in-depth analysis reports",
diff --git a/python/configs/agent_cards/trading_agents.json b/python/configs/agent_cards/trading_agents.json
index 8d83ca964..a6ea33899 100644
--- a/python/configs/agent_cards/trading_agents.json
+++ b/python/configs/agent_cards/trading_agents.json
@@ -1,5 +1,5 @@
{
- "name": "TradingAgentsAdapter",
+ "name": "TradingAgents",
"display_name": "Trading Agents",
"url": "http://localhost:10002",
"description": "TradingAgents - Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis",
@@ -7,24 +7,22 @@
"streaming": true,
"push_notifications": false
},
- "skills": [
- {
- "id": "trading_agents",
- "name": "Trading Agents",
- "description": "Trading Agents - Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis",
- "examples": [
- "Analyze APPL using all analysts",
- "Analyze NVDA using market and fundamentals analysts",
- "Analyze TSLA using all analysts, date 2024-01-15, enable debug mode"
- ],
- "tags": [
- "analysis",
- "multi-agent",
- "stocks",
- "US market"
- ]
- }
- ],
+ "skills": [{
+ "id": "trading_agents",
+ "name": "Trading Agents",
+ "description": "Trading Agents - Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis",
+ "examples": [
+ "Analyze APPL using all analysts",
+ "Analyze NVDA using market and fundamentals analysts",
+ "Analyze TSLA using all analysts, date 2024-01-15, enable debug mode"
+ ],
+ "tags": [
+ "analysis",
+ "multi-agent",
+ "stocks",
+ "US market"
+ ]
+ }],
"provider": {
"organization": "Tauric",
"url": "https://arxiv.org/abs/2412.20138"
diff --git a/python/scripts/launch.py b/python/scripts/launch.py
index aca043e73..556da446b 100644
--- a/python/scripts/launch.py
+++ b/python/scripts/launch.py
@@ -31,7 +31,7 @@
"WarrenBuffettAgent": "warren_buffett",
}
SEC_AGENT_NAME = "SECAgent"
-TRADING_AGENTS_NAME = "TradingAgentsAdapter"
+TRADING_AGENTS_NAME = "TradingAgents"
AGENTS = list(MAP_NAME_ANALYST.keys()) + [SEC_AGENT_NAME, TRADING_AGENTS_NAME]
PROJECT_DIR = Path(__file__).resolve().parent.parent.parent
diff --git a/python/third_party/TradingAgents/adapter/__main__.py b/python/third_party/TradingAgents/adapter/__main__.py
index 256993237..8292dd165 100644
--- a/python/third_party/TradingAgents/adapter/__main__.py
+++ b/python/third_party/TradingAgents/adapter/__main__.py
@@ -181,7 +181,7 @@ class DialogueState(MessagesState):
current_step: str = "parsing"
-class TradingAgentsAdapter(BaseAgent):
+class TradingAgents(BaseAgent):
"""TradingAgents adapter for valuecell core agent system"""
def __init__(self):
@@ -540,5 +540,5 @@ def _stream_analysis_results(self, request: TradingRequest, final_state: Dict, p
if __name__ == "__main__":
- agent = create_wrapped_agent(TradingAgentsAdapter)
+ agent = create_wrapped_agent(TradingAgents)
asyncio.run(agent.serve())
diff --git a/python/third_party/TradingAgents/interactive_client.py b/python/third_party/TradingAgents/interactive_client.py
index 13258fdeb..52e0e1ea6 100755
--- a/python/third_party/TradingAgents/interactive_client.py
+++ b/python/third_party/TradingAgents/interactive_client.py
@@ -33,7 +33,7 @@ class TradingAgentsInteractiveClient:
def __init__(self):
self.connections = RemoteConnections()
- self.agent_name = "TradingAgentsAdapter"
+ self.agent_name = "TradingAgents"
self.client: Optional[object] = None
# Configuration options
diff --git a/python/third_party/TradingAgents/start_adapter.py b/python/third_party/TradingAgents/start_adapter.py
index c41105b46..b88eb42ba 100644
--- a/python/third_party/TradingAgents/start_adapter.py
+++ b/python/third_party/TradingAgents/start_adapter.py
@@ -20,7 +20,7 @@
sys.path.insert(0, str(valuecell_root))
from valuecell.core.agent.decorator import create_wrapped_agent
-from adapter.__main__ import TradingAgentsAdapter
+from adapter.__main__ import TradingAgents
# Set logging
logging.basicConfig(
@@ -47,10 +47,10 @@ async def main():
try:
setup_environment()
- logger.info("🚀 Starting TradingAgents Adapter...")
+ logger.info("🚀 Starting TradingAgents ...")
# Create and start agent
- agent = create_wrapped_agent(TradingAgentsAdapter)
+ agent = create_wrapped_agent(TradingAgents)
await agent.serve()
except KeyboardInterrupt:
diff --git a/python/valuecell/server/db/README.md b/python/valuecell/server/db/README.md
index f75aff3a9..526609a6a 100644
--- a/python/valuecell/server/db/README.md
+++ b/python/valuecell/server/db/README.md
@@ -97,7 +97,7 @@ The Asset model represents financial assets in the ValueCell system, including s
3. **Create table structure**: Create agents and assets tables based on model definitions
4. **Initialize default data**:
- **Agent data**: Insert default Agent records directly from code
- - Create three default agents: AIHedgeFundAgent, Sec13FundAgent, and TradingAgentsAdapter
+ - Create three default agents: AIHedgeFundAgent, Sec13FundAgent, and TradingAgents
- Support updating existing Agent configuration information
- **Asset data**: Insert default Asset records for common financial instruments
- Create default assets: AAPL, GOOGL, MSFT, SPY, BTC-USD
@@ -114,7 +114,7 @@ The initialization script automatically creates default records directly in the
1. **AIHedgeFundAgent**: AI-powered hedge fund analysis and trading agent
2. **Sec13FundAgent**: SEC 13F fund analysis and tracking agent
-3. **TradingAgentsAdapter**: Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis
+3. **TradingAgents**: Multi-agent trading analysis system with market, sentiment, news and fundamentals analysis
#### Default Assets
@@ -129,7 +129,7 @@ The initialization script automatically creates default records directly in the
**Agent data structure example**:
```python
{
- "name": "TradingAgentsAdapter",
+ "name": "TradingAgents",
"display_name": "Trading Agents Adapter",
"description": "TradingAgents - Multi-agent trading analysis system",
"version": "1.0.0",
@@ -196,7 +196,7 @@ try:
agents = session.query(Agent).filter(Agent.enabled == True).all()
# Get specific agent
- trading_agent = session.query(Agent).filter(Agent.name == "TradingAgentsAdapter").first()
+ trading_agent = session.query(Agent).filter(Agent.name == "TradingAgents").first()
# Update agent status
if trading_agent: