第 4 课 · Multi-Agent 协作与因子研究

让 AI 帮你挖因子

先理解多个 Agent 怎样协作,
再用它们一起找因子,把每次尝试的过程和结果记清楚。

《AI Agent & Skills 驱动的量化交易工作流》
研究
问题
生成
候选
独立
审查
冻结
验证
统一
评估
开场 · 先说说你的想法

增加 Agent,就一定能挖出更好的因子吗?

同样的模型、数据和预算:
一个 Agent 反复修改,或多个 Agent 分工审查,你会怎样选?

先选一种,写出你最担心的一个失败原因。课后再回看这个判断。

本课目标 1

说清好处和代价

分开做、同时做、互相检查,分别有什么用。

本课目标 2

知道结果从哪里来

分清“想试什么”“算出什么”和“别人怎么看”。

本课目标 3

留好最后考试的数据

知道哪些数据已经用来挑因子、改参数。

基础概念 · 从模型到协作系统

LLM 会回答,Agent 会行动,Multi-Agent 会分工

01Large Language ModelLLM

擅长回答问题、写文字。要查最新数据或执行操作,还得接上工具。

+
02LLM + tools + state + goalAgent

不只回答,还能用工具做事、记住进度,比如查数据、运行代码。

+
03multiple interacting agentsMulti-Agent System

几个 Agent 分工做事、互相检查。是不是真的比一个好,要看实际效果。

用 LLM

一次性问答、翻译、摘要。

用 Agent

需要工具、实时数据或多步行动。

用 Multi-Agent

任务能拆开做,或需要不同专长的人来检查。

不要把三者混为一谈:多 Agent 不只是多问模型几次,而是给每个 Agent 分清工作,再让它们配合。
来源:Aravinda Kumar · Multi-Agent Frameworks;Tran et al. · Multi-Agent Collaboration Survey
基础概念 · Multi-Agent System

让几个 Agent 一起干活,先说清四件事

谁来干活sub agents

主 Agent 把任务交给这些子 Agent。每位只拿到自己需要、也允许使用的资料和工具。

它们在哪里工作Environment

它们能看和操作的地方,比如网页、代码库和数据库。

它们怎样来往Interactions

怎么分任务、传结果?意见不一样时听谁的?

Agent 如何组织Organization

是一个总负责人统一安排,大家直接沟通,还是分几层管理?

怎么配合谁负责哪件事?结果交给谁?做到什么程度算完成?
协作不等于聊天:不能只让它们聊天。还得说清谁来做、做到了哪一步、有争议怎么办、什么时候停。
来源:Tran et al. (2025),Sections 2–4
怎么分工 · 看谁要等谁

先看谁要等谁,再决定怎么分工

得按先后顺序来

顺序执行

先写因子,再计算、看结果。前一步没做完,后一步没法开始。

只需要一位专家

找对专家(路由)

问题先分类,再交给合适的专家。

几件事互不耽误

并行汇总

趋势、反转、量价可以各自研究,再统一汇总。

任务还能拆分

层级分解

大任务拆成小任务,小任务还可以再拆。每层都要说清谁负责。

不管怎么分工,都要检查结果:先做出来,再按标准检查;需要就修改,但要约定最多改几轮。
互动演示 · 教学示意

能分头做,但得等大家做完再汇总

因子研究 · 讲解

多 Agent 好在哪里?关键看怎么分工

收益

让大家从不同角度想

有人研究趋势,有人研究反转、量价,别让所有人反复想同一招。

收益

写因子和查问题分开

让另一位专门找问题,先各自判断,不急着看别人的答案。

代价

沟通也要花时间和钱

多传一次资料、多检查一遍都有成本。人多也可能漏事,甚至一起想错。

事情简单、拆不开,或多查一遍没什么帮助时,一个 Agent 可能就够了。分开工作,也可能犯同样的错。
一起想一想 · 换个例子

