1)交易数据在电脑外的加速,就是如何快速地把交易数据(主要是实时行情数据和订单信息),联接和推送到运行程序化交易策略的电脑。
2)交易数据在电脑内的加速,即如何在电脑内部把交易数据最快地传到交易策略程序。
3)其他数据的逻辑调用。其他数据主要是指历史行情数据、基本面方面的信息数据以及统计信息等。简言之,就是如何快速地获取程序化交易策略下单逻辑所需要的其他判断数据。
上面说的主要是行情数据从交易所到程序化交易策略的这个方向,订单的发送和接收是双向的,可能因为通讯协议的不同又有些差别,但基本差不多。下面以美国高频交易所需的IT技术为例,来具体讲讲IT技术在高频交易上的应用,其他国家地区目前所用的技术也很类似。
ECHO 处于关闭状态。
交易数据在电脑外的加速基本上是个花钱的活,美国许多交易所已经实现了co-location 的业务,客户可以花钱把行情服务器、策略服务器等机器放在交易所撮合引擎服务器所在的数据中心里。从物理距离上来说没有比这更近了。交易所提供的数据支持主要以1G 和10G以太网接口为主,10G的比1G网络带宽更大更快,当然也更贵些。随着数据量的增加,以后也会应用40G 的InfiniBand以及更快的以太网。交易数据从交易所出来后,下面便是交易公司如何部署自己的路由器和交换机了,在这方面也有一些提供高速路由器和交换机的公司,这些器材在网络延迟和速度上要比通用的设备要好很多,当然价格也高了不少。
如果程序化交易策略只交易一个品种,在一个交易所co-location就可以满足要求了,但如果策略需要做多个品种,例如期现套利,这就要涉及到两个数据中心的连接。美国期货的交易重镇主要在中西部的芝加哥,股票现货交易主要在东北部的纽约,由于光速是固定的,两点之间直线最短,谁的光纤最直,谁的物理连接距离最短,谁的速度就最快。美国有家专门的网络提供商叫Spread Networks,它做的事就是花了两年铺了纽约和芝加哥目前为止最直的一条网络,网络连接往返速度只需 13.33毫秒(ms,千分之一秒),比原来的网络少了3毫秒,许多高频交易商都成了它的客户。前一阵,有家叫Mckay Brothers的公司,它宣布自己的无线网络可以达到更快的速度,具体的速度测试数据尚不可知,我们拭目以待。
交易数据从网络传到了电脑后,具体说是到了网卡的网端后,下一步的工作便是把数据传递到交易策略程序了。一般交易策略程序是作为操作系统的用户程序存在。交易数据主要通过UDP与TCP两种方式进行网络传输,下面以UDP包为例,(TCP 更复杂些,但原理差不多),简单来介绍下交易数据在电脑内的传输、解析。交易数据到达网卡后,通过PCI Express 或HyperPort接口,再传到操作系统的内核(OS Kernel)进行TCP/IP 协议栈的解析,再把解析后的数据内容通过socket 接口,推送到用户程序即策略中。然后用户程序再对数据按照规定的格式进行解析,然后应用在策略逻辑中,进行分析,下单等动作。以上的这种方式主要是基于现有电脑的结构的基本做法,配置好的快些,但总的来说整个过程的处理时间,数量级在两位数微秒(us,百万分之一秒)左右。数据量多的时候,操作系统内核对TCP/IP 的解析所用CPU也消耗很多,处理速度会加速下降。一般来说,1G 的数据需要一个GHZ的CPU进行解析,一般的CPU的速度也就是2-3GHZ,这个比例在数据量大时是相当大的。
在整个交易数据内部传递与解析的过程中,能够做文章的主要是TCP/IP 协议栈的解析和业务数据的解析。因为策略逻辑的多样性,对策略逻辑的普遍加速的可能性不大。 TCP/IP 协议栈的解析(TOE,TCP/IP offload engine)和业务数据的解析主要由专用的网卡来做。目前有两种方法来实现,一种是在网卡附带的CPU上进行处理,(IBM有一款网卡附带CELL芯片,也就是SONY在PS3游戏机上用的,功能很强大);另一种是网卡+FPGA的形式,用FPGA(现场可编辑门阵列)来做TCP/IP的解析和业务数据的解析。
交易数据传递、解析在电脑外部的通道和内部的通道都打通后,剩下的便是对程序化交易策略的分析了。由于交易策略的千奇百怪,也无法有一个统一的模式,就技术难点来说,主要是对大量数据的分析,尤其是对大量时间序列数据的保存和快速访问。一般的通用办法是用平面文件或者关系型的数据库如ORACLE, MY SQL, SQL Server。这种办法主要瓶颈在于磁盘硬碟的读写的IO速度上。现在有些基于内存的数据库(In-memory database),可以大大加快读写速度。现在内存的价格下降很快,In-memory database 也越来越可行,但是数据多的话,还是会有局限。另外,时间序列`数据也有其特殊性,它更适合基于列的操作,而通常的数据库系统都是基于行的操作。在这方面,也有厂家如KDB 提供专门为海量数据基于列数据库管理系统。
另外,高频交易所用的其它周边系统还有信息传输系统(Messaging System),它主要是来传递各个子系统间的信息传送;还有数据储存系统,它主要是来保存每天产生的海量数据以及这些数据的读写。现在如果单单把美国股票市场的数据保存,每天需要超过100G,一个月超过2T。如果要保存多市场多品种的数据,数据量更是惊人。一个好的高频交易平台也包括良好的回测复盘工具,用以有效率地开发调试策略。一天100G的数据跑下来,用平常的方法效率太慢,如果要跑多天的话,更是慢得没法接受。另外,模拟成交也是一个大问题,尤其在超高频的情况下。以后有时间可以专门说说策略调试这一块。
以上说的是做HFT所要碰到的主要技术问题。其实许多高频的交易的做法和思路都比较公开,很多高频交易策略也大都大同小异。所以一个成功的高频交易策略,除了在交易算法和细节处理之外,更多的是在于他所使用的交易系统的处理能力和速度上。确切的说,高频策略的成功与否,很大程度上取决于能否在众多竞争者中抢到自己要的单子。在美国,高频交易者往往需要花大钱搭建交易网络和购买最好的硬件,使自己能够得到最快的数据和交易通道。同时,他还要不停地跟踪策略的交易情况,调整策略算法逻辑,不断地跟踪策略对行情的反应时间、下单的速度以及交易延迟的情况,试着把策略的反应时间再缩短1微秒。“台上三分钟,台下十年功”,高频交易听起来风光,但真正做起来也是个累活、苦活。你不仅要懂交易、市场微观结构,也要懂电脑的硬件结构、软件技术,这其中的辛苦,“如人饮水,冷暖自知”啊。