# sanmarcsoft/tradingagents architecture

> Architecture diagram of the GitHub repository sanmarcsoft/tradingagents, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sanmarcsoft/tradingagents
- Repository: https://github.com/sanmarcsoft/tradingagents

## Overview

TradingAgents is a multi-agent financial research and decision framework. Its principal workflow gathers market, company, news, and sentiment evidence; produces analyst reports; debates bullish and bearish cases; then forms a trade proposal, evaluates risk, and reaches a portfolio decision. The CLI and package entry point initiate analysis through the trading graph. README-described features are included where the tree supports a subsystem path; unsampled wiring is omitted where it cannot be established from the excerpts.

Main entry points: [`tradingagents/graph/setup.py`](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/setup.py) (Graph Setup), [`tradingagents/graph/trading_graph.py`](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/trading_graph.py) (Trading Graph), [`cli/main.py`](https://github.com/sanmarcsoft/tradingagents/blob/main/cli/main.py) (Interactive CLI), [`tradingagents/graph/analyst_execution.py`](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/analyst_execution.py) (Analyst Execution)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Entry"]
  node_cli["Interactive CLI<br/>[main.py]"]
  node_package_entry["Package Entry<br/>[main.py]"]
end

subgraph group_orchestration["Workflow Graph"]
  node_trading_graph["Trading Graph<br/>[trading_graph.py]"]
  node_graph_setup["Graph Setup<br/>[setup.py]"]
  node_analyst_execution["Analyst Execution"]
end

subgraph group_research["Analysis and Debate"]
  node_analysts["Analyst Team"]
  node_bull_bear["Bull/Bear Debate"]
  node_research_manager["Research Manager"]
  node_trader["Trader<br/>[trader.py]"]
  node_risk_team["Risk Debate"]
  node_portfolio_manager["Portfolio Manager"]
end

subgraph group_data["Data and Models"]
  node_agent_tools["Research Tools"]
  node_dataflows["Data Providers"]
  node_llm_factory["LLM Factory<br/>[factory.py]"]
  node_llm_providers["LLM Clients"]
end

subgraph group_results["Decision and State"]
  node_decision["Final Decision"]
  node_memory["Decision Memory<br/>[memory.py]"]
  node_checkpoint[("Graph Checkpoint<br/>[checkpointer.py]")]
  node_reporting["Report Rendering<br/>[reporting.py]"]
end

node_user(("Researcher"))
node_external_data(("Market Data APIs"))
node_external_llm(("LLM Services"))

node_user -->|"configures run"| node_cli
node_cli -->|"starts analysis"| node_trading_graph
node_package_entry -->|"starts analysis"| node_trading_graph
node_trading_graph -->|"builds workflow"| node_graph_setup
node_graph_setup -->|"dispatches analysts"| node_analyst_execution
node_analyst_execution -->|"invokes"| node_analysts
node_analysts -->|"requests evidence"| node_agent_tools
node_agent_tools -->|"fetches data"| node_dataflows
node_dataflows -->|"queries providers"| node_external_data
node_graph_setup -->|"dispatches debate"| node_bull_bear
node_graph_setup -->|"dispatches synthesis"| node_research_manager
node_graph_setup -->|"dispatches proposal"| node_trader
node_graph_setup -->|"dispatches risk debate"| node_risk_team
node_graph_setup -->|"dispatches decision"| node_portfolio_manager
node_research_manager -->|"uses debate state"| node_bull_bear
node_portfolio_manager -->|"produces decision"| node_decision
node_trading_graph -->|"creates models"| node_llm_factory
node_llm_factory -->|"selects client"| node_llm_providers
node_llm_providers -->|"invokes model"| node_external_llm
node_trading_graph -->|"uses prior decisions"| node_memory
node_trading_graph -->|"persists graph state"| node_checkpoint
node_cli -->|"renders results"| node_reporting
node_trading_graph -->|"returns result"| node_decision

click node_cli "https://github.com/sanmarcsoft/tradingagents/blob/main/cli/main.py"
click node_package_entry "https://github.com/sanmarcsoft/tradingagents/blob/main/main.py"
click node_trading_graph "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/trading_graph.py"
click node_graph_setup "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/setup.py"
click node_analyst_execution "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/analyst_execution.py"
click node_analysts "https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/analysts"
click node_bull_bear "https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/researchers"
click node_research_manager "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/managers/research_manager.py"
click node_trader "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/trader/trader.py"
click node_risk_team "https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/risk_mgmt"
click node_portfolio_manager "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/managers/portfolio_manager.py"
click node_agent_tools "https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/utils"
click node_dataflows "https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/dataflows"
click node_llm_factory "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/llm_clients/factory.py"
click node_llm_providers "https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/llm_clients"
click node_memory "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/utils/memory.py"
click node_checkpoint "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/checkpointer.py"
click node_reporting "https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/reporting.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_package_entry toneBlue
class node_trading_graph,node_graph_setup,node_analyst_execution toneAmber
class node_analysts,node_bull_bear,node_research_manager,node_trader,node_risk_team,node_portfolio_manager,node_external_data toneMint
class node_agent_tools,node_dataflows,node_llm_factory,node_llm_providers toneRose
class node_decision,node_memory,node_checkpoint,node_reporting,node_user,node_external_llm toneIndigo
```

## Components

### User Entry

- [Interactive CLI](https://github.com/sanmarcsoft/tradingagents/blob/main/cli/main.py): `cli/main.py`
- [Package Entry](https://github.com/sanmarcsoft/tradingagents/blob/main/main.py): `main.py`

### Workflow Graph

- [Trading Graph](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/trading_graph.py): `tradingagents/graph/trading_graph.py`
- [Graph Setup](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/setup.py): `tradingagents/graph/setup.py`
- [Analyst Execution](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/analyst_execution.py): `tradingagents/graph/analyst_execution.py`

### Analysis and Debate

- [Analyst Team](https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/analysts): `tradingagents/agents/analysts`
- [Bull/Bear Debate](https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/researchers): `tradingagents/agents/researchers`
- [Research Manager](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/managers/research_manager.py): `tradingagents/agents/managers/research_manager.py`
- [Trader](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/trader/trader.py): `tradingagents/agents/trader/trader.py`
- [Risk Debate](https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/risk_mgmt): `tradingagents/agents/risk_mgmt`
- [Portfolio Manager](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/managers/portfolio_manager.py): `tradingagents/agents/managers/portfolio_manager.py`

### Data and Models

- [Research Tools](https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/agents/utils): `tradingagents/agents/utils`
- [Data Providers](https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/dataflows): `tradingagents/dataflows`
- [LLM Factory](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/llm_clients/factory.py): `tradingagents/llm_clients/factory.py`
- [LLM Clients](https://github.com/sanmarcsoft/tradingagents/tree/main/tradingagents/llm_clients): `tradingagents/llm_clients`

### Decision and State

- **Final Decision**
- [Decision Memory](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/agents/utils/memory.py): `tradingagents/agents/utils/memory.py`
- [Graph Checkpoint](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/graph/checkpointer.py): `tradingagents/graph/checkpointer.py`
- [Report Rendering](https://github.com/sanmarcsoft/tradingagents/blob/main/tradingagents/reporting.py): `tradingagents/reporting.py`

### Other components

- **Researcher**
- **Market Data APIs**
- **LLM Services**

## Connections

- Researcher → Interactive CLI: configures run
- Interactive CLI → Trading Graph: starts analysis
- Package Entry → Trading Graph: starts analysis
- Trading Graph → Graph Setup: builds workflow
- Graph Setup → Analyst Execution: dispatches analysts
- Analyst Execution → Analyst Team: invokes
- Analyst Team → Research Tools: requests evidence
- Research Tools → Data Providers: fetches data
- Data Providers → Market Data APIs: queries providers
- Graph Setup → Bull/Bear Debate: dispatches debate
- Graph Setup → Research Manager: dispatches synthesis
- Graph Setup → Trader: dispatches proposal
- Graph Setup → Risk Debate: dispatches risk debate
- Graph Setup → Portfolio Manager: dispatches decision
- Research Manager → Bull/Bear Debate: uses debate state
- Portfolio Manager → Final Decision: produces decision
- Trading Graph → LLM Factory: creates models
- LLM Factory → LLM Clients: selects client
- LLM Clients → LLM Services: invokes model
- Trading Graph → Decision Memory: uses prior decisions
- Trading Graph → Graph Checkpoint: persists graph state
- Interactive CLI → Report Rendering: renders results
- Trading Graph → Final Decision: returns result
