TradingAgents/integrated_agents_demo.py

234 lines
8.6 KiB
Python

#!/usr/bin/env python3
"""
Integrated Langgraph Demo - All Agents Working Together
Shows how screening, pump detection, and analysis agents work in the unified graph.
"""
import os
import sys
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()
from tradingagents.graph.trading_graph import TradingAgentsGraph
def demo_integrated_agents():
"""
Demonstrate all agents working together in the langgraph architecture.
"""
print("\n" + "="*80)
print("🤖 INTEGRATED AGENTIC ARCHITECTURE DEMO")
print("="*80)
print("\nArchitecture Overview:")
print(" 1. Screening Agent - Scans market for candidates")
print(" 2. Pump Detection Agent - Identifies pre-pump opportunities")
print(" 3. Market Analyst - Technical analysis")
print(" 4. News Analyst - News sentiment")
print(" 5. Social Analyst - Social media buzz")
print(" 6. Fundamentals Analyst - Company fundamentals")
print(" 7. Bull Researcher - Bullish perspective")
print(" 8. Bear Researcher - Bearish perspective")
print(" 9. Research Manager - Synthesizes debate")
print(" 10. Trader - Makes trading decision")
print(" 11. Risk Managers - Risk analysis")
print("\n" + "="*80 + "\n")
# Configuration
selected_analysts = ["market", "social", "news", "fundamentals"]
trade_date = datetime.now().strftime("%Y-%m-%d")
ticker = "NVDA"
print(f"Configuration:")
print(f" - Analysts: {', '.join(selected_analysts)}")
print(f" - Include Screening: Yes")
print(f" - Include Pump Detection: Yes")
print(f" - Trade Date: {trade_date}")
print(f" - Ticker: {ticker}")
print("\n" + "="*80 + "\n")
try:
# Create graph with all agents enabled
print("🚀 Initializing Integrated Trading Agents Graph...\n")
graph = TradingAgentsGraph(
selected_analysts=selected_analysts,
debug=False,
include_screening=True, # Enable screening agent
include_pump_detection=True, # Enable pump detection agent
)
print("✅ Graph initialized successfully!\n")
print("="*80)
print("AGENT WORKFLOW SEQUENCE")
print("="*80 + "\n")
print("Step 1: SCREENING AGENT")
print(" - Scans market for interesting candidates")
print(" - Uses: get_market_movers, get_trending_social, get_earnings_calendar")
print(" - Output: List of potential stocks to analyze\n")
print("Step 2: PUMP DETECTION AGENT")
print(" - Analyzes selected stock for pump signals")
print(" - Uses: Volume spike, Price acceleration, Social sentiment, etc.")
print(" - Output: Pump probability score (0-100)\n")
print("Step 3: MARKET ANALYST")
print(" - Technical analysis of the stock")
print(" - Uses: RSI, MACD, Moving averages, Bollinger Bands")
print(" - Output: Technical trend report\n")
print("Step 4: SOCIAL MEDIA ANALYST")
print(" - Analyzes social sentiment (Reddit, Twitter, etc.)")
print(" - Uses: get_trending_social, sentiment analysis")
print(" - Output: Social buzz and sentiment report\n")
print("Step 5: NEWS ANALYST")
print(" - Analyzes recent news and insider activity")
print(" - Uses: get_news, get_insider_transactions, get_insider_sentiment")
print(" - Output: News sentiment and insider activity report\n")
print("Step 6: FUNDAMENTALS ANALYST")
print(" - Analyzes company fundamentals")
print(" - Uses: P/E ratio, Revenue growth, Financial statements")
print(" - Output: Fundamental analysis report\n")
print("Step 7: BULL RESEARCHER")
print(" - Makes bullish case based on all analysis")
print(" - Synthesizes positive signals")
print(" - Output: Bullish investment thesis\n")
print("Step 8: BEAR RESEARCHER")
print(" - Makes bearish case based on all analysis")
print(" - Synthesizes negative signals")
print(" - Output: Bearish investment thesis\n")
print("Step 9: RESEARCH MANAGER")
print(" - Evaluates both bull and bear perspectives")
print(" - Makes final investment decision")
print(" - Output: FINAL INVESTMENT RECOMMENDATION\n")
print("Step 10: TRADER")
print(" - Creates trading plan (entry, stop, target)")
print(" - Output: Trading execution plan\n")
print("Step 11: RISK MANAGERS")
print(" - Debate risk levels (Risky, Neutral, Safe)")
print(" - Final risk assessment")
print(" - Output: Risk-adjusted final decision\n")
print("="*80 + "\n")
# Run analysis
print("⏳ Running full analysis through all agents...\n")
init_state = {
"trade_date": trade_date,
"company_of_interest": ticker,
"messages": [],
}
# Note: The actual execution would happen here, but we're showing the architecture
# In real usage: final_state, signal = graph.propagate(ticker, trade_date)
print("✅ Analysis would complete with:\n")
print(" - Pump detection score for pre-entry opportunities")
print(" - Technical analysis with entry/exit points")
print(" - Social and news sentiment context")
print(" - Fundamental health assessment")
print(" - Integrated investment recommendation")
print(" - Risk-adjusted position sizing")
print("\n" + "="*80)
print("KEY FEATURES OF INTEGRATED ARCHITECTURE")
print("="*80 + "\n")
print("✅ Multi-Agent Collaboration:")
print(" - Agents share state and findings")
print(" - Each agent builds on previous analysis")
print(" - Final decision combines all perspectives\n")
print("✅ Specialized Expertise:")
print(" - Screening agent finds opportunities")
print(" - Pump detection agent spots momentum")
print(" - Fundamental analysts verify quality")
print(" - Technical analysts confirm entry points")
print(" - Risk managers ensure protection\n")
print("✅ Debate & Consensus:")
print(" - Bull vs Bear research debate")
print(" - Risk vs Reward discussion")
print(" - Final consensus decision\n")
print("✅ Flexible Configuration:")
print(" - Enable/disable agents as needed")
print(" - Choose specific analysts")
print(" - Customize workflow")
print(" - Adjust risk profiles\n")
print("✅ Unified Tool Access:")
print(" - All agents access same tools")
print(" - Consistent data retrieval")
print(" - Shared analysis results\n")
print("="*80)
print("USAGE EXAMPLE")
print("="*80 + "\n")
print("Python Code:")
print("""
from tradingagents.graph.trading_graph import TradingAgentsGraph
# Create graph with screening and pump detection
graph = TradingAgentsGraph(
selected_analysts=["market", "social", "news", "fundamentals"],
include_screening=True,
include_pump_detection=True,
)
# Run analysis
ticker = "NVDA"
trade_date = "2025-12-05"
final_state, signal = graph.propagate(ticker, trade_date)
# Access results from all agents
pump_report = final_state.get("pump_report")
screening_report = final_state.get("screening_report")
market_report = final_state.get("market_report")
final_decision = final_state.get("final_trade_decision")
""")
print("\n" + "="*80)
print("NEXT STEPS")
print("="*80 + "\n")
print("1. Run screening to find candidates:")
print(" graph = TradingAgentsGraph(include_screening=True)")
print("")
print("2. Detect pump opportunities:")
print(" graph = TradingAgentsGraph(include_pump_detection=True)")
print("")
print("3. Full integrated analysis:")
print(" graph = TradingAgentsGraph(")
print(" include_screening=True,")
print(" include_pump_detection=True)")
print("")
print("4. Then run: final_state, signal = graph.propagate(ticker, date)")
print("\n" + "="*80 + "\n")
return True
except Exception as e:
print(f"❌ Error: {e}")
import traceback
traceback.print_exc()
return False
if __name__ == "__main__":
success = demo_integrated_agents()
sys.exit(0 if success else 1)