摘要

传统量化投研系统以"数据→模型→信号"的单向流水线为核心,缺乏对复杂市场环境的自主感知、推理与行动能力。本文提出一种基于大语言模型(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开源框架构建。

Logo

一站式 AI 云服务平台

更多推荐