光大乌龙指:人错还是程序错?
欧阳良宜(北京大学汇丰商学院副教授,特许金融分析师)
《少林足球》中三师兄有一句台词听起来挺夸张,“我一秒钟几十万上下,会和你们去踢球?”如果星爷玩过程序化交易的话,台词可能会变成一秒钟“几十亿上下”。对于程序化交易来说,几十万实在是不够看的。这不,8月16日股指期货交割日,光大证券就用234亿的错单向投资者们做了一次程序化交易的免费科普。
光大做的程序化交易逻辑并不复杂。上证180ETF是市场上流动性较强的指数基金,其交易价格理论上应该接近180只成份股的加权平均价格。当部分股票价格波动导致ETF价格和成份股加权平均价格出现显著偏离时,套利机会便出现了。如果ETF价格超过成份股平均价,则我们可以买入上证180指数成份股,申购ETF并立刻将ETF抛售。两者的价差扣除交易成本之后就是套利利润。8月16日上午触发光大乌龙指的便是这种情况。
要做到套利,我们需要快速买入一篮子股票,并在市场行情变化前迅速抛售ETF。这事只能交给计算机程序去做。不然的话,交易机会在我们手忙脚乱输买入卖出价格和手数的当口便已经溜走。套利者的计算机通过交易所或经纪商提供的数据接口直接发出交易指令。光大证券234亿元的交易指令便是经由程序发出的。
在高频交易的世界里,交易者的比拼是以微秒级别计量的。曼哈顿哈德孙街电信机房周边的建筑物全部被清空了,用来装服务器,不是谷歌或Facebook的服务器,而是华尔街的服务器。原因无它,这里离交易主机的物理距离最近(以光纤长度计)。在华尔街的决斗中,拔枪的速度只能是几微秒。想象一下,你点击一次鼠标需要花的时间为50万微秒。
但是再牛的硬件也要需要软件配合。如果软件出错,越好的硬件带来的亏损越大。2012年8月1日,美国做市商骑士资本的程序出错导致公司在一天之内巨亏4.4亿美元。相比骑士资本日均超过200亿美元的成交额,这一亏损算是万幸了。这并非华尔街的程序化交易头一次出错。2010年5月6日,由于某家基金自动算法交易出错,道琼斯工业平均指数瞬间跌去了1000点。再往前推,1987年10月19日道琼斯指数莫名其妙地暴跌22.6%,史称“黑色星期一”。这么多年过去了,美国人还没搞清究竟是谁家的程序化交易出错引发了这次无妄之灾。
不管哪种交易,最核心的因素仍然是人,最容易犯错的也是人。这方面的例子举不胜举,最著名当属瑞穗乌龙指。2005年12月8日是日本J-COM公司上市的第一天。做市商瑞穗证券的一名交易员将“以61万日元卖出1股”的指令打成“以1日元卖出61万股”,直接将J-COM股价打成跌停。由于J-COM公司流通股数仅有1.45万股,瑞穗证券卖空的数量超过了40倍,被迫在市场上将这些空单补回,结果当然是将J-COM拉回涨停板。瑞穗证券为这一乌龙指付出的代价是400亿日元。这事在A股也发生过,只不过投资者没觉察而已。某基金试图下单买入1000万股某股票,但操盘手打成卖单,直接将该股票封在跌停。笔者在国际投行做奇异衍生品交易的学生也坦诚,一不小心将百万(M)打成十亿(B)的情况偶有出现,两个键的位置确实比较近。
光大的交易系统并非完全由程序自行下单的算法交易,而是由人判断交易机会,再由程序批量买入卖出股票实现,所以才被称为乌龙指。8月16日上午光大策略投资部交易员判断套利机会出现,便通过程序下达批量买入股票指令。交易员想重新下达指令,便向程序员请教“重下”功能如何使用。程序员演示时按下了“重下”按钮,下达的指令为补单买入24只股票。但由于程序引用函数错误,该指令被订单生成系统执行为买入24组ETF一篮子股票(每组当时约10亿元)。该交易员的授权交易额度仅为8000万元。照理说交易系统应该报警,但程序再次掉链子出Bug,没有拦住订单,而是将这些订单直接报送给订单执行系统。离奇的是,光大策略投资部不在公司风控系统的监控范围内,因此风控部门对策略投资部的乌龙毫无所知。
在11时05分08秒之后的2秒内,光大策略投资部的程序生成了26082笔市价委托订单,并报送给上交所主机。相比光大这两秒钟,三师兄那“几十万上下”太小儿科了。光大总额234亿元的订单瞬间将几十只蓝筹股拉成涨停。一时间市场各种谣言四起,最起码有8种不同的利多消息在流传。一些证券公司研究部门更是抛出了”牛市在即“的豪言,筹划在盘后开形势说明会。市场在这种欢乐气氛下继续上涨,当日上证指数最高时涨了超过3%。而事实上,11时07分的时候光大交易员在系统监控模块看到成交信息时都快疯了,赶紧撤单,实际成交了72.7亿元。
上交所也发现了交易异常,打电话给光大询问情况。这一消息被某媒体得知,以独家消息爆出光大乌龙指的说法。其他媒体打电话询问光大董秘时,这位被蒙在鼓里的大哥当时正忙着吃中午饭,义正辞严地驳斥了记者不专业的说法,顺带吹嘘了光大卓越的风控系统。而这时候光大证券内部正乱成一锅粥,开会讨论如何应对这一乌龙交易。
下午开盘时,光大卖出了18.9亿元ETF,并在股指期货市场上抛出了近7000张空单,从而将72.7亿元的多头头寸完全对冲掉。当时笔者粗略算了一下,光大这次乌龙交易如果按8月16日收盘价盯市,不但没亏钱,反而可能赚5000万元以上。倒霉的是那些不明就里的涨停敢死队。在光大乌龙指消息被证实后,上证指数从哪来回哪去,当天反而收跌了0.64%。高位接盘的散户亏损超过4%。
光大这次乌龙指可谓人错和程序错的集大成者,但主要是人错。程序连续两个致命的Bug导致了巨量买单的产生。但程序出错不可怕,可怕的是光大从未测试过“重下”这个功能便直接将之投入使用。在乌龙指出现之前,这一交易系统投入使用不到一个月。更为致命的是,光大证券居然容忍其策略交易部置身于风控系统之外。这一错误可以直追1995年倒闭的巴林银行。巴林银行风控系统的漏洞导致李森一人创造了14亿美元的亏损,直接将这家曾经叱咤风云的百年老店送上破产法庭。
应该为这次乌龙指事件负主要责任的应该是光大的高管,而非交易员。他们为策略投资部网开一面的风控安排可谓愚蠢,出事只是迟早。而董秘的信口开河则造成了“操纵市场”的事实。光大已经收到证监会5.23亿元的罚单,等待他们的还有散户投资者的诉讼。不怕神一样的敌人,就怕猪一样的队友,记住这句话。