技术风险,是指量化交易的信息系统存在缺陷或故障而导致的错误交易风险。量化交易的实现即需要计算机程序的支持,也需要网络技术的支持。一旦所依赖的信息系统中可能存在的缺陷,或因网络连接中断、交易所交易系统升级等导致持续输入模型的数据断档,使得模型无法运行,使交易信号无法向交易所交易系统传递导致交易指令无法执行或执行混乱,就会带来量化交易系统自身的技术风险。
据美国证监会报告,使用批量交易、高频交易、算法交易、跨市场交易等程序化交易模式,其执行风险后果非常严重。目前,美国市场因使用高速自动化算法交易每秒可发出1222笔订单。假设一个算法交易每笔订单平均交易量为322 股,平均交易价格为20美元,若该算法交易因发生故障而重复下单,2分钟就会发出12万笔价值7.2亿美元的订单,不仅给市场带来巨大冲击,而且可能造成严重后果。
案例
“骑士资本乌龙”事件——4.4亿美元瞬间蒸发
2012年8月1日(周三),在美国股市开盘1小时期间,纽交所(NYSE)的交易员感觉股票走势异常,部分股票的价格出现异常剧烈波动。当市场寻找原因之际,作为2011年纽交所和纳斯达克交易所零售股票交易业务中排名第一的做市商——骑士资本(Knight Capital)发表声明称,该公司的做市部门出现交易技术问题,影响了纽交所约150只股票。这次交易故障导致骑士资本税前亏损4.4亿美元,损失惨重,两天内公司股价暴跌75%,一度接近破产边缘。
事故的起因是当日纽交所对交易系统升级,启动了新交易系统。在收到通知后,骑士资本的开发部门更新了执行系统的相关代码,但在上线前并没有通过全面测试。当开盘后,做市系统出现致命逻辑混乱,诡异地进行了“高买低卖”的下单操作。这个反常的交易程序无法从交易所获取订单的确认信息,根本不知道已经发出有效订单,反而认为下单失败、没有成交,因此继续追加补单,结果同样的原因,补单也均“失败”,于是继续下单……这样,股价被推得越高,该程序就越有动力继续买进,再进一步推高股价……由此造成的连锁反应使实际发出的订单量呈几何数量上升。在全自动化下单交易后,部分股票的价格上涨了100%~200%,有些交易每笔亏损15~17美分,大部分交易持续5~26分钟,最长的交易持续了40分钟。值得庆幸的是,异常情况出现后不久即被该交易系统监控人员发现,但正常的管理操作却无法停止该交易程序,最后只能通过切断网络等物理方法才停止了交易。程序交易异常的直接后果,就是不正常的极大持仓,其持仓市值最高峰值达到70亿美元,经过一定的紧急处理,日终时总持仓量仍然达到46亿美元,并导致了4.4亿美元的损失。时隔一年,骑士资本的这一 “乌龙事件”最终于在同意接受监管层1200万美元罚款后落下帷幕。
此次事件对于量化交易者有非常宝贵的借鉴价值:
(1)必须相信,电脑也是会犯错的,需预先设计各种故障保护措施。
归根到底,交易程序的设计者是会犯错的,必须预先设想各种极端情况,并提供预防方案,包括在界面上停止交易、关闭交易程序与切断网络连接等。如果异常程序积累了大量仓位,应考虑其平仓方式。
(2)必须由专职的交易员来进行人工监控。
监控界面应该展示完整的交易信息和控制要素。交易员可根据实战经验,检查出当前交易是否存在异常情况。
在进行股票/ETF等权益类交易时,由于数据发布的频率和交易速度较慢,交易员至少每5~10分钟查看一次。当进行期货交易时,检查频率需要更高。
(3)交易程序必须与交易所交易设备升级时严格同步,并定期维护。
鉴于国内现状,IT部门应该与交易所、系统开发商紧密合作,以保持系统的完好性。
(4)交易程序必须监控价格和成交量的异常波动,并在极端情况时终止交易。
交易程序应该检查价格的当日波动性、涨跌幅度,相对于近期价格的变化率,以及市场交易量的变化、系统自身交易量的变化,以便精准控制。在骑士资本案例中,由于美股没有涨跌停板限制,当价格被买单推动上涨了1倍以上,且交易量极大时,交易程序应该识别出该情况,并及时报警。
(5)交易程序必须判断持仓,包括每个交易对象的仓位和整体仓位。
由于美股为T+0交易,做市商一般仅需维持很少的隔夜库存。出于对其程序的信心,骑士资本很有可能未在程序中判断整体或个股的仓位,从而在故障发生时积累了极大数量的仓位。因此,交易程序在下单前,应评估本次交易是否对个股/ETF或期货整体仓位有较大影响,以及是否出现突破限额的风险等。
(6)交易程序应该检查交易对象的关联性。交易程序应该检查大量交易对象之间的关联性,如是否多个对象的交易均有亏损、亏损数量及价格、交易量波动幅度等。
案例
光大证券乌龙指事件
2013年8月16日11点05分,上证综合指数在一分钟内飙涨,最高达到5.96%。多只权重股瞬间出现巨额买单,带动整个股指和其他股票的快速上涨,以致包括中国工商银行、中石化等多达59只权重股瞬间封涨停,随后持续回落(见下图)。直到下午2点,光大证券公告称策略投资部门自营业务在使用其独立的套利系统时出现问题。此次事件导致无数跟风追涨的机构及股民纷纷“躺枪”,蒙受巨大损失,称为“光大证券乌龙指事件”。
图 光大证券乌龙指事件对股票市场造成的巨大冲击
触发本次风险事故的原因是该公司购买的自动化套利交易系统有缺陷。该系统包含订单生成系统和订单执行系统两个部分。核查中发现,订单执行系统针对高频交易在市价委托时,对可用资金额度未能进行有效校验控制;而订单生成系统存在的缺陷,会导致特定情况下生成预期外的订单。
当天上午,该部门交易员判断沪深180指数ETF与该指数股票成分股之间出现套利机会,于是通过套利策略订单生成系统发出第一组180指数成分股的订单合计171笔委托,委托金额不超过200万元。后续又再发出两组订单。其中有24只股票未成交,交易员尝试使用系统中的“重下”(重新下单)功能对未成交的股票自动补单。该系统程序员在旁边指导操作了一番,没想到这个功能没有经过实盘验证。虽然系统显示补单买入24只股票被执行,但实际上程序系统把买入24只成分股,当成了买入24组180指数一篮子成分股,而非仅仅只是24只股票,从而导致在11时05分08秒之后的2秒内,瞬间重复生成26082笔预期外的市价委托订单。由于订单执行系统存在的缺陷,上述预期外的234亿元巨量市价申报买单被直接发送至交易所交易主机,迅速成交了72.7亿元(好在市场上挂出的卖单股票没有234亿元,否则后果更加不堪设想)。虽然其后相关人员在发现该情况后紧急停止系统运行,并调用所有自营资金在期货市场卖空了7000多手股指期货合约对冲买入的巨量股票(可见股指期货功不可没,否则亏损将更巨大),但依然对当日中国A股市场造成巨大冲击,并为该公司带来1.94亿元的损失。此外,2015年12月24日,上海市第二中级人民法院就57人分别起诉光大证券公司涉及“8·16事件”民事赔偿纠纷案作出判决,令光大证券共计赔偿原告损失425万元人民币。
此次事件对投资者的教训值得总结:
(1)交易系统存在重大缺陷。
本次时间中所使用的套利策略量化交易系统是由公司自行研制的订单生成系统和从上海另一家软件公司购买的订单执行系统两部分组成。两个子系统之间存在对接磨合问题。在没有进行充分仿真交易运行以测试交易系统的有效性就直接将该套利系统用于实盘交易,风险可想而知。
(2)风险内控机制形同虚设。
光大证券策略投资部门系统完全独立于公司其他系统,甚至未置于公司风控系统监控之下,因此此次事件的深层次原因是多级风控体系都未发生作用。
在交易员层级:虽然制定有对于交易品种、开盘限额、止损限额三种风控制度,但后两种都没发挥作用。
在部门层级:虽然规定部门实盘交易限额2亿元,当日操作限额8000万元,但都没发挥作用。
在公司层级:公司监控系统没有发现234亿元的巨额申报买单。这笔巨资或者动用了公司其他部门的资金来补充所需要完成的买单生成和执行,或者根本就没有头寸控制机制。
传统证券交易中的风控系统交易响应最快以秒计,但也远远不能适应高频套利交易的要求。例如本事件中每个下单指令生成时间为46毫秒,传统IT技术开发的风控系统将带来巨大延迟,严重影响下单速度,这可能也是各环节风控全部“被失效”的真实原因。
(3)预警机制需要完善。此次事件暴露出面对异常报价、异常数量的申报订单,作为一线监管机构的交易所的预警机制也有待进一步完善。