:闪电崩盘 Flash Crash——当自动化系统互相放大执行风险)
这是历史中的执行控制系列的第十四篇。第一篇历史中的执行控制一诺曼底登陆 D-Day 的天气窗口——没有正确的执行窗口就不执行。第二篇历史中的执行控制二切尔诺贝利——不要让错误穿过所有边界。第三篇历史中的执行控制三阿波罗 13——失败不是终点边界才是系统韧性。第四篇历史中的执行控制四图灵与 Bletchley Park——不是破解密码而是重构决策优势。第五篇历史中的执行控制五珍珠港——信号必须及时改变执行状态。第六篇历史中的执行控制六挑战者号 Challenger——工程边界不能被执行压力压过。第七篇历史中的执行控制七Therac-25——软件不能替代所有硬件安全边界。第八篇历史中的执行控制八火星气候轨道器——接口通过不代表语义一致。第九篇历史中的执行控制九阿丽亚娜 5 号——复用成功代码不代表新场景依然安全。第十篇历史中的执行控制十三哩岛——信号很多不代表系统形成了正确的状态判断。第十一篇历史中的执行控制十一冷战误报 Petrov——告警不等于行动。第十二篇历史中的执行控制十二核潜艇危机 Arkhipov——单点权力不能决定灾难性执行。第十三篇历史中的执行控制十三Knight Capital——当错误获得机器速度事后审计永远追不上现实。上一篇讲的是单个自动化系统会以机器速度放大错误。这一篇更进一步当许多各自正确的自动化系统彼此连接它们会互相放大把整个市场推入短暂而剧烈的失控——没有坏人却几乎所有人一起造成了系统性事故。摘要2010 年 5 月 6 日下午美国股市经历了历史上最著名的一次异常交易事件。短短几十分钟内道琼斯指数暴跌近 1000 点大量股票价格剧烈波动——有的瞬间接近归零有的异常飙升——随后市场又迅速恢复。后来 SEC 与 CFTC 的联合调查认为这并不是一次单点故障而是一系列自动化交易系统、市场流动性变化和高频交易行为相互作用后产生的连锁反应。Flash Crash 没有一个单独的坏人没有哪个程序故意攻击市场没有哪个系统想制造崩盘几乎所有参与者都在按自己的规则运行——但结果却是整个市场进入了短暂而剧烈的失控。这就是 Flash Crash 给 Havenlon 的第十四课局部正确不代表整体安全自动化系统最大的风险往往来自多个正确系统之间的相互放大。一、先把历史讲准确2010 年 5 月 6 日约下午 2 点 32 分美东时间在大约 36 分钟里美国金融市场经历了历史上最动荡的时段之一。道指一度重挫近 1000 点约 9%约 1 万亿美元市值在极短时间内蒸发随后又在几十分钟内收复了大部分跌幅。混乱中一些股票因真实买盘枯竭成交价直接打到了交易所里的占位报价stub quote一种远离市价、仅为满足挂单义务而存在的名义报价上——于是出现了某些股票成交在 1 美分、另一些飙到 10 万美元的荒诞画面事后约有两万笔交易被判定为明显错误而被撤销。SEC 与 CFTC 在 2010 年 9 月发布的联合报告《Findings Regarding the Market Events of May 6, 2010》给出了第一份详细复盘。报告指出当天本就是一个动荡的交易日欧洲主权债务危机的负面情绪笼罩市场在波动加剧、流动性变薄的背景下一个大型基本面投资者外界普遍认为是基金公司 Waddell Reed为对冲持仓启动了一个卖出程序要在市场里抛售7.5 万张 E-Mini 标普 500 期货合约价值约 41 亿美元。关键在于执行这笔卖单的算法被设定为按占当时成交量 9%的比例持续抛售既不看价格、也不设时间限制。于是随着波动放大、成交量上升算法反而喂出更多卖单——一个反馈回路就此形成。真正把局面推向崩盘的是自动化系统之间的相互作用。高频做市商起初接下了这些期货卖盘随即通过抛售相应的现货股票来对冲风险当它们触及各自的库存上限便从接盘转为甩卖并在彼此之间像烫手山芋一样反复倒手合约、制造出巨大的成交量——而这份被吹大的成交量又反过来让那个按成交量比例执行的卖出算法抛得更快。买盘迅速被耗尽流动性蒸发价格坠向占位报价。这里必须保持严谨Flash Crash 的确切成因至今仍有争议。联合报告发布后 24 小时内芝加哥商品交易所CME就罕见地发新闻稿反驳单一订单触发的说法数据公司 Nanex 也质疑称那个卖出算法在最陡的下跌段其实放慢了抛售。2015 年伦敦交易员 Navinder Sarao 因涉嫌幌骗spoofing大量挂出虚假卖单再撤销以制造压力假象被捕、2016 年认罪但许多专家怀疑单个交易员能否造成整场崩盘联合报告的机制解释也并不依赖他的存在。换句话说——这个故事最扎实的结论恰恰是找不到唯一元凶。值得一提的是事故后监管的应对本质上就是给市场装上执行边界单只股票熔断机制、后来的涨跌停限制Limit Up-Limit Down以及对占位报价的禁止。二、真正危险的不是单个系统而是系统之间很多事故都能找到一个明显的故障服务器坏了、软件有 Bug、配置错误、硬件失效。但 Flash Crash 最大的特点就是几乎找不到唯一元凶。调查认为大规模卖单、流动性下降与高频交易之间形成了快速循环而不是某一个系统单独造成了整个事故。每一个系统都在做自己的事卖方算法继续卖做市商按风险减少报价高频交易按价格继续成交交易所继续撮合风控继续响应——没有哪个模块觉得自己出了问题但整个系统已经开始失控。这就是复杂自动化系统最危险的一种状态没有人犯大错所有人一起犯了系统性的错。三、局部最优会变成整体最坏自动化系统通常都在优化自己的目标交易算法追求成交风控追求降低风险做市商追求保护库存流动性算法追求减少损失。每个目标本身都没错问题在于——没有任何一个系统对整个市场负责。Flash Crash 里最经典的一幕就是价格越跌风险越高风险越高报价越少流动性越少价格跌得越快于是更多系统继续降低风险……整个市场进入了一种正反馈。没有人下令市场崩盘是市场自己把自己推向了崩盘。这和雪崩很像第一块雪没有问题第二块、第三块也没有问题真正的问题是它们互相推动。四、自动化最大的敌人是反馈回路复杂系统里最危险的词不是 Bug而是反馈回路Feedback Loop一个系统的输出成为另一个系统的输入第二个系统的输出又成为第三个系统的输入最后绕回来影响第一个系统形成闭环。Flash Crash 就是典型价格下降 → 算法卖出 → 流动性下降 → 价格继续下降 → 更多算法卖出 → 更多流动性消失 → 继续下跌整个系统越转越快、越转越猛、越来越难停下来。今天的 AI Agent 系统正在进入同样的阶段一个 Agent 的输出进入另一个 Agent第二个 Agent 调用工具工具触发第三个 Agent第三个 Agent 修改环境环境变化又重新影响第一个 Agent。如果没有边界整个系统会不断自我放大。五、每个 Agent都可能是别人环境的一部分Flash Crash 最重要的启发之一是系统从来不是独立存在的。你以为自己只是改了一点配置、发了一个订单、调整了一点策略、更新了一点权限——但这些动作都会成为别人系统里的输入。今天也一样Agent A 更新了数据库Agent B 看到数据库变化Agent C 收到消息Agent D 自动部署Agent E 修改权限……没有任何一个 Agent 想扩大事故但整个系统已经开始连锁反应。所以每个 Agent 都必须假设一件事自己的输出会成为别人的输入。六、速度越快反馈越强没有旁观者Flash Crash 为什么只用了几十分钟因为参与者几乎全是机器——没有犹豫、没有疲劳、没有讨论、没有等待全部以最快速度继续于是反馈越来越强。今天的 AI Agent 比当年的交易系统更快一个 Prompt、几十个工具调用、几百个 API、几千次数据修改可能在几秒内完成。这意味着未来最大的风险不是 AI 做错而是 AI 一起做错。Flash Crash 里还有一个耐人寻味的现象很多系统开始退出市场——它们判断风险太高要保护自己于是撤单离场但结果是市场流动性进一步下降整个系统更加危险。这说明在一个彼此连接的系统里保护自己有时也会伤害整体。每一个 Agent、每一个 SaaS、每一个微服务、每一个安全系统都可能为了自己的局部目标让整个系统更加脆弱——这就是局部理性、整体非理性在自动化网络里没有真正的旁观者。七、为什么日志解释不了 Flash Crash需要执行传播图Flash Crash 之后所有日志都在每一条订单、每一次成交、每一个 API 调用全部有记录。但日志能告诉你发生了什么却很难告诉你为什么所有系统会一起变成这样。因为日志记录的是事件而这场事故真正危险的是关系——谁影响了谁、谁放大了谁、谁和谁形成了闭环。这对 Havenlon 的证据观是一个直接的挑战Evidence 不能只是日志。它还应该能够重建整条执行的传播路径。传统系统只关心这个命令执行了没有而未来的系统必须关心这个命令传播到了哪里——影响了几个 Agent、几个 SaaS、几台设备、几个组织、几层执行。真正危险的不是执行一次而是执行传播。所以 Havenlon 未来真正需要记录的也许不只是执行日志而是一张执行传播图Execution Propagation Graph。八、执行传播比执行本身更重要AI 的自动化社会过去软件更多是工具今天软件开始互相交流——Agent 调 AgentWorkflow 调 WorkflowSaaS 调 SaaS机器人协调机器人。未来真正需要保护的不是某一个 AI而是一个正在形成的自动化社会AI Society。Flash Crash 其实就是自动化社会的第一次集体踩踏没有坏人、没有攻击、没有病毒只有大量自动系统互相影响最后一起冲向了错误的方向。设想未来这样一条链Agent A 说帮我修一下服务器于是 Agent B 改配置、Agent C 自动扩容、Agent D 重新部署、Agent E 同步权限、Agent F 触发重训练、Agent G 更新策略——没有任何一步有 Bug但整体已经完全偏离。所以未来最大的安全问题不是某个 Agent 有没有权限而是Agent 网络、Agent 社会、Agent 之间的反馈。九、Havenlon 的答案在传播过程中收紧边界Flash Crash 最大的问题不是第一笔交易而是后面的几百万笔真正应该限制的不是第一次执行而是错误的传播。这也正是监管事后给市场装上熔断与涨跌停限制的逻辑——当价格在极短时间里移动得过于剧烈就让交易暂停或减速用一层强制边界打断正反馈。Havenlon 要控制的也正是这一层执行的速度、频率、传播、范围、半径、深度。一个 Intent 不能无限传播一个 Agent 不能无限调用一个 SaaS 不能无限同步一个错误不能无限复制。真正的执行边界应该随着传播不断收紧而不是一直放大。换句话说当一个动作开始沿着自动化网络快速扩散、影响面急剧扩大、传播路径变得无法解释时系统正确的反应不是继续放行而是像熔断一样——先收缩、先减速、先要求重新确认把错误关在可恢复的范围之内。十、从十四篇看主线执行控制的第十四个侧面D-Day没有正确窗口不执行。切尔诺贝利不要让错误穿过所有边界。Apollo 13失败不是终点边界才是系统韧性。Bletchley Park不是破解密码而是重构决策优势。珍珠港信号必须及时改变执行状态。挑战者号工程边界不能被执行压力压过。Therac-25软件不能替代所有硬件安全边界。Mars Climate Orbiter接口通过不代表语义一致。Ariane 5复用成功代码不代表新场景依然安全。Three Mile Island信号很多不代表形成了正确的状态判断。Stanislav Petrov告警不等于行动机器判断不能直接获得不可逆执行权。Arkhipov单点权力不能决定灾难性执行。Knight Capital当错误获得机器速度事后审计永远追不上现实。Flash Crash局部正确不代表整体安全自动化系统之间也会互相放大错误。这十四个故事共同指向一个核心判断自动化越强执行边界就越不能只存在于单个系统或单次动作里——它必须管住错误在整个网络里传播的速度、范围与深度。结语Flash Crash 最可怕的地方不是某个程序出了 Bug而是——所有程序都认为自己是正常的。每一个系统都完成了自己的职责却没有任何一个系统为整条执行链负责。AI Agent 正在进入同样的阶段。未来最大的风险也许不是某个超级 AI而是几十万个普通 AI互相调用、互相影响、互相放大最后形成一个没有人真正理解的执行网络。在这样的网络里克制不会自己出现——机器不会因为结果看起来荒谬就停下来系统也不会天然理解这件事已经不该再传播下去。所以克制必须被设计限制必须被编码而边界必须能在传播过程中主动收紧。Havenlon 要控制的已经不只是Execution而是Execution Propagation执行传播。真正可靠的执行控制不是阻止每一个错误的发生而是让任何一个错误都不能在自动化网络里无限传播。Flash Crash 给 Havenlon 的第十四课是局部正确不代表整体安全。 当自动化系统开始彼此执行时真正需要控制的不再是单个动作而是错误传播的速度、范围与深度。参考资料CFTC SEC,Findings Regarding the Market Events of May 6, 2010联合报告2010 年 9 月 30 日Andrei Kirilenko 等,The Flash Crash: The Impact of High Frequency Trading on an Electronic Market关于成因争议CME 2010 年声明、Nanex 的质疑以及 Aldrich Laughlin,The Flash Crash: A New Deconstruction2016Navinder Sarao 案2015 年被捕、2016 年认罪、2020 年判决相关司法与新闻资料事故后市场结构改革单只股票熔断、Limit Up-Limit Down 机制与占位报价禁令