开源股票投研Agent智能体的工程实践:基于LLM的自主投研系统
摘要
传统量化投研系统以"数据→模型→信号"的单向流水线为核心,缺乏对复杂市场环境的自主感知、推理与行动能力。本文提出一种基于大语言模型(LLM)的投研Agent智能体架构,采用"感知层→认知层→行动层"的三层设计,结合可插拔Skill系统、分层记忆机制与多Agent协作框架,实现了自主化的投研工作流。系统区别于传统量化系统的关键创新在于:(1)Agent可自主理解非结构化市场信息并做出研判;(2)Skill系统支持零代码扩展新投研能力;(3)多Agent协作实现7×24小时全市场覆盖。本文以开源平台AlphaGBM的工程实践为基础,详细阐述架构设计、关键技术与安全约束,并讨论投研Agent的能力边界与局限性。
关键词:投研Agent;大语言模型;智能体系统;多Agent协作;可插拔技能;量化投研
1 引言
1.1 从量化系统到Agent系统的范式跃迁
传统量化投研系统的核心范式可概括为:数据采集→因子计算→模型预测→信号生成→人工决策。这一范式在处理结构化数据(行情、财务、资金流)方面表现出色,但面临以下结构性瓶颈:
(1)认知刚性。 传统系统的"认知"固化在预设的因子公式和模型参数中,无法动态理解新型市场事件。例如,面对"某国突然加征关税"这一事件,传统系统只能通过价格变化被动反映,而无法主动解读事件含义并预判传导路径。
(2)工作流碎片化。 投研日常涉及大量异质任务:晨间市场扫描、个股深度分析、财报解读、风险监控、研报撰写、内容发布等。传统系统通常为每个任务开发独立脚本,缺乏统一的任务编排与上下文传递能力。
(3)知识沉淀低效。 投研过程中积累的判断经验("这种K线形态+资金流组合通常意味着主力建仓")难以系统化编码进传统模型,多依赖分析师个人记忆。
Agent范式[1]为上述问题提供了新的解法。Agent被定义为能够自主感知环境、进行推理、采取行动的智能实体。将LLM作为Agent的"大脑",配合工具调用(Tool Use)能力[2],可构建具备自主投研能力的智能体系统。
1.2 相关工作
Agent范式在学术界引起了广泛关注。Park等(2023)[3]提出Generative Agents,展示了LLM Agent的社会行为模拟能力。Significant Gravitas的AutoGPT[4]开启了自主Agent的工程化探索。Wang等(2024)[5]综述了LLM-based Agent的架构设计与应用。
在金融领域,FinRobot[6]探索了多Agent金融分析框架,FinAgent[7]研究了LLM在交易决策中的应用。然而,上述工作多停留在概念验证或单一任务场景,缺乏面向多市场、全工作流的工程化落地经验。
1.3 本文贡献
提出面向投研场景的三层Agent架构,阐述各层设计原理
设计可插拔Skill系统,实现投研能力的模块化扩展
构建分层记忆机制,解决LLM上下文窗口有限与知识沉淀的矛盾
提出多Agent协作框架与安全约束体系
以AlphaGBM开源实践提供完整工程参考
2 投研Agent vs 传统量化系统
在深入架构设计前,有必要厘清投研Agent与传统量化系统的本质差异:
维度 传统量化系统 投研Agent系统
认知方式 预设公式+固定参数 LLM动态推理
输入类型 结构化数据为主 结构化+非结构化混合
任务范围 单一流水线 多任务自主编排
扩展方式 修改代码+重新部署 添加Skill+热加载
知识沉淀 参数更新 记忆系统+知识库
输出形式 数值信号 信号+自然语言报告
异常处理 预设规则 自主推理+人类升级
需要特别强调的是:Agent系统并非要"取代"传统量化模型,而是将其作为工具(Tool)纳入Agent的能力库。量化模型擅长处理高维结构化数据的模式识别,LLM擅长理解语义与进行因果推理——两者互补而非替代。
3 系统架构
3.1 三层架构
投研Agent采用经典的感知-认知-行动(Perception-Cognition-Action)三层架构:
┌──────────────────────────────────────────────────────────┐
│ 行动层 (Action) │
│ │
│ 信号输出 │ 研判报告生成 │ 预警推送 │ 内容发布 │ 人类确认 │
├──────────────────────────────────────────────────────────┤
│ 认知层 (Cognition) │
│ │
│ LLM推理引擎 │ Skill调度器 │ 记忆系统 │ 规则约束引擎 │
├──────────────────────────────────────────────────────────┤
│ 感知层 (Perception) │
│ │
│ 行情数据采集 │ 新闻/公告监控 │ 社交媒体扫描 │ 事件检测 │
└──────────────────────────────────────────────────────────┘
3.2 感知层
感知层是Agent的"眼睛和耳朵",负责从多个异构数据源采集信息并转化为Agent可处理的结构化输入。
数据连接器(Connector)抽象。 系统定义了统一的Connector接口,封装不同数据源的访问逻辑。当前注册了18个Connector,覆盖行情(券商API)、财务(数据服务商)、新闻(新闻聚合API)、社交(社交平台API)、另类数据(期权链、资金流)等类别。每个Connector记录名称、用途、优先级、关联脚本与健康状态。
class Connector:
name: str # 数据源名称
category: str # 行情/财务/新闻/社交/另类
priority: int # 优先级(低=优先)
health: str # healthy/degraded/down
def fetch(self, query: dict) -> DataFrame:
"""标准化数据拉取接口"""
...
def health_check(self) -> bool:
"""健康检查,支持故障降级"""
...
事件检测器。 感知层内置事件检测模块,持续监控以下信号:
价格异动: 标的价格偏离基准超过阈值(如日内跌幅>5%),触发暴跌哨兵
新闻热度突增: 某标的相关新闻量在短时间内激增,触发事件分析
数据源异常: Connector健康检查失败,触发降级逻辑
3.3 认知层
认知层是Agent的"大脑",由四个核心组件构成:
3.3.1 LLM推理引擎
LLM推理引擎是认知层的核心,负责理解感知层输入、调用记忆系统、编排Skill执行。引擎支持多模型路由策略:
复杂分析任务(深度研判、归因分析) → 高能力模型
简单任务(数据格式化、状态报告) → 轻量模型
这一分级策略在控制计算成本的同时保证关键任务的分析质量。实践中,高能力模型负责晨扫/晚扫研判、暴跌归因等高价值任务;轻量模型负责数据采集、状态监控等标准化任务。
3.3.2 Skill调度器
Skill调度器根据当前任务类型,从Skill注册表中选择并加载合适的Skill模块。调度逻辑如下:
def dispatch_skill(task_description: str, available_skills: list) -> Skill:
"""
1. 扫描可用Skill列表
2. 匹配最相关的Skill
3. 加载Skill的SKILL.md获取执行指令
4. 返回Skill实例
"""
best_match = semantic_match(task_description, available_skills)
skill_instructions = load_skill_md(best_match.location)
return Skill(instructions=skill_instructions)
3.3.3 记忆系统(详见第4节)
3.3.4 规则约束引擎
规则约束引擎为LLM推理施加硬边界,防止幻觉和越权行为。关键约束包括:
交易确认约束: 任何涉及真实资金的交易指令必须经人类确认(详见第6节)
数据验证约束: 搜索结果中的价格/日期信息必须经验证脚本交叉校验
输出格式约束: 对外发布内容必须符合预设模板,不泄露内部信息
4 Skill系统:可插拔的投研能力
4.1 设计哲学
Skill系统是投研Agent实现能力扩展的核心机制。其设计哲学借鉴了Unix的"小工具组合"理念——每个Skill是一个聚焦于单一投研任务的独立模块,通过标准化接口组合使用。
4.2 Skill结构
每个Skill由以下文件构成:
skills/
└── {skill-name}/
├── SKILL.md # 技能说明书(LLM可读的执行指令)
├── scripts/ # 数据处理脚本
├── templates/ # 输出模板(如有)
└── data/ # 技能专属数据(如有)
SKILL.md是Skill的灵魂——它用自然语言描述了技能的输入、步骤、输出格式和约束条件。LLM通过阅读SKILL.md即可掌握该技能的使用方法,无需额外训练或微调。这一设计实现了"zero-shot技能习得"。
4.3 Skill示例
以下列举系统中的典型Skill模块:
Skill名称 功能 触发条件
morning-scan 晨间市场扫描研判 每日定时触发
evening-scan 晚间市场回顾研判 每日定时触发
crash-attribution 暴跌归因分析 异动检测触发
earnings-analysis 财报深度解读 财报发布事件
deep-valuation 个股深度估值 人类指令触发
fear-index-daily 恐慌指数日报 每日定时触发
options-flow 期权资金流分析 定时/异动触发
storage-signal 行业信号追踪 定时触发
content-publish 多渠道内容发布 分析完成后触发
4.4 Skill的热扩展
添加新Skill的流程极为简洁:
在skills/目录下创建新文件夹
编写SKILL.md,描述技能逻辑
放入配套脚本(如有)
注册到技能清单
无需重启系统、无需重新训练模型、无需修改框架代码。这种"写一篇说明书就能教会Agent新技能"的扩展方式,大幅降低了投研能力迭代的工程门槛。
5 记忆系统
5.1 LLM记忆的挑战
LLM的上下文窗口(Context Window)虽然近年大幅扩展(从4K到100K+tokens),但仍远不足以容纳投研所需的全部历史信息。一个活跃的投研Agent每日产生的分析记录、市场观察、决策日志可达数万字。如何在有限窗口内保持关键信息的可及性,是Agent系统设计的核心难题。
5.2 分层记忆架构
系统设计了三层记忆架构:
┌───────────────────────────────────────┐
│ 工作记忆 (Working Memory) │ ← 当前会话上下文
│ 容量: ~100K tokens │
│ 生命周期: 单次会话 │
├───────────────────────────────────────┤
│ 短期记忆 (Short-term Memory) │ ← 近期日志
│ 载体: memory/YYYY-MM-DD.md │
│ 生命周期: 天级 │
│ 内容: 每日市场观察、决策记录 │
├───────────────────────────────────────┤
│ 长期记忆 (Long-term Memory) │ ← 稳定知识
│ 载体: MEMORY.md + 知识库文件 │
│ 生命周期: 持久 │
│ 内容: 持仓逻辑、策略参数、 │
│ 历史教训、人物偏好 │
└───────────────────────────────────────┘
工作记忆对应LLM的上下文窗口。Agent在会话开始时加载今日+昨日的短期记忆(memory/YYYY-MM-DD.md)和长期记忆摘要(MEMORY.md),构建工作记忆基底。
短期记忆采用日级文件存储,每日一个Markdown文件。内容包括当日的市场观察、分析结论、决策记录、待办事项。过期的短期记忆可通过语义搜索检索,但不自动加载进工作记忆。
长期记忆存储稳定的、跨时间的知识。包括但不限于:投资论点(thesis)、持仓逻辑、策略参数、历史教训总结。长期记忆的写入遵循严格的CI检查流程(详见5.3节)。
5.3 记忆写入的CI检查
为防止错误信息污染长期记忆,系统对每次记忆写入执行"CI三问"检查:
CI-1: 这条信息是事实还是推测?(事实需标注来源)
CI-2: 已有记忆中是否存在矛盾?(矛盾需先解决)
CI-3: 这条信息的权威源在哪里?(每条事实只存一个权威位置)
CI-3原则尤为关键——它避免了同一事实在多处记录导致的不一致性。例如,持仓信息的权威源是券商API而非手动记录文件;策略参数的权威源是配置文件而非日志。
5.4 语义搜索与召回
当Agent需要回溯历史信息时,通过语义搜索接口检索记忆库:
def memory_recall(query: str, corpus: str = "memory") -> list:
"""
语义搜索记忆库
corpus: "memory" - 仅记忆文件
"wiki" - 知识库补充
"all" - 全部
返回按相关性排序的记忆片段
"""
语义搜索弥补了关键词匹配的不足——例如查询"海力士事件"可以召回包含"SK Hynix"、"存储芯片"、"HBM"等相关记忆。
6 多Agent协作
6.1 协作动机
单一Agent受限于执行效率和任务并行度。投研场景天然适合多Agent协作:
时域分工: 不同市场的交易时段不同(A股/港股 vs 美股),需要不同Agent在不同时段值守
职能分工: 数据采集、深度分析、内容发布等任务的能力需求差异大
风险隔离: 分析Agent和内容Agent的权限边界不同
6.2 Agent角色设计
系统中的Agent角色设计遵循"最小权限"原则:
Agent角色 职责 工作时段 关键权限
晨扫Agent 亚洲市场开盘研判 09:00-09:30 读数据+写报告
晚扫Agent 美股开盘前综合研判 21:00-21:30 读数据+写报告
暴跌哨兵Agent 全时段异动监控 7×24 读数据+发预警
内容Agent 研判内容发布 发布时段 读报告+发内容
数据采集Agent 定时数据预处理 采集时点 读写数据文件
6.3 Agent间通信
Agent间通过文件系统和消息通道进行异步通信:
文件系统协议: 数据采集Agent将预处理结果写入约定路径的JSON文件,分析Agent读取该文件进行后续分析。这种"生产者-消费者"模式解耦了采集与分析的执行时序。
数据采集Agent → _staging/data/*.json → 分析Agent
分析Agent → outputs/*.md → 内容发布Agent
消息通道: 紧急事件(如暴跌哨兵触发)通过即时消息通道推送给人类决策者,不经过中间Agent——确保关键信息的传递时效性。
6.4 错峰调度
多Agent共享计算资源时,必须避免资源争抢。系统建立了错峰调度原则:
同一时段最多1个重计算Agent运行(使用高能力模型的分析任务)
相邻任务间隔至少5分钟
轻量任务(数据采集、状态监控)可与重任务并行
7 安全约束体系
7.1 设计哲学
投研Agent的安全约束遵循一个核心原则:安全性优先于完成度(Safety over Completion)。当安全约束与任务完成发生冲突时,Agent必须暂停执行并请求人类介入。
7.2 交易确认铁律
这是系统最重要的安全约束——任何涉及真实资金的交易操作,必须经过人类明确确认:
Agent分析 → 生成交易建议 → 推送给人类 → 人类确认/拒绝 → 执行/取消
↑
不可跳过的人类环节
这一约束在代码层面通过硬编码实现,LLM无法通过Prompt注入或推理绕过。Agent可以分析、可以建议、可以模拟——但不可以自主执行真实交易。
实践中的教训进一步强化了这一铁律:LLM的Cron任务(定时自动执行)只被允许进行分析和通知,严禁直接调用交易API。
7.3 信息验证闸门
Agent在使用搜索引擎结果回答涉及股票价格、事件、公告的问题时,必须先执行验证脚本交叉校验:
# 验证搜索结果中的价格/日期是否与真实行情一致
verify_result = news_verify(
ticker=ticker,
news_price=price_from_search,
news_date=date_from_search
)
if verify_result == "FAIL":
# 旧新闻或错误数据,不得使用
discard_and_report()
这一机制是从真实错误中总结出的"血泪教训"——Agent曾将过期新闻中的陈旧价格当作当前价格使用,导致严重的判断错误。
7.4 输出安全
Agent的对外输出受到多重约束:
不泄露具体持仓、收益数字、内部人名
不在群聊中主动发言(除非被@提及)
对外发布内容必须使用高能力模型(防止低质量模型产出不合格内容)
发送前的确认步骤不可跳过
8 工程实践经验
8.1 模型选择策略
实践表明,"一个模型走天下"在投研Agent场景中既不经济也不可靠。系统采用分级模型策略:
复杂分析/对外发布: 使用最高能力的模型(如Claude Opus级别),确保分析深度和内容质量
内部采集/提醒/简单信号: 使用轻量模型,控制成本
关键教训: 不可将复杂分析任务降级到轻量模型——实测中出现过因模型能力不足导致的连续超时和质量下降
8.2 定时任务编排
投研Agent的日常工作高度依赖Cron定时任务系统。编排原则:
数据先于分析: 数据采集任务总是先于依赖其数据的分析任务运行
错峰执行: 避免多个重任务在同一分钟启动
失败通知: 关键任务配置失败即时告警,避免静默失败
8.3 错误驱动的系统演进
系统的许多设计决策来自真实错误的复盘。以下是典型案例(已脱敏):
案例1:旧新闻当今天。 Agent将搜索引擎返回的历史新闻误认为当日事件,输出错误研判。→ 引入新闻日期验证闸门。
案例2:模拟仓≠真实仓。 Agent从模拟交易账户读取持仓数据,但模拟仓与真实仓存在偏差,导致风控计算错误。→ 强制使用券商API查询真实持仓。
案例3:并发请求触发限流。 Agent在短时间内发出大量搜索请求,触发API限流被误判为Key失效。→ 引入串行+间隔的请求调度机制。
这些"从错误中学习"的经验被编码进系统规则和约束,形成了投研Agent的"免疫系统"。
9 开源生态与社区
9.1 开源价值
投研Agent系统的开源具有多重价值:
可复现性。 量化投研领域长期存在"黑箱"问题——策略效果无法被独立验证。开源使得系统的逻辑、数据处理、模型调用完全透明。
协作创新。 Skill系统的可插拔设计天然适合社区协作——不同开发者可以贡献不同市场、不同策略的Skill模块。
教育价值。 对于量化投研的学习者,一个完整的、生产级的Agent系统比碎片化的教程更有学习价值。
9.2 技术栈
AlphaGBM的核心技术栈包括:
层级 技术选型 选型理由
Agent框架 OpenClaw 开源、可扩展、原生Skill支持
LLM 多模型路由 成本与能力平衡
数据存储 SQLite + Markdown 轻量、可版本控制
定时调度 Cron系统 可靠、可观测
部署 单机(Mac) 个人投研场景足够
9.3 可扩展方向
社区可在以下方向扩展系统能力:
新市场Skill: 日股、欧股、加密货币等市场的适配
新分析Skill: 宏观经济指标分析、行业供需模型、ESG评分等
新输出Skill: 报告格式、可视化模板、交互式Dashboard
基础设施: 分布式Agent调度、实时流数据管道、GPU加速推理
10 讨论与局限
10.1 Agent系统的能力边界
坦诚认识投研Agent的能力边界至关重要:
Agent擅长的:
高频次、标准化的市场监控与信息聚合
非结构化文本的快速理解与结构化输出
多数据源的交叉验证与一致性检查
7×24小时不间断值守
Agent不擅长的:
需要深度行业经验的定性判断(如"这家公司的管理层是否可信")
尾部事件的预测(黑天鹅本质上不可预测)
需要情景假设与逆向思维的投资决策
涉及道德判断的投资选择
10.2 LLM幻觉风险
LLM幻觉(Hallucination)是投研Agent面临的最大技术风险。系统通过多重机制缓解:
硬数据优先:可量化的判断基于数据脚本输出,LLM仅负责解释
验证闸门:关键事实经脚本交叉验证
权重约束:LLM对量化模型的调节幅度有硬上限
人类兜底:重要决策必须经人类确认
但必须承认,幻觉风险无法完全消除——只能通过层层防御将其影响降到可接受水平。
10.3 成本考量
运行投研Agent系统的LLM调用成本不可忽视。以当前配置为例,每日定时任务涉及多次高能力模型调用。系统通过模型分级、错峰调度、静默机制(无触发不调用LLM)等方式控制成本,但这仍是系统推广的一个现实障碍。
11 结论
本文提出了基于LLM的投研Agent智能体架构,通过感知-认知-行动三层设计、可插拔Skill系统、分层记忆机制和多Agent协作框架,实现了自主化的投研工作流。系统的安全约束体系——特别是交易需人类确认的铁律——确保了Agent在提升效率的同时不突破风险底线。
AlphaGBM作为上述架构的开源实践平台,已在多市场(A股/港股/美股)投研场景中持续运行。系统的Skill库持续扩展,记忆系统积累了丰富的投研经验,多Agent协作框架保障了全时段覆盖。
投研Agent仍处于早期阶段,但其"AI辅助人类决策"的定位——而非"AI替代人类决策"——使其在当前技术成熟度下已具备实用价值。欢迎量化与AI领域的研究者和开发者访问 alphagbm,共同探索投研Agent的未来。
参考文献
[1] Wooldridge M, Jennings N R. Intelligent agents: Theory and practice[J]. The Knowledge Engineering Review, 1995, 10(2): 115-152.
[2] Schick T, Dwivedi-Yu J, Dessì R, et al. Toolformer: Language models can teach themselves to use tools[J]. Advances in Neural Information Processing Systems, 2024, 36.
[3] Park J S, O'Brien J C, Cai C J, et al. Generative agents: Interactive simulacra of human behavior[C]. Proceedings of the 36th Annual ACM Symposium on User Interface Software and Technology, 2023.
[4] Significant Gravitas. AutoGPT: An autonomous GPT-4 experiment[EB/OL]. https://github.com/Significant-Gravitas/AutoGPT, 2023.
[5] Wang L, Ma C, Feng X, et al. A survey on large language model based autonomous agents[J]. Frontiers of Computer Science, 2024, 18(6): 186345.
[6] Yang H, Zhang B, Wang N, et al. FinRobot: An open-source AI agent platform for financial applications using large language models[J]. arXiv preprint arXiv:2405.14767, 2024.
[7] Zhang W, Li Y, Liu Y, et al. FinAgent: A multimodal foundation agent for financial trading[J]. arXiv preprint arXiv:2402.18485, 2024.
本文系AlphaGBM开源投研Agent平台的工程实践总结,旨在为AI Agent与量化投研领域的交叉研究提供参考。项目基于OpenClaw开源框架构建。
更多推荐




所有评论(0)