多代理 LLM 加密交易框架,包含从行情/新闻采集、分析决策、风险约束到链上提交与可视化监控的完整闭环。
TradingAgents 是一个面向交易场景的多角色协作系统:
- 使用 LangGraph 编排多节点 Agent 工作流。
- 把“分析”与“风控”拆分为两个阶段,避免 LLM 直接决定最终可执行订单。
- 通过持久化组合状态(SQLite)+ 记忆库(ChromaDB)实现跨轮次上下文。
- 可选接入 Sepolia 共享合约(ERC-8004 Path B)实现链上提交与反馈回流。
核心编排入口:tradingagents/graph/trading_graph.py
主要角色流如下:
- Analyst 阶段
- Bull/Bear 研究辩论阶段
- Trader 生成 TradeIntent 草案
- Risk Engine 做硬约束校验与裁剪
- 输出 final_trade_decision
当前简化架构中主要分析师为:market、news、quant(见 graph setup)。
- 串行模式:tradingagents/graph/setup.py
- 并行模式:tradingagents/graph/parallel_setup.py
并行模式会把 Analyst 子图隔离并发执行,再统一合并上下文,兼顾速度与稳定性。
实现位置:tradingagents/agents/managers/risk_engine.py
关键点:
- 从 Trader JSON 提取 TradeIntent。
- 按账户状态计算可交易额度。
- 将请求订单裁剪为可执行订单。
- BUY/SELL/HOLD 最终由硬规则落地,而非只依赖模型语言输出。
当前实现中的关键硬约束(以 risk_engine.py 为准):
- max_position_pct = 0.40
- max_single_order_pct = 0.10
- hard_max_trade_usd = 500.0
说明:default_config.py 中存在 max_position_pct/max_single_order_pct 配置项,但风险引擎当前代码内写死了上述值。
实现位置:tradingagents/portfolio_manager.py
使用 SQLite 保存:
- portfolio_state(现金、仓位、PnL、总资产快照)
- trade_history(开平仓历史)
并在首轮运行时自动初始化资金基线,后续运行复用状态。
实现位置:
- tradingagents/virtual_ledger.py
- tradingagents/web3_layer/on_chain_integration.py
- tradingagents/web3_layer/trade_status_checker.py
- tradingagents/web3_layer/portfolio_feedback.py
流程:
- 提交 TradeIntent 后先在本地账本预留资金。
- 轮询 RiskRouter 事件等待 approved/rejected。
- 根据反馈更新虚拟账本与组合状态。
- 将结果回写 Agent 记忆(trade outcome recorder)。
后端:runtime_api_server.py(默认 127.0.0.1:8765)
主要接口:
- GET /healthz
- GET /api/runs
- POST /api/run/start
- GET /api/runs/{runId}/events?after=0
前端:web-dashboard(React 19 + Vite + TypeScript + Tailwind + Zustand + Recharts)
实现位置:
- trigger_main.py
- tradingagents/triggers/runtime.py
- tradingagents/triggers/observers.py
通过观察器与事件总线监控:
- 小时边界
- 新闻源轮询
- 价格行为
在聚合窗口内形成 market shock 后唤醒交易图执行。
主要实现:
- web3_path_b.py
- tradingagents/web3_layer/client.py
能力包含:
- agent 注册
- claim allocation
- EIP-712 TradeIntent 签名
- RiskRouter simulate/submit
- ValidationRegistry checkpoint 记分
项目把“推理能力”和“交易约束”解耦:
- 上游 Agent 负责信息解释、观点生成。
- 下游 Risk Engine 负责强约束执行。
这样能降低 LLM 幻觉直接转化为资金风险的概率。
每次运行会产出 trace/full_state 日志,Runtime API 还能按 offset 增量拉取事件。
设计目标是先做到可观测、可审计,再谈吞吐和并发优化。
Trigger Runtime 通过事件总线聚合多源信号后再唤醒 Agent,减少无效调用。
链上提交不是终点,系统会等待 RiskRouter 的 approve/reject 反馈,并回流到:
- 组合状态
- 虚拟账本
- Agent 记忆
即形成“决策 -> 执行 -> 反馈 -> 记忆”的最小学习闭环。
- Python 3.10+
- LangGraph
- LangChain Core / OpenAI / Anthropic / Google GenAI
- Pandas / requests / feedparser / beautifulsoup4
- Typer + Rich(CLI)
- SQLite(组合与交易历史)
- JSONL/JSON(trace 与输出)
- ChromaDB + sentence-transformers(语义记忆)
- web3.py
- eth-account
- EIP-712 typed data signing
- Sepolia(共享合约地址内置,可覆盖)
- React 19
- TypeScript
- Vite 8
- TailwindCSS
- Zustand
- Recharts
- tradingagents/graph:主工作流编排、并行/串行图、传播与反思
- tradingagents/agents:分析师、研究员、交易员、风险引擎节点
- tradingagents/dataflows:行情、指标、新闻工具
- tradingagents/triggers:事件观察器与运行时调度
- tradingagents/web3_layer:链上客户端、提交集成、反馈处理
- cli:交互式终端入口
- web-dashboard:前端仪表盘
- runtime_api_server.py:后端 API
- trigger_main.py:事件驱动入口
- Python >= 3.10
- Node.js >= 18(前端可视化需要)
- 至少一个 LLM Provider 的 API Key
python -m venv .venv
# Windows
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt在项目根目录创建 .env,最小示例:
DEEPSEEK_API_KEY=your_deepseek_key
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_keypython main.pytradingagents
# 或
python -m cli.mainpython runtime_api_server.pycd web-dashboard
npm install
npm run dev默认后端地址为 http://127.0.0.1:8765。
python trigger_main.py可通过 default_config.py 与环境变量控制:
- 观察交易对
- 聚合窗口
- cooldown
- 轮询周期
- 新闻源过滤
先在 .env 配置(示例):
SEPOLIA_RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
OPERATOR_PRIVATE_KEY=0x...
AGENT_WALLET_PRIVATE_KEY=0x...
AGENT_ID=123常用命令:
python web3_path_b.py register --name my-agent --description "demo"
python web3_path_b.py claim --agent-id 123
python web3_path_b.py balance --agent-id 123
python web3_path_b.py simulate-intent --agent-id 123 --action BUY --amount-usd-scaled 25000
python web3_path_b.py submit-intent --agent-id 123 --action BUY --amount-usd-scaled 25000- eval_results/{PAIR}/TradingAgentsStrategy_logs/full_trace_*.jsonl
- eval_results/{PAIR}/TradingAgentsStrategy_logs/full_states_log_*.json
- trade_memory/portfolio.db
- trade_memory/virtual_ledger.json
- 当前风险引擎 hard cap 为 500 USD/单,适合测试与演示,不适合作为生产资金管理上限。
- 链上提交依赖 Sepolia RPC 与 gas,且 checkpoint 提交钱包需有可用 ETH。
- 并行模式在部分 Provider 的工具调用消息约束下可能回退到串行执行(代码已内置 fallback)。
MIT License,见 LICENSE。