我将详细解析如何构建那些能自主运行整个量化交易系统的循环。
直接进入正题。
收藏本文
- 我是 Roan,一名专注于系统设计、高频交易执行和量化交易系统的后端开发者。我的工作重点是研究预测市场在负载下的实际表现。如有任何建议、想法、合作或合作意向,欢迎私信联系。
从今天起,我要开始做一件事。
如果你正在搭建量化系统,或者即将开始,甚至只是在考虑这件事,请私信告诉我你在做什么,或者在这篇文章下直接回复,我会联系你(哪怕只是给我看你当前架构的截图也行)。
我会亲自审阅前 20 个方案,向你展示你当前的系统与真正能产生 Alpha 的系统之间的差距。
大多数量化交易者仍然在直接向 Claude 提问。他们输入文字。等待。阅读输出。再输入文字。
全球最聪明的构建者已经不再这么做了。
他们写循环。循环自动向 Claude 提问。循环验证输出。循环决定下一步做什么。循环在你合上笔记本后继续运行。
两周前,Anthropic 的 Claude Code 负责人 Boris Cherny 明确说过。"我不再直接向 Claude 提问。我写循环,循环去问 Claude,并自行决定该做什么。我的工作就是写循环。" 这句话重新定义了地球上每个严肃 AI 工程师对构建工作的理解。而且它完美地适用于量化交易。
大多数零售量化交易者读到这句话会说这跟自己无关,因为他们规模太小。他们错了。资本越小,这越重要。一个自运行的循环是独立构建者唯一能缩小与拥有 100 个博士的基金之间差距的方式。
因为量化交易本身就是一个循环。拉取数据。生成信号。回测。执行。监控风险。重复。
华尔街的每个基金都在运行这个循环。Renaissance 从 1988 年就开始运行了。Citadel 有工程团队监控每个阶段。Two Sigma、Jane Street 都是如此。
唯一的区别是,他们需要成百上千的人坐在循环里。而你不需要。
我已经为自己构建了这个循环。它按计划拉取市场数据。运行 Alpha 研究。通过独立的 Agent 验证每个信号。只执行通过验证的信号。把每次学到的教训写回记忆。
这篇文章是我关于循环工程以及如何将其接入完整自主交易系统所学到的一切。
读完这篇文章,你将了解:
——直接向 Agent 提问与工程化循环之间的确切区别。
——用于生产环境的每个工作循环的六个组成部分。
——如何将这六个部分整合成一个从零开始自我改进的量化交易系统。
我们开始吧。
第一部分:提问与循环工程的区别
过去两年,与 AI 协作的模式是这样的。
你输入一个提示。你阅读返回的结果。根据看到的内容,你再输入下一个提示。
你就是循环本身。
Agent 只是一个工具。你全程握着它。每一步都是你坐在键盘前决定下一步做什么。
循环工程终结了这种模式。
你不再是循环内部的一部分。你成了设计循环的架构师。
循环是一个递归目标。你定义目标。Agent 朝目标迭代。循环持续运行,直到满足真正的停止条件。
Agent 在每次运行之间会遗忘。循环不会。
这个简单的事实就是整个架构的核心。
这就是 Boris 所说的"我的工作就是写循环"的含义。他不再逐个输入指令。他构建了系统,由系统为他发送指令、读取结果并决定下一步做什么。
在编程领域,这改变了软件交付的方式。
在交易领域,这改变了一切。
因为从来没有哪个量化交易者是通过一次提问就赚到钱的。优势来自于反复运行同一个循环成千上万次,每次迭代进步1%,并且永不休息。
这正是循环能做到的。
如果你还在每次交易都手动向 Claude 提问,那你正在做 Boris 两年前就不再做的事。杠杆点已经上移了一层。你不再是写更好的提示。你是在写能生成提示的系统。

