增长案例库 Maxed 归档 AI自动化数据与实验

如何用图工程构建多因子 Alpha 模型

How to Use Graph Engineering to Build a Multi-Factor Alpha Model

中文译文 · 23k 字

一句话摘要

用图工程构建多因子 Alpha 交易模型

如何使用图工程(Graph Engineering)构建一个多因子 Alpha 模型 2026 年 7 月 23 日 · 20 分钟阅读 · 查看原文 ↗ Claude AI 金融 量化 我将一步步拆解,如何用图工程构建一个对冲基金级别的多因子 Alpha 模型。 我们直接开始。 > 收藏本文 —— > > 我是 Roan,一名后端开发者,专注于系统设计、类 HFT 执行以及量化交易系统。我的工作聚焦于预测市场在负载下究竟如何表现。关于任何建议、深度合作、合伙,欢迎私信。 我在上一篇文章里说过,我会亲自带前 20 名正在构建 AI 量化系统的朋友走一遍搭建流程,我是认真的。 已经有一些构建者正和我一起深入这个流程。这个名额依然开放。 如果你正在构建一个图工程系统,或准备开始,甚至只是有这个念头,请在这篇文章下面回复,或私信我你当前的搭建情况。我会亲自带你过一遍你的架构,并指出你现在所拥有的,与一个能自主捕猎 Alpha 的 swarm(智能体群)之间的差距。 如果我没有回复,说明你不在这前 20 名里。动作要快。 多因子投资,是华尔街每一家严肃对冲基金创造回报的方式。他们不交易单一想法。他们叠加因子。 这正是 AQR 所用的流程。正是 Two Sigma 所用的流程。正是 Bridgewater 所用的流程。而且这是它第一次能被一个独立构建者执行。 问题一直在于,构建这些需要一个研究团队。因子工程师。统计学家。组合构建专家。风险分析师。执行工程师。每个因子族你至少需要十个人,而没有任何独立量化玩家能组建这样的团队。 这就是为什么散户量化玩家死守单一策略,而对冲基金却能源源不断创造 Alpha。 直到现在。 内嵌帖子: 作者:Roan (@RohOnChain) 帖子 ID:2074134246784921977 来源:https://x.com/RohOnChain/status/2074134246784921977 回复对象:无 正文: > http://x.com/i/article/2073336502998994944 在我前两篇文章里,我讲解了循环工程(loop engineering),以及如何构建一个 24/7 捕猎 Alpha 的 AI 智能体群。 一旦你有了循环和智能体群,把它们黏合成一个可运行系统的这一层,就是图(graph)。 > 图工程就是设计这一层的实践。你定义节点。你定义边。图自行运转。 到本文结束时,你将不只是理解图工程。 你将拥有一个每 24 小时在你的笔记本上自动运行一次的自运行多因子 Alpha 模型。 第一部分:图工程究竟是什么 每一个用 AI 做量化的人,都处在同一条进阶路径上的某个位置。明确你现在在哪,就会让下一步该去哪变得一目了然。 — 「图工程究竟是什么」 > 阶段 1:提示词(Prompts)。你输入一条提示词。你等待。你阅读输出。你输入下一条。你就是那个循环。一旦你合上笔记本,什么都不会留存。 > 阶段 2:循环(Loops)。你写一个脚本,把提示词包起来并按计划触发。循环持有状态。它在你合上笔记本后依然存活。这就是我那篇循环工程文章所教的。一个智能体,一份工作,永远运行。 > 阶段 3:智能体群(Swarms)。你把循环扇出成许多拥有专门角色的智能体。一个生成信号。一个验证信号。一个负责执行。这就是那篇 AI 智能体群文章所教的。多个智能体并行,通过 Python 胶水代码手工协调。 > 阶段 4:图(Graphs)。你把协调结构一次性描述出来。节点就是智能体。边就是数据交接。图知道何时并行、何时等待、何时重试、何时升级。你再也不用碰胶水代码。 图工程就是设计这一协调结构的实践。 图不是脚本。这个区别比任何人告诉你的都更重要。 一个脚本,在某个智能体需要等待另一个智能体的那一刻就崩了。一个脚本,在状态必须跨周期持久化的那一刻就崩了。一个脚本,在你想让六个循环并行跑在不同模型上的那一刻就崩了。每一个尝试构建多智能体系统的散户量化玩家,都会撞上这三堵墙。 失败之墙把我击垮了。当我的盈利智能体因为要解析 500 份资产负债表而触发了速率限制被卡住时,整条流水线都死了。 第二天早上我回来,看到一个停掉的进程,没有信号,也完全不知道失败从哪里发源。调试意味着读一个堆栈追踪,然后猜是哪个智能体在这次崩溃的上游。 到了第二个月,我花在调试协调上的时间已经超过了花在研究上的时间。我几乎要把整个项目束之高阁。 这就是每一个多智能体量化玩家都会遇到的失败状态。这也是图之所以存在的原因。 > 图没有那些失败模式。并行是原生能力。状态是持久的。失败被限定在节点层面,而不是整条流水线。当一个节点崩溃时,图的其余部分继续运行,而你通过用平实的英语描述失败来修补那个坏掉的节点。 这就是图工程的承诺。现在的问题是:什么来运行这张图。 第二部分:运行这张图的工具 图是架构图。它们不会自己运行。它们需要一个运行时(runtime)。 运行时,正是大多数构建多智能体系统的人搞错的地方。 他们以为难的部分是设计图。不是。难的部分是找到能真正执行它的基础设施。 我花了几周时间尝试不同的运行时,才找到能端到端运行多因子图的那一个。 我用的这个叫 Slate。由 @wearerandomlabs 构建。在你的终端里运行。它能接上你现有的模型订阅,并把工作扇出到这些模型上。 对本文而言重要的是他们最近推出的一个能力,叫 Programs(程序)。一个 Program 是一张用 JavaScript 写的图,Slate 会为你持续运行它。 一条提示词运行一次就停了。一个 Program 会一直跑,直到任务完成。 你不是独自写这个 Program。你用平实的英语告诉 Slate 你想要什么。Slate 起草这张图。 然后 Slate 给你呈现一张图。你针对这张图提问。你改节点。你调整模型。只有当你满意时,你才让 Slate 保存并运行它。 如果它坏了,你就和 Slate 聊这次失败。Slate 修补这张图。 你可以在 http://randomlabs.ai/rr 找到 Slate。它现在已经可用。 在你亲手构建一张图之前,感受图工程最好的方式,就是运行 Slate 自带的两个示例 Program。 > 它们叫 /goal 和 /deepresearch。 /goal —— 跑到「可验证地完成」为止的图 在 Slate 里输入这个: /goal implement a Newey-West adjusted t-statistic function in Python and verify it matches the statsmodels implementation on ten random return series Slate 不是向一个模型发一条提示词。它拉起一张图。 > 一个节点写这个函数。 > > 另一个节点写验证测试。 > > 第三个节点运行两者。 > > 第四个节点给「输出是否匹配」打分。 如果它们不匹配,图就用这个具体的差异作为反馈回环。它会一直跑,直到一个独立的小型评分模型确认目标已完成。 这就是运行时的 maker-checker(制作者-检查者)模式。制作者永远不给制作者自己的工作打分。 /deepresearch —— 并行化研究的图 在 Slate 里试试这个: /deepresearch what does the latest academic research say about the Fama-French five factor model out of sample performance in emerging markets from 2015 to 2026 这里拉起的图与 /goal 不同。 它是一个并行的研究扇出。 Slate 一次派出多个工作智能体。每一个负责这个问题的一个不同角度。 一个读近期的论文。另一个查 arXiv q-fin。另一个从 Kenneth French 数据库拉数据。另一个交叉引用引文。 它们全部回报给一个中心协调器,由它综合这些发现。 /deepresearch 对这个构建重要的原因在于,它演示了你构建因子所需的那个精确模式。 七个因子智能体。每一个负责一个不同的因子。全部并行运行。全部回报给一个中心协调器。 那就是多因子图,只是减去量化特有的任务。 花 30 分钟,在你真正关心的问题上运行 /goal 和 /deepresearch。图工程的直觉就是这样产生的。 第三部分:多因子 Alpha 图 多因子投资把股票收益分解为系统性驱动因素加上一个残差项。基础版本是 1993 年发表的 Fama-French 三因子模型: R_i 是股票 i 的收益。R_f 是无风险利率。R_m 是市场收益。SMB 是规模溢价。HML 是价值溢价。 Alpha α 是模型无法解释的部分。那个残差,正是你要捕猎的东西。 Carhart 在 1997 年加入了动量。Fama 和 French 在 2015 年加入了盈利(RMW)和投资(CMA)。 现代对冲基金跑的是七因子栈。AQR、Two Sigma、Millennium、Bridgewater 都跑各自的变体。以下是 2026 年真正重要的七个因子。 因子 1:市场 Beta。 股票超额收益对市场超额收益的 60 个月滚动回归。 因子 2:规模(SMB)。 在风险调整的基础上,小盘跑赢大盘。 因子 3:价值(HML)。 高账面市值比在长期跑赢低账面市值比。 因子 4:动量(MOM)。 近 12 个月的赢家会在接下来 3 到 12 个月继续赢。 因子 5:盈利(RMW)。 稳健的经营者跑赢薄弱的经营者。 因子 6:投资(CMA)。 保守的资产增长跑赢激进的扩张。 因子 7:低波动。 低波动股票的经风险调整收益高于理论预测。 每一家基金都跑这套的某个版本。独立构建者做不到,因为它需要研究团队。 图工程解决了这一点。每个因子变成一个节点。 这是完整的图。总共十一个节点。 因子构建节点(并行运行) > 节点 1:市场 Beta 智能体。 > > 运行 60 个月滚动回归。为每只股票输出一个 beta。 > 节点 2:规模智能体。 > > 按市值排序。计算小盘-大盘价差。 > 节点 3:价值智能体。 > > 按账面市值比排序。计算高-低价差。 > 节点 4:动量智能体。 > > 计算 12 减 1 个月动量。从十分位价差构建 MOM。 > 节点 5:盈利智能体。 > > 计算毛盈利。构建 RMW。 > 节点 6:投资智能体。 > > 计算年度资产增长。构建 CMA。 > 节点 7:低波动智能体。 > > 计算过去 60 天已实现波动率。从十分位价差构建低波动。 协调节点(按顺序运行) > 节点 8:验证器。 > > 对每个因子跑 Newey-West 调整的 t 统计量。Bootstrap 重采样 10,000 次迭代。干掉任何样本内对样本外衰减超过 30% 的因子。 跑在一个更强的推理模型上。制作者永远不验证制作者自己的工作。 > 节点 9:状态审计器。 > > 用一个关于波动率和收益的隐马尔可夫模型(Hidden Markov Model),把 20 年历史切分成三个状态(regime)。干掉任何只在单一状态下有效的因子。 > 节点 10:组合构建器。 > > 用风险平价权重,把存活的因子组合成一个多空组合。强制行业、beta、美元中性。 > 节点 11:风险分解器。 > > 把组合对七个因子加上风格和宏观因子做回归。报告残差 Alpha 和 t 统计量。 只有当残差 Alpha 在因子分解后依然存活的信号,才是真正的新 Alpha。其余的一切,都是加了额外步骤重新包装的风格因子。 十一个节点。每一个负责一份工作。它们把自己的输出顺着图向下传递。 整个模型跑在一个每 24 小时触发一次的 Slate Program 上。 第四部分:如何一步步构建 这是精确的构建步骤。在你的终端里跟着做。 > 步骤 1:安装 Slate 打开你的终端并运行: npm i -g @randomlabs/slate Slate 是一个全局 npm 包。安装大约需要 30 秒。 用以下命令验证: slate --version > 步骤 2:创建你的项目目录 多因子研究需要自己的工作空间。状态文件、历史因子测试、组合快照全都放在这里。 mkdir ~/projects/multifactor-alpha cd ~/projects/multifactor-alpha 不要在同一文件夹里运行其他 Slate 项目。状态命名空间是按工作空间隔离的。 > 步骤 3:启动 Slate 输入: slate > 步骤 4:连接你的供应商 在 Slate 里输入: /providers 这会打开供应商配置界面。Random Labs 默认完成认证。你也可以直接连接 OpenAI Codex 和 GitHub Copilot。 用方向键导航到 Codex,然后按回车完成认证。你现有的订阅直接可用。 > 步骤 5:连接你的模型 在 Slate 里输入: /models 你会看到每一个已连接供应商提供的所有模型。Random Labs 托管了大约 90 个模型。 你需要两个模型层级。 一个快速层级,用于七个因子构建智能体。Claude Sonnet 就可以。 一个更强的推理层级,用于验证器、状态审计器和风险分解器。Claude Opus 就可以。 > 步骤 6:用 /goal 和 /deepresearch 热身 在你起草自己的 Program 之前,先花 30 分钟跑这两个自带的示例 Program。 这就是图工程从概念变成直觉的方式。 在 Slate 里试试这条 /goal 命令: /goal write a Python function that computes Fama-MacBeth cross sectional regression coefficients and verify it matches the empiricalfin package on 20 years of monthly return data 观察图如何扇出。观察评分模型如何检查书写模型的工作。观察第一次尝试失败时会发生什么。 然后试试这条 /deepresearch 命令: /deepresearch what does the academic literature say about the profitability factor RMW versus the quality factor as defined by MSCI and how do they differ empirically from 2015 to 2026 观察并行工作节点的扇出。观察协调器如何综合。 这两次运行,会给你在写自己的 Program 之前所需要的心智模型。 > 步骤 7:起草多因子 Program 这是最重要的一步。你用平实的英语描述这张图,Slate 会和你一起起草它。 把这段精确的提示词输入 Slate: draft me a program that runs seven multi-factor research agents in parallel: market beta, size, value, momentum, profitability, investment, and low-volatility. After all seven complete, run a validator, a regime auditor, a portfolio constructor, and a risk decomposer in sequence. Use Claude Sonnet for the seven factor agents and Claude Opus for validator, regime auditor, and risk decomposer. Run the whole pipeline every 24 hours. Use file system as memory. Set a budget of $30 per run. Enforce Newey-West t-stat above 2.5, bootstrap 10,000 iterations, and reject any factor with in-sample versus out-of-sample Sharpe degradation above 30 percent. Slate 不是直接开始写代码。它会仔细阅读并问澄清问题。 用哪个数据源。回测窗口是什么。股票池是什么。用什么状态分类器。是否使用可覆盖的默认值。 你用平实的英语回答。Slate 写 JavaScript。 > 步骤 8:审查图 一旦 Slate 起草好了 Program,它会渲染出这张图的示意图。 你不是靠读代码来理解将要运行什么。你是在看协调结构。 七个因子节点从协调器并行运行。一个同步点。四个协调节点按顺序运行。一个持久化步骤。一个 sleep 节点。一个回到顶部的回环。 在运行任何东西之前,先针对示意图向 Slate 提问: 为什么验证器跑在 Opus 上? 如果动量智能体超时了会发生什么? 每个周期之间会持久化什么状态? 是什么触发状态审计器拒绝一个因子? 如果任何回答让你意外,就让 Slate 修改这张图。 > 步骤 9:保存并运行 一旦示意图符合你的预期,告诉 Slate 把 Program 提交到一个文件。然后运行: slate run multifactor-alpha.js 你按下回车的那一刻,Slate 就拉起这张图。七个因子智能体并行触发。 特征工程并行运行。验证跑在更强的模型上。 第一次运行需要 15 到 25 分钟。之后每天的运行会更快,因为状态文件里已经存有历史。 > 步骤 10:设置预算 在 Slate 里输入: /budget $30/run 这会封顶每次运行的总开销。如果一次运行逼近上限,Slate 会在继续之前先升级处理。 > 步骤 11:出错时调试 真实的 Program 会出错。我的在头两周就坏了三次。 价值智能体被卡住了,因为它无法解读非美国的资产负债表。我告诉 Slate。Slate 修补了价值智能体,加入了一个货币归一化步骤。 动量智能体偶尔在动量不利的状态下返回零个存活信号。我告诉 Slate。Slate 加了一个回退方案,在这些状态下扩大动量的回看窗口。 组合构建器有时违反行业中性。我告诉 Slate。Slate 加了一个投影步骤,在写入组合前强制执行中性。 你不追堆栈追踪。你把问题描述给 Slate。Slate 修补那个节点。 第五部分:我实际运行它时发生了什么 这是我没想到的部分。 我用一段话向 Slate 描述了这张图。Slate 先核对了可用的模型标识符,激活了 models 技能,并为快速智能体选择了 claude-sonnet-4.6,为协调阶段选择了 claude-opus-4.5。 然后 Slate 一次性起草了整个 Program。不是粗略草稿。是完整的 JavaScript。十一个节点连在一起。并行因子构建。顺序验证。带时间戳运行目录的文件系统共享内存。预算分配。整件事。 Slate 不只是写完代码就消失。它带着三个它想让我在运行前确认的具体决策回来了。 决策 1:组合构建器的模型。我的起草提示词为验证器、状态审计器和风险分解器指定了 Opus,但我没有为组合构建器指定模型。Slate 默认把它设为 Opus,因为这个阶段是重型分析工作,但它也标注说,如果我想用 Sonnet,这是个可以翻转的选项。 决策 2:模型版本。Slate 使用了当前稳定的 Sonnet 和 Opus(4.6 和 4.5),并提出如果我愿意,可以升级到更新的版本。 决策 3:预算执行。这一点让我意外。Slate 明确告诉我,每次运行 $30 的上限是「建议性」的,而不是硬性切断开关。因为没有实时的成本计量原语,所以预算被执行为「一个声明的上限加上自行报告的、会被加总并标记的开销」。如果我想要运行中途硬性中止,Slate 提议为我显式设计它。 这第三个提示,正是我信任这个工具的原因。大多数智能体框架会假装预算已被执行。Slate 告诉了我它实际能提供哪一层执行。 我确认了全部三个默认值,把 Program 改名为 multifactor-research-pipeline,并告诉 Slate 提交它。 然后我按下了运行。 七个因子智能体立刻触发。每一个都在终端里出现,带着自己的子智能体 ID 和状态计时器。 Slate 用平实的英语确认了这次运行: > 「它正在后台以 multifactor-pipeline 的名称运行,先是七个因子智能体在 Sonnet 上并行,然后是 validator → regime → portfolio → risk 序列在 Opus 上,采用默认值(./research-memory、$30 预算、三个门、永久的 24 小时循环)。」 这一行就抓住了图为什么胜过脚本。 我没有写协调代码。我没有追堆栈追踪。我没有把 API 粘在一起。我用平实的英语描述了这张图,回答了三个设计问题,Slate 就把它构建出来了。 一切在启动时都可覆盖。间隔、预算、门阈值、模型、内存位置,以及一个 maxRuns 上限(如果你不想让图永远运行)。 这是 Slate 为我写的完整 Program。研究它,但不要逐字照抄。你的会根据你回答 Slate 澄清问题的方式略有不同。 第六部分:每 24 小时发生什么 在你所在时区的凌晨 3 点,这张图醒来。 七个因子智能体并行触发。每一个拉取最近 24 小时的价格和基本面数据。更新它的因子时间序列。交给验证器。 验证器跑 Newey-West t 检验。Bootstrap 10,000 个样本。干掉任何在样本外失败的因子。 仅这一步,就拒绝了大约 80% 在首次回测中看起来有希望的东西。 状态审计器接过存活的因子。用 HMM 切分历史。按状态重新计算 Sharpe。 一个只在单一状态下有效的因子不是 Alpha。它是那个状态的 beta,只是被打扮成了 Alpha。 组合构建器接过存活的因子。在强制执行中性约束的情况下构建多空组合。 风险分解器接过组合。对它做广泛的风格和宏观因子回归。 如果残差 Alpha 的 t 统计量高于 2.5,信号存活。如果不是,这一天被记录为无信号,图休眠到明天。 每天早上你醒来时都会收到一条 Slack 消息。要么你有一个可以交易的信号。要么你有记录在案的证据表明今天只是噪声。 两种结果都有用。两者都不需要你坐在键盘前。 这就是 2026 年一个自运行多因子 Alpha 模型的样子。 蓝图 如果你什么都记不住,就按顺序记住这七个动作。 1. 理解进阶路径。提示词变成了循环。循环变成了智能体群。智能体群变成了图。 2. 认识你的因子。市场、规模、价值、动量、盈利、投资、低波动。七个因子。每一个变成一个节点。 3. 设计十一个节点。七个因子智能体并行。四个协调智能体按顺序。在写任何一行代码之前先把图画出来。 4. 不同节点用不同模型。Sonnet 用于因子构建。Opus 用于验证和分解。制作者永远不验证制作者。 5. 强制执行硬规则。Newey-West t 统计量高于 2.5。Bootstrap 10,000 次迭代。跨三个 HMM 状态的状态稳健性。残差 Alpha t 统计量高于 2.5。 6. 用 /goal 和 /deepresearch 热身。图工程的直觉来自观察图,而不是阅读关于图的文章。 7. 让它复利。第一个月是找 bug。第二个月是精炼因子。到第三个月,你的图会产出你真正能交易的信号。 现在去构建它 今晚就装 Slate。启动它。在一个真实的量化问题上运行 /goal。在一个你好奇的因子上运行 /deepresearch。 然后用第六步的精确提示词起草你自己的 Program。审查示意图。运行它。设置 $30 预算。 到下周这个时候,你将拥有你的第一个自运行多因子图。 到下个月这个时候,你将拥有你的第一个能穿过全部十一个节点的可交易信号。 这就是这笔交易。一个周末的搭建,换来一个永不睡觉的复利研究系统。 现在去构建它。 如果你在构建的任何一步卡住了,在这里私信我。 你可以在 http://randomlabs.ai/rr 找到 Slate。 关注 @wearerandomlabs,如果你想看到他们发布的每一个能力。/goal 和 /deepresearch 是头两个 Program。它们不会是最后两个。 标签:# X # Claude # AI # 金融 # 量化 # 指南 # Sonnet 相关文章 循环工程:/loop 的傻瓜指南 TL;DR:任何人如何用循环把 Claude 生产力提升 10 倍——即使你完全不懂技术。 Claude AI 循环 金融

原文参考:https://maxed.wiki/posts/how-to-use-graph-engineering-to-build-a-multi-factor-alpha-model/ (Maxed.wiki,本页为站内中文整理)