这三件事,能同时开工吗?

A 负责写因子,B 检查 A 的代码,C 根据 B 的结果决定留不留。让三位同时开工,整件事就能更快做完吗?

先自己想 45 秒:说说你的判断,再说一句为什么。

查看答案与理由

不能。A 还没写好,B 就没代码可查;B 还没查完,C 就没结果可看。互不影响的几个因子可以分头研究,但每个因子内部仍要按顺序来。

从通用模式到本课案例

从开始找因子到做决定,大家怎么接力?

01 · 发起

Supervisor

研究什么、能用什么、花多少

02 · 生成

4 个 Generator

各自研究一类因子

03 · 测量

按统一标准计算

用程序算,把结果存下来

↓ 同一版因子,同一份计算结果
06 · 接收决定

Supervisor

继续找、修改,或申请定稿

05 · 综合

Pool Synthesizer

看两份检查意见,也和已有因子比

04 · 质疑

2 个 Reviewer

各自检查,先不看对方怎么写

因子改了,就要重新计算、重新检查。计算交给程序,各步之间由 Controller 安排交接。
因子研究 · 讲解

八个角色:谁干什么,最后交什么

1 位 Supervisor分任务、管预算,决定继续找、修改还是申请定稿ResearchDecision
4 位 Generator趋势动量|均值回归|量价流动性|波动风险FactorSpec
2 位 Reviewer一位看研究思路,一位查代码和未来数据;各自检查同一份结果ReviewReport
1 位 Synthesizer看两份检查意见,再和已有因子比较,建议留下、再看或淘汰PoolDecision
Controller 按规则安排流程,Human Gate 是需要人来批准的地方。这两项不算在八个 Agent 里。
因子研究 · 讲解

谁思考,谁计算,谁负责交接?

Agent

出想法,也找问题

Generator 想因子,Reviewer 找问题,Synthesizer 综合大家的意见。

按规则运行的程序

算结果,留记录

compute 算因子,analyze 看指标,store 存结果,report 做报告。

ResearchController

检查齐不齐,再往下交

检查是不是这项任务、是不是这一版、资料能不能用、预算够不够。

FactorSpec按统一标准计算两份独立审查PoolDecision
公式一改,就得重新检验。旧公式通过了,不代表新公式也通过了。
互动演示 · 教学示意

少一个人检查,或者因子改了,还能往下走吗?

因子研究 · 讲解

读报告时,先分清这四件事

候选

我想研究什么

FactorSpec:公式是什么、参数怎么设、代码在哪。

评估

实际测到了什么

EvaluationReport:按什么标准算,算出了什么,结果在哪。

审查

结果为什么值得怀疑

ReviewReport:思路靠不靠谱,代码有没有错,有没有偷看未来。

决定

下一步要做什么

PoolDecision / 人工批准:继续找、再检查、定稿或淘汰。

“这个因子不错”只是一句意见。要看它是哪一版、怎么算的、结果存在哪里。
一起想一想 · 换个例子

想因子的 Agent,也能检查自己吗?

一个 Agent 很擅长想因子,能不能让它顺便检查自己的结果?什么情况下值得再安排一个 Agent 专门检查?

先自己想 45 秒:说说你的判断,再举一个值得分工的情况。

查看答案与理由

可以先让它自查,但它可能沿着自己的思路检查,漏掉一开始就没想到的问题。任务复杂、试错代价高,或需要另一种专长时,值得再请一位专门挑问题。任务简单、检查规则清楚时,自查加程序检查可能就够了。

哪些数据能用,哪些要留到最后

留一份没用来调参的数据,最后再考一次

先找因子写公式、改代码、挑想法
这时可以反复试
删跨界
样本
换一段数据试试看看换段时间还行不行
可以据此修改,但要记下来;这段数据就不再是最后的考试
按需留
间隔
最后考试(holdout)先定好公式、参数和方向
再用留好的数据考一次
拿它改过,就不算最后考试