提问与循环工程的区别
第二部分:每个工作循环的六个组成部分
一个工作循环由六个部分组成。缺少一个,循环就会悄悄失效。
1. 自动化机制。
这是心跳。一个定时任务、一个 webhook、一个 /loop 命令,或者 Claude Code 内部一个无需你输入就能触发的钩子。
有两种值得了解的形式。/loop 无论状态如何都按节奏重新运行。/goal 会持续运行,直到你编写的可验证条件真正满足,由另一个小型模型评估工作是否完成。
在交易中,/loop 是你每分钟拉取数据的功能。/goal 是"持续迭代这个信号,直到回测夏普比率大于 1.5"。
2. 技能。
技能是一本操作手册,Agent 会阅读它,而不是每次会话都从头开始被教导。
它保存在一个 SKILL.md 文件中。文件中包含你的惯例、你的规则、"我们不这么做因为那次事故"。
没有技能,每次循环运行都从零开始。有了技能,意图会累积。
3. 状态文件。
一个 Markdown 文件。通常命名为 STATE.md 或 PROGRESS.md。
它在运行之间持续存在。Agent 会遗忘。文件不会。
Agent 在每次运行开始时读取它。运行结束时将结果写回去。
这听起来太简单了,似乎无关紧要。但它实际上是每个工作循环的脊柱。
4. 验证器。
写代码的 Agent 是判断代码是否正确的最差人选。
将此应用于交易。生成信号的 Agent 是判断信号是真实 Alpha 还是噪音的最差人选。
你需要一个独立的 Agent,拥有不同的指令,最好是不同的模型,其唯一工作就是验证成果。
这就是 maker checker 模式。华尔街的每个自营交易部门内部都是这样组织的。在 Jane Street,提出交易的人不批准交易。在 Citadel,构建模型的人不验证模型。
5. 工作树。
一旦有多个 Agent 针对同一文件运行,它们就会发生冲突。
Git 工作树为每个 Agent 提供独立的隔离工作目录,指向各自的分支。
在交易中,这让你可以并行运行信号研究、回测和风险监控,而不会互相干扰。
6. 连接器。
一个只能读取文件的循环是一个很小的循环。
基于模型上下文协议构建的连接器让循环能够访问券商 API、查询数据库、发布到 Slack、向交易所发送订单。
这就是建议交易的循环与实际下单的循环之间的区别。
这六个部分是通用的。它们出现在 Claude Code 中。出现在 Codex 中。出现在地球上每个工作中的 Agent 系统中。
现在让我来展示如何将它们组合成一个完整的交易系统。
第三部分:如何构建一个自我改进的量化交易循环
量化交易循环有五个阶段。每个阶段都是一个独立的子循环,有自己的技能、自己的状态文件和自己的验证器。
阶段一:数据摄入。
一个自动化机制根据资产类别每分钟、每小时或每天触发。
1@loop(interval="1h")2def ingest_data():3 data = fetch_market_data(symbols=universe, lookback="30d")4 state.write("latest_data.parquet", data)
数据进入一个共享的状态文件,供下一阶段读取。
阶段二:信号生成。
这是 Alpha 研究发生的地方。
1@loop(trigger="data_updated")2def generate_signal():3 data = state.read("latest_data.parquet")4 signal = claude.run_skill("alpha_research", data)5 state.write("pending_signal.json", signal)
信号生成 Agent 读取一个包含 Alpha 研究规则的 SKILL.md 文件。
1# alpha_research_skill.md23## 目标4使用过去 30 天的价格和成交量数据进行线性回归来生成信号。56## 规则7- 最近 5 次回测中至少 3 次夏普比率高于 1.58- 每个信号的仓位规模不超过资本的 2%9- 跳过 FOMC 公告日的信号10- 跳过财报发布前 48 小时的信号1112## 经验教训13- 2026-02-14: 在财报周亏损 4.2%。14 新规则:跳过财报发布前 48 小时内的任何信号。15- 2026-03-08: 行业风险暴露导致 6% 回撤。16 新规则:行业风险暴露上限设为 30%。17- 2026-04-22: 动量信号在 FOMC 日爆仓。18 新规则:在 FOMC 日取消所有动量信号。
技能会随着时间的推移而增长。每次亏损都会写入一条新教训。每条教训都成为下一次运行的新规则。
这就是系统自我改进的方式。
阶段三:验证。
信号被发送给一个完全独立的 Agent。不同模型。不同指令。对原始信号的推理过程完全不可见。
1@checker2def verify_signal(signal):3 result = claude.invoke(4 skill="backtest_verification_skill.md",5 signal=signal,6 rules=[7 "夏普比率高于 1.5",8 "最大回撤低于 10%",9 "Newey-West t 统计量高于 2.0",10 "样本外期间至少 2 年"11 ]12 )13 return result.verdict
如果验证失败,信号被丢弃。如果通过,则进入执行阶段。
验证器永远不会看到制造者推理的内容。这种分离就是整个优势所在。
你还可以为检查器使用比制造者更强的模型。Claude Opus 用于验证,Claude Sonnet 用于生成。不同的模型架构能捕捉到不同类型的错误。这与机器学习中集成方法使用的逻辑相同。

