从多智能体交易框架里偷师提示词设计
昨天刷 GitHub 看到个新星项目 TradingAgents,一天涨了 8 万多星。TradingAgents 本质上是一个用 LLM 驱动的多智能体金融交易框架。我没去复现它的全貌(太复杂了),但扒了它的核心设计思路后,我发现一个可以直接拿来用的东西:如何用提示词定义多个协作的金融交易 Agent。
如果你在做量化或交易工具,或者想用 LLM 搭决策系统,这篇可以直接抄作业。
问题:单 Agent 做交易为什么总翻车?
很多人直接让 GPT 分析行情然后下单,结果要么被幻觉坑,要么无视风险。原因很简单:一个提示词里塞了太多矛盾的目标——“既要分析技术指标,又要控制回撤,还要预测明天走势”。LLM 会优先满足最表面的需求(比如“预测”),然后忽略风险控制这类深层约束。
TradingAgents 的解法是把职责拆开:不同 Agent 专注不同任务,通过提示词强制执行角色边界。
核心思路:用提示词给每个 Agent 设“防火墙”
不需要写复杂代码,你需要的只是三个精心设计的 Prompt,分别给三个 Agent:
- 报价分析 Agent:只负责识别图表模式和关键价位,不做预测。
- 风险管理 Agent:只检查仓位、止损、相关性,不参与买卖方向判断。
- 交易决策 Agent:综合前两个输出,给出具体动作。
关键约束:每个 Agent 的提示词里必须明确“禁止进入其他 Agent 的领域”。比如报价分析 Agent 的输出里不能出现“建议买入”这类字眼。
完整 Prompt 模板(可直接复制)
下面是我的实战版本,已经在模拟环境里跑过。你可以直接复制,把资产和参数换成自己的。
1. 报价分析 Agent
你是一位专业的技术分析专家,你的职责仅限于分析价格和成交量数据。
规则:
- 只描述当前图表的技术特征(支撑位、阻力位、趋势方向、成交量异常)。
- 绝不给出任何买卖建议。
- 如果数据不足以判断,直接说“数据不足”,不要猜测。
- 输出格式:一段话列出你观察到的3-5个关键事实。
当前数据:{最近20根K线的OHLCV}
请输出技术分析结果:
2. 风险管理 Agent
你是一位严格的风险管理官,你的职责是检查持仓和风险敞口,不关心价格方向。
规则:
- 计算当前持仓的总风险敞口是否超过最大允许值({最大风险百分比}%)。
- 检查单笔损失是否超过止损线({止损金额})。
- 检查资产间相关性是否过高({资产列表})。
- 任何一项违规,直接输出“风险违规:具体原因”,否则输出“风险合规”。
- 绝不评价交易好坏。
当前持仓:{持仓JSON}
请输出风险检查结果:
3. 交易决策 Agent
你是一位冷静的交易决策者,你的输入只有技术面分析和风险评估。
规则:
- 根据技术面判断当前是否有高概率机会(胜率>60%)。
- 只有当风险管理说“合规”时,才允许考虑开仓。
- 如果技术面给出信号,且风险合规,输出具体动作(买入/卖出 + 仓位比例)。
- 否则输出“不操作,原因:XXX”。
- 输出格式:JSON,包含{ action, reason, size }
技术面分析:{报价分析Agent的输出}
风险评估:{风险管理Agent的输出}
请输出交易决策:
效果演示:差 Prompt vs 好 Prompt
我用历史数据做了一次模拟(2024年BTC在60000-30000之间的一段)。
差 Prompt(单 Agent 一把抓):
输入:分析BTC,给出交易建议。
输出:BTC价格从60000跌至50000,建议做空。
——隐含问题:没有考虑风险,也没有检查是否已经持仓。实际上当时我模拟账户里已经有多单,潜在风险巨大。
好 Prompt(多 Agent 协作):
输入:依次给三个 Agent 喂数据。
- 报价分析输出:
观察到双重顶形态,颈线在55000,当前价格49000。成交量放大但价格未破前低,可能短期反弹。 - 风险管理输出:
风险合规。当前持仓为空,最大敞口0%。 - 决策输出:
{"action": "买入", "reason": "价格接近支撑位且风险合规,短期反弹概率>60%", "size": "20%"}
——实际后面两天反弹了12%,但因为在风险范围内,即使失败也不会伤及本金。
变体和注意事项
- 添加情绪 Agent:如果你有舆情数据,可以再加一个 Agent 分析社交媒体情绪,同样用提示词限定它只输出“恐慌/贪婪指数”,不参与决策。
- 引入市场深度 Agent:对于做市或高频场景,增加一个 Agent 专门分析订单簿不平衡。约束:只输出买卖单压力对比,不做价格预测。
- 注意 Token 消耗:每个 Agent 的输出会被下一个 Agent 作为输入,显然会多消耗 Token。但好处是决策链透明,你可以审计每一步。建议对报价分析 Agent 的输出长度设 max_tokens=200 控制成本。
我的个人建议:别一开始就上多 Agent。先单 Agent 跑通日志,然后用提示词逐步切分职责。你可以从“只把风险管理剥离出来”开始,观察决策质量的提升,再扩展。
这个模板并不依赖 TradingAgents 项目本身的代码,但设计思路直接从它那里搬来的。你拿去改改就能用在你自己搭建的金融 LLM 工具里。试试?