如果 Agent 根据这段数据的结果挑因子、改参数,就不能再把它当成没用过的考卷。

分界线附近也要检查

比如预测未来 5 天,分界线前的样本也可能用到线后的价格。要删掉这些跨界训练样本,必要时再留一段空档。

最后的考卷先收好

找因子、改参数、讨论好坏时,都不要把最后这份数据和结果交给 Agent。

别这样做:看了最后的成绩又改参数,再拿同一份考卷说“这次是全新测试”。
互动演示 · 教学示意

这份数据,什么时候就不算“没用过”了?

从哪里开始想

好例子可以参考,失败的尝试也别丢

种子因子只是参考例子

  • 让 Agent 有个起点,并知道这个想法从哪来
  • 给它什么数据和例子,会影响它接下来想什么
  • 过去 IC 高,不代表以后也有效
已有的例子相关的新想法挑几个来试

失败能帮你少走弯路

  • 记下哪些想法试过了、没奏效
  • 记下缺什么数据、哪里可能偷看未来、代码错在哪
  • 别换个写法,又把同一个失败想法试一遍
失败记录给需要的 Agent 看避免重复
只把允许使用的成功和失败记录交给对应 Agent。聊天里说“有效”,不等于真的算过、查过。
筛选与状态

“做到哪一步”和“因子好不好”,是两回事

先把任务说清楚

研究什么、能用哪些资料、谁交什么、最多花多少。

把因子跑一遍

检查代码和数据,按约定算指标,把结果存下来。

两位检查,再和已有因子比

收齐两份检查报告,再给出留不留的意见。

proposed候选被提出
evaluated已经算出结果
review_pending等待独立审查
freeze_ready可以请人批准定稿
frozen / rejected冻结或拒绝
进度到了,不代表因子就能用:freeze_ready 不等于通过最后考试;frozen 也不等于可以直接交易。
项目边界

skills.factor_mining 负责安排整个研究流程

输入ResearchBrief / FactorSpec

记录版本,每次研究的文件分开存

编排skills.factor_mining

谁来做、怎么交接、花多少、何时请人批准

输出结果记录与下一步决定

做报告、定稿、准备最后测试

负责什么不负责什么
compute指标、标签与通用 Factor 执行策略专属公式与研究治理
analyze先检查,再算指标,和已有因子比较Agent runtime
store行情数据与研究记录决定因子是否通过
report用保存的计算结果和记录做报告批准候选
strategies/策略专属因子、规则、workflowskills/ 反向导入
ResearchController.handle(CommandRequest) 统一接收流程指令、更新进度。它安排工具干活,不自己算 IC 或跑回测。
一起想一想 · 换个角度

没找到合格因子,这次工作就白做了吗?

一个 Agent 没找到合格因子,这次工作就白做了吗?它应该留下什么,才能让其他 Agent 少走弯路?

先自己想 45 秒:说说你的判断,再列出至少两项该留下的信息。

查看答案与理由

不一定白做。它应该记下试了什么想法、用了哪版公式和数据、怎么算的、结果如何,以及为什么没通过,并留下代码和结果的位置。其他 Agent 才能看懂哪些路试过了,少做重复尝试。只写一句“没效果”不够,也不能凭一次失败就说这个方向永远没用。

课后练习

课后作业

作业一 · 理论思考问:为什么需要多个 agents 去挖掘因子,相比单 agent 有什么好处?
作业二 · 实操练习让 Factor Mining 完成一次真实因子挖掘

挖掘并筛选出 5 个 同时满足以下条件的因子。

因子数量5

保留 5 个通过筛选的因子

有效性|IC| > 0.03

IC 的绝对值大于 0.03

稳定性 · IR 指 ICIRIR > 0.08

ICIR 大于 0.08,不额外年化

提交结果:每个因子的名称、公式或代码引用、方向、IC、IR,以及对应的评估证据。