制造者 - 检查器分离
阶段四:执行。
只有经过验证的信号才能到达这个阶段。
1@auto_mode2def execute(signal):3 if verify_signal(signal):4 broker.send_orders(signal, max_position=0.02)5 state.write("active_trades", signal)
MCP 连接器处理券商 API。循环从不请求许可。自动模式让它无需人工干预即可运行。
阶段五:风险监控。
一直在并行工作树中运行。
1@loop(interval="1m")2def monitor_risk():3 positions = broker.get_positions()4 if drawdown(positions) > 0.05:5 broker.close_all()6 state.append("STATE.md", "回撤触发。所有仓位已平仓。")
这是终止开关。它强制执行规则,没有商量余地。
这五个子循环共同构成一个自运行系统。
数据流入。信号生成。信号验证。信号执行。风险监控。教训写回记忆。
然后重新开始。

循环如何累积
我设计过一次。从那以后我再也没有手动提示过这些步骤中的任何一个。
这就是循环工程。这就是 Boris 说"我的工作就是写循环"的意思。
但有一个警告。没有真正停止条件的循环会悄悄失效。Agent 发出完成信号,以为工作完成了一半。循环退出。糟糕的交易仍处于开放状态。
你的停止条件必须能被 Agent 自身声明之外的东西检查。"过去 30 笔交易夏普率高于 1.5。""回撤低于 5%。""测试套件通过。"永远不要"Agent 说它完成了"。
在我的博弈论文章中,我解释了为什么每笔交易都是不完全信息多人博弈中的战略行动。如果你错过了,你接下来应该读读这篇文章:
https://x.com/RohOnChain/status/2066178991892119820
循环能让你永远坐在那张赌桌旁,而不会精疲力竭。
总结
量化交易本身就是一个循环。华尔街的每个基金都在运行它。他们只是需要成百上千的人坐在里面。
循环工程移除了人类。
每个工作循环由六个部分组成。自动化机制提供心跳。技能保存项目知识。状态文件保存记忆。验证器评估输出。工作树隔离并行工作。连接器让循环在现实世界中拥有"手"。
将它们围绕五个阶段的交易周期连接起来,你就拥有了一个自我改进的系统,它自己就能运行 Alpha 研究、验证信号、执行交易并监控风险。
每次循环,系统都会变得更聪明。每次亏损都写入一条新教训。每条教训都成为一条新规则。一百笔交易后,技能文件已经是一份活的文档。一千笔交易后,它比任何单个人类能记住的知识都更接近机构级别的知识。
最先构建这个系统的基金将在未来十年里实现复利增长。而那些还在手动提示的基金将被抛在后面。
所以,请沉思这个问题。
如果循环工程是提示技术之上的下一个抽象层,而量化交易是世界上最关键的循环,那么,你是那个还在每次交易都手动输入提示的人,还是设计了循环、在你睡觉时为你交易的那个架构师?
没有错误的答案,但答案本身很能说明问题。





