2012 年 8 月 1 日,Knight 资本集团的高频自动交易程序 SMARS 发生了严重错误。Knight 原本是为客户处理 212 手小额股票交易,但 SMARS 却在 45 分钟内完成了 4 百多万次交易,卖出买进了 154 家企业的 3.97 亿股股票。这起事件导致 Knight 损失4. 6 亿美元。
美国证券交易委员会上周公布了这起事件的技术细节(PDF):为了准备纽约证交所 8 月 1 日启动的“Retail Liquidity Program(RLP)”,Knight 修改了它的订单处理系统,为 SMARS 开发和部署新的代码。SMARS 的核心功能是接收父订单,根据可用流动资金向外部交易中心发送子订单。新的 RLR 代码计划替换一些长期未使用的代码,这些代码原先被一个早在 2003 年停用的 Power Peg 功能所使用。Power Peg 被用于执行子订单。
Knight 在 2005 年移除了它的累积计量函数。2012 年 7 月 27 日,Knight 开始部署新代码,但程序员没有将代码拷贝到 8 台 SMARS 服务器中的一台,也没人意识到 Power Peg 仍然留在系统中。8 月 1 日,参与 RLP 计划的客户通过交易员向 Knight 发出交易订单,父订单在 SMARS 中激活了 Power Peg 代码,于是休眠了 8 年的 Power Peg 开始向交易中心发送子订单,由于累积计量函数已经移除,Power Peg 不停的重复下单。