编者按:8.16光大证券这只蝴蝶掀起A股千层浪,但大多围观者仍处于“不明觉厉”的状态, 中国量化投资学会理事长丁鹏博士推出光大事件系列文章《光大乌龙指事件之策略解读之一》、《光大乌龙指事件之策略解读二:解密高频交易原理》,本次文章将探讨两个问题:为什么交易系统会频频出错?目前主要交易系统的构架是怎么样的呢?
自从光大乌龙指出来以后,仿佛受到感染一般,海外也连续出现乌龙指事件,先有高盛的乌龙指损失1亿美金,后又纳斯达克[微博]交易所技术故障停止交易3个小时,为什么交易系统会频频出错?目前主要交易系统的构架是怎么样的呢?本篇中做一个简单的探讨。
我们已经知道,光大证券采用的是高频交易策略,在前一篇解读文章中,笔者也得出了结论:高频交易的核心是交易速度。在极高的速度情况下,交易所的系统也会受到巨大的冲击。
我们再以那个买白菜的例子继续讨论:当所有的村民都用上法拉利[微博]这种快速交通工具去菜场买菜后,可以想象到的是,菜场将会受到巨大的业务量的冲击。以前可能一天只有5、6个村民走路来买菜十来斤,现在是大家开着法拉利,一次就买1000斤,那这个菜场受到的压力之大,可以想象得到。这也就是最近各大乌龙指频繁的重要原因。无论是光大的乌龙指,还是高盛的乌龙指或者纳斯达克的停摆,交易所系统的健壮性,都是其中一个重要的问题。
交易所撮合系统中一个核心的通讯机制成为‘消息中间件’,我们再以那个菜场的例子来说明这个到底是什么?张大爷进入菜场后,怎么让别人知道他想买1000斤白菜呢?一种方法:扯开嗓子叫:“俺要买1000斤啊”,第二种:写到一个黑板上去,大家都来看。毫无疑问,写黑板的方式效率远比扯开嗓子叫的效果要好很多。这个黑板就是消息中间件。
1. 传统的消息中间件
传统的消息中间件逻辑模型可以用下图来表示:
数据从发送方T经中间件M到达接受者R。为了保证数据的正确性,数据发送到M后,M会进行序列化并同步到其他的M中,然后再发送到R中。这个过程中,经过了2次网络传输,一次序列化和一次同步,M和R在接受到信息后还需要解析。
那么,可以通过以下手段提高系统性能:
1)将M和R放置在一台机器上时,就可以节省一次网络传输。
2)MM收取报文需进行一次解析,序列化之后再将它发出去。R接收后又需进行一次解析。如果M与R在一台机器上,可以开辟一个共享内存区域。M序列化数据后存到共享内存区域,然后发条消息告诉R该数据的指针即可。这样就节省了一次报文解析的过程和应用系统和操作系统的通信开销。
3)若MM和R在同一个进程中,相应的进程间通讯也可以省去。
(2)极速中间件构架
这种架构下的交易系统,可以有效的利用多cpu并行工作,降低系统开销,降低延时。最重要的是消息中间件不再成为瓶颈,可以实现同步风控。该架构是国际顶尖交易所的主要通讯方式。配合硬件编程等技术,可以实现微秒级的延时。目前国内的某交易所最新的撮合系统也采用了这种最先进的技术,可以与国际先进技术媲美。
可以简单的理解为:传统的消息中间件就是那个写满价格和买卖的黑板;极速中间件就是变成了电子大屏,大家通过手机去大屏上发布买卖信息。
3. 其他先进技术
国外的量化交易比较发达,除了消息中间件,在其他方面也积累了较多的经验,笔者简要介绍一下。
(1)FPGA(field-programmable-gate-array,可编辑门阵列)
FPGA通俗的理解,就是将算法逻辑固化成硬件来实现,可以获得极高的性能,低延时和并发处理优势。比如将策略算法和风控逻辑用多个FPGA来实现,可以将传统架构下策略和风控完成的时间,从秒级降低到纳秒级(1纳秒=10万亿之一秒)。
(2)RMDA
RDMA(远程直接内存访问)技术——能够使集群中的节点之间通过网络设备对对方机器的内存进行直接访问,既减少延迟,也节省了节点上的CPU资源。
(3)内存数据库
策略不同,对数据处理的要求也不同。但归根到底,还是要对大量时间序列的数据进行访问,分析和保存。目前硬盘IO读写是通过机械手段实现的,性能始终是个瓶颈。而内存数据库是将数据放在内存中进行,可以有效避免硬盘的性能瓶颈。
(4)GPU
随着3D技术的发展,GPU也走进了千家万户,某些GPU的性能已经不亚于CPU。因此,如果有效的利用GPU的处理能力,可以分担CPU的工作压力。通俗的说,就是讲原来CPU一个处理器进行的工作,分给GPU来一起做,性能当然会有显著的提升
(5)Infiniband
InfiniBand的帧是基于16bit的本地地址,以太网是用48bit的全球唯一的物理地址。因此,InfiniBand是一个I/O技术,而不是网络技术。InfiniBand的优势是在可扩展性上,对于某些需要多个节点之间频繁进行消息传递的应用,,InfiniBand相对于以太网能够提高整体的吞吐量,减少延迟,并且保证随节点增加系统整体处理能力的有效扩展。但InfiniBand价格相对昂贵,需要特殊的硬件,还有与已有以太网设备兼容性不好。因此InfiniBand通常用在高频交易公司的内部网络。
(6)基于列的文件系统
时间序列的处理,往往是统计等基于列的处理方式比较多。而传统的文件系统和数据库都是基于行的处理方式,造成在读取数据的时候寻址操作频繁,性能下降很快。如果采用基于列的文件存储格式,会降低不必要的硬盘寻址,提升性能。
从上面的介绍可以看出,国内交易所的核心技术与国际顶尖系统相比,还是有着不小的差距,这次乌龙指事件,券商的交易系统、交易所的系统等都存在不小的问题。
对比一下高盛事件中的监管者,在监控系统发出自助警告,发现有些股票期权在上午开盘时出现非正常交易价格时,纽交所随即表示正在核查早间“一大批存在错误的订单及交易”,向交易员发出预警,并开始核查相关交易情况。在中午休市期间,纽交所发出正式公告,表示在9时30分到9时47分早盘开市的17分钟内交易异常,有可能会取消相应时段的交易。到上午11时17分,纽交所已经对该交易时段成交的期权核查完成了近23%。
笔者认为,上交所在光大证券的乌龙事件中反应迟钝的根本原因在于撮合交易系统的老化,并非主观故意。光大的量化系统交易速度实在太快,交易所的主机缺乏对这种快速巨量委托单的动态检测模块,急待大规模升级提升性能。
这次乌龙指事件也是一次实实在在的压力测试,相信随着未来量化投资在国内的发展,对于各大IT公司来说,也是一次展示自己实力的机会。
丁鹏 博士,中国量化投资学会理事长, 《量化投资-策略与技术》作者 谢辛宁,兴宁投资董事长,高频交易专家
进入【新浪财经股吧】讨论