第2章 技术创新、系统和高频交易
技术创新在金融市场的运作中留下了最持久的标志。当引入新的金融产品时,例如1999 年的欧元兑美元汇率(EUR/USD),对市场运行造成了一次大规模的冲击,但技术变革确实对市场产生了微妙和持续的影响。多年来,技术已经改善了信息传播的方式、金融分析的质量和参与者之间沟通的速度,然而不断下降的成本大大有助于采用改进的金融服务技术。本章探讨了过去几十年在促进现代金融发展的背景下技术的主要发展。
硬件简史
英语bencb或意大利语banca 是今天银行( bank) 的直接前身,当货币第一次在指定地点兑换时,贸易就在罗马帝国时期制度化了。潜移默化地改变和引导着贸易公司的运作,直到20 世纪,技术革命使信息交换快速化,从而改变了那时的交易状态。如图2-1 所示,在过去100 多年,交易商使用计算机使得计算速度呈指数增长,而计算的成本自20 世纪80 年代以来一直下降,达到峰值。

在过去20 年里,计算机技术的价格下降是惊人的。具有2000 兆字节存储器(RAM)、300 千兆字节硬盘空间和2000 兆赫中央处理器的计算机系统在1995 年要花费几百万美元,并且大到需要专门的房间来安置。在2012年,具有相同规格的计算机不仅适用于标准的机箱,也可以在百思买或其他计算机商店找到,而且只需400 美元。
计算成本的下降很大程度上可以追溯到海外计算机芯片生产规模的效率。令人惊讶的是,对越来越易得和便宜的技术的需求不是金融服务从业者驱动的,而是由钱包干瘪的业余计算机使用者所驱动的。在过去20 年里,后者群体中对高性价比技术有着强烈需求的恰恰是视频游戏玩家,他们的人群规模和对栩栩如生的图形的渴望推动了大规模生产的激增和技术价格的快速暴跌。金融公司获得了视频游戏行业创新和成本效益的好处。
如图2-1 所示,当今的先进技术包括多核中央处理器(CPU)、现场可编程门阵列( FPGA)、图形处理器(GPU) 和所谓的大规模并行架构芯片。CPU 是计算机的大脑,决定如何在存储器中存储信息。多核CPU 使用共享内存来进行多CPU 间快速的通信,而每个单独的CPU 在给定的进程分支或"线程"上调取任务和执行计算。多核CPU 的示例体系结构如图2-2 所示。在写本书时,多核CPU 可能花费100 美元或更高一些。

CPU 芯片上的大部分空间被存储器和调度程序功能占据, GPU 则不同,GPU 上的空间主要用于所谓的算术逻辑单元( ALU) 中执行计算操作。为了进一步使得每个芯片的效率最大化,进程线程以相同大小并行批处理执行。这些批处理的线程被称为warp。为了使延迟最小化,应该注意确保进程的线程在循环数和退出条件方面是相似的。换句话说,就是需要用专业编程来确保GPU 以最高效率运行。图2-3 说明了GPU 的示例架构。通用的GPU型号是Nvidia GTX 系列,每个零售价在100-700 美元。
FPGA 是完全不同类型的芯片,没有任何固定指令集架构。相反,FPGA 提供了可以被编程以创建任何需要的电路或处理器的逐位功能单元的空白板。一些FPGA 包含多个专用功能单元,如乘法器和内存块。然而,FPGA 的大部分区域专用于路由基础设施, FPGA 运行时连接功能单元。图2-4 显示了FPGA 芯片示例的架构。


FPGA 的主要区别在于,编程代码从一开始就直接写在芯片上。FPGA 使用特殊的编程语言,如Verilog 或VHDL。这些语言与C 语言类似,并且易于学习。特殊的FPGA 编程设备将Verilog 或VHDL 转换为FPGA 芯片所理解的汇编语言。在没有FPGA 的情况下.和CPU 一样,程序运行期间需要编译交易程序,并在将其翻译到计算机芯片上时,也需要额外的计算机操作和进入延迟。编程FPGA 的过程是相当简单和便宜的。虽然空白FPGA 芯片和Verilog 或VHDL 编译器和模拟器的成本存在显著变化,但通常价廉物美,能够满足视频游戏者的需求。空白FPGA 芯片的成本在4000~5000 美元。Verilog 软件和模拟器可以是免费的( "开源" )或20000 美元。然后用芯片制造商的特殊步骤,将软件下载到芯片上。FPGA 芯片的编程通常在本科电气工程程序中教授,并且往往易于学习。然而,实现现有技术的FPGA 系统可能需要以被称为大规模并行处理器阵列配置来调配,这要求具有对硬件和软件优化的超高理解。
在性能方面,FPGA 往往优于GPU 和CPU,特别是当用于同时处理有限数量的时间序列时。图2-5 显示了关键硬件模型的效率图形比较。图的横轴显示出了"输入"大小,或者同时提供给算法的独立变量的数量;纵轴显示了执行给定数量的输入操作所需的计算机"周期"数量。如图2-5 所示,当输入数小于2000 时,FPGA 表现最佳; 当输入数量超过此阔值时,FPGA的速度变得与GPU 的速度相当。

芯片本身不是计算机程序运行速度的唯一决定因素。每个计算机运行的周期由每个机器内的所谓晶体振荡器(oscillator crystal) 确定,并且最重要的是,程序算法的体系。
信息
硬件只是实现成功交易所必需的许多计算机技术的组件之一。另一个关键组件是信息传递,即实现市场参与者的各种硬件和软件模块之间的通信。正如速度在硬件中很重要,它在信息传递中也很重要。事实上,信息的传播速度是交易通信的障碍或者说瓶颈。
信息传递协议
交易信息由三个级别的协议组成,如图2-6 所示。最基本的通信级别使得数据流能够进行传输,被称为用户数据报协议(UDP )。UDP是"准系统" (bare bones ) 数据通信协议,精益实施,并利用最少数量的字节和信息来识别和传递数据流。因此,UDP 非常快,但不能保证发送的数据送达。UDP是与用于互联网的在线流游戏(stream games) 和流媒体(stream movies) 相同的技术,在某处丢失一个数据包并不会显著影响观看者的体验。在交易中,UDP 有时用于传输报价、连续刷新的数据,因此不会对丢失的信息非常敏感。如果从交易所发送的特定报价未能到达交易商,则所产生的影响可以被认为是最小的一一新的修订报价已经在传输中,在到达交易商的账户时替代丢失的报价。

然而,报价过程的完整性在交易模型开发中很重要。交易算法开发者可以依靠报价流的特性来生成即将到来的市场动态预测信号。如果模型开发中使用的历史报价流的结构,与交易商在"开市"环境中遇到的报价流的结构明显不同,则计算的预测可能停止工作。应注意确保在算法的模拟和囚测中使用的数据在结构上与实际开市环境中接收的数据兼容。至少,算法设计者应该确定实际开市中接收的报价的频率与回测中使用的历史数据的频率相匹配。此外,还可以执行更复杂的数据测试。例如,可以对两组数据计算滚动式自相关度量( rolling autocorrelation metric),并且结果度量的分布与成功的算法设计和实现应该是类似的。
复杂度更高一级的通信协议是传输控制协议/互联网协议( Transmission control Protocol/lnternet Protocol , TCP / IP) 。TCP / IP 是另一种标准互联网通信协议,目前用于大多数电子邮件和网络浏览通信。与UDP 不同,其中单独的信息数据包不携带任何识别标记, TCP / IP 传输的所有分组按照顺序编号, 每个数据包内的字节总数会被计数,并且未传递或损坏的数据会被重新发送。因此, TCP/IP 为信息传递提供了更安全的框架,被用于传输委托订单、订单确认、执行确认、订单取消以及类似的重要信息。作为平衡, TCP / IP的速度往往比UDP 慢三倍。图2-7 总结了UDP,TCP / IP 和FIX 在交易通信中的常见用法。

然而, UDP 和TCP/IP 都需要额外的通信层,使得交易过程的信息标准化。像FIX、ITCH 、OUCH和FAST (FLX Adapted for STreaming ) 在UOP 和TCP 顶层使用,以标准化机器可读取的格式来传输数据。FIX 协议是一个免费的基于XML 的文本规范,用于报价、下单、交易和相关信息传输。FIX 协议包括数据字段定义、枚举和各种组件,构成信息。每个信息单元都会被用户生成的数据填充。信息的每个字段,包括所使用的FIX 的版本、时间戳和其他信息,通过二进制1 与以下字段分开。
图2-8 为一个FIX 信息示例,传送美元/加元汇率的报价。显示的报价包含以下信息:
● FIX 版本, " FIX.4.2"( 字段编号8 );
● 信息的时间戳记, "20070731-15 : 25 : 20" ( 字段编号52 );
● 安全标识符, "USD/CAD" (字段55 );
● 安全类型, "FOR" 用于外汇(字段号167 );
● 基本货币,美元为"USD"(字段15 );
● 最高买价和最低卖价(分别为字段132 和133 );
● 最高买价和最低卖价的大小(字段134 和135 ) 。

通信信息的传输速度取决于几个因素:
● 信息大小;
● 连接带宽;
● TCP / IP 和UDP" 窗口"大小,即市场参与者愿意指定在每个信息"片段"上发送和接收的字节数。一旦一个市场参与者的系统发出信息,则将信息分成单个数据包的指定窗口长度,每个数据包都附加信息标题,并在其线路上发送。UDP 信息头( message header ) 通常标识目的地,并且仅由8 个字节组成。TCP / IP 信息头包括发送方和目的地标识,包裹序号和组成该信息的包裹总数,以及其他变量。标准TCP / IP 信息头为20 字节。FIX 信息头可以更复杂,并且通常超过100 字节。
虽然FIX 被广泛使用,与纳斯达克著名的ITCH 和OUCH 协议相比,它速度比较缓慢。ITCH 和OUCH 的二进制特性确保信息以机器可读取的格式到达,不用耗费时间将它们从文本转换为二进制再转换回来。除了二进制格式之外, ITCH 和OUCH 的信息具有固定的信息长度,使其能够更快地传输。OUCH 是订单输入协议,而ITCH 是输出报价和交易数据的传播规范。然而,ITCH 和OUCH 仅支持有限数量的信息。OUCH 提供了以下平台:
● 订单输入;
● 更换和取消;
● 接收执行确认。
ITCH 是为快速和精准报价而建立的,过往的交易数据传递能够发送:
● 订单级数据;
● 交易信息;
● 处理订单不平衡数据i
● 管理信息;
● 事件控制,如开始日、结束日和紧急市场暂停/恢复。
对于更复杂的信息,能使用ITCH 和OUCH 的市场中参与者通常需要使用FIX 。
核心信息架构
分笔信息在市场参与者之间传输时,使用一个或多个报价信息规则。FIX 、ITCH 、OUCH 和FAST 只是一些能够传输关键交易信息的信息语言,尽管它们是复杂的首字母缩略词,但是信息传递是建立在非常简单的架构之上的,如图2-9 所示。

如图2-9 所示,每个报价和交易通信流包括以下关键信息:
1. 会话开始是在每个通信会话开始时发送的信息,有时每天只有一次。会话开始信息会通知相关的市场参与者,其本质是为交易敞开门,并建立通信流。
2. 心跳检测是一个常用的信息,通知参与者的通信方,参与者在线,且处于良好的技术健康状态,并能开展交易业务。未能在预设的时间段内接收其通信对象的心跳信息的那一方,往往会关闭通信信道。然后可以使用"会话开始"序列来恢复通信信道。
3. 报价信息是携带报价的信息,如最高买价、最低卖价和数量。二级数据,如最高买价、最低卖价背后的市价订单深度,也可以使用报价信息传送。
4. 订单信息用于传输实际订单的信息。典型的订单信息包括买卖标识符、订单类型一一市场、限制或其他详情、订单大小,以及在限价订单的情况下期望的执行价格和有效期(终止日期或一直有效) 。
5. 订单取消信息包括先前设置好但现在需要取消的订单的唯一标识符。
6. 订单确认和订单取消确认信息,分别包括订单设置或订单取消的确认。
7. 执行确认信息说明了执行的详细信息: 执行时间、获得价格和执行数量。
8. 会话结束信息通知各方,给定的交易实体已停止当天的交易和报价。所产生的交易信息流包含了一种直观的方法,用以提供有效、可靠和可追溯的通信。大多数的全套交易设备会记录日常通信,以便于协调和快速识别潜在问题,如网络连接问题、算法错误等。
速度和安全
TCP / IP 或UDP 都不包含加密。换句话说,大多数TCP / IP 和UDP 信息都已以纯文本形式,通过互联网发送。FIX 可以提供可选的加密,代价是相当大的延迟。当ITCH 和OUCH 以二进制格式发送信息时,大多数纳斯达克交易所的信息仍然通过互联网不加密地发送。
发送未加密的消息,市场参与者面临什么样的风险? 为了回答这个问题,需要考虑互联网流量的当前布局和流量。今天,世界上大多数互联网流量流经大约80 个"核心"节点。这些节点,例如,像Verizon 之类的主要互联网服务供应商( ISP) ,在恰当的位置具有一些安全措施,限制了在这些节点处间谍行为的发生率。同时,节点可能相当拥塞,减缓消息流量,而不考虑其紧急性。
如果核心节点出现故障,70% 的互联网流量将流经对等网络( peer-topeer networks),在冗余备份结构中,流量将以分散的方式,从一个本地用户。虽然对等网络配置允许网络参与者观察彼此的流量内容并且完全读取未加密的消息,但是对等通信被充分地随机化,以防止任何对等方积聚整个信息流。然而,对等网络可能易受恶意攻击,并且订单流的潜在劫持可能破坏市场并对所有市场参与者造成巨大损失。

图2-10 描述了交易中三种常见的互联网通信模型,包括所谓的主机托管模型。在主机托管模型中,交易商的服务器被安置在与交易所的匹配服务器相同的安全设施中。在主机托管的情况下,交易商的服务器能够使用交易所服务器的专用网络接人。专用网络接人包括从交易服务器直接到交易所的私有安全通信线路,使恶意干预的风险最小化,并且确保所有市场参与者的环境安全。主机托管还提供了如下速度优势:例如,纽约和芝加哥之间的距离较远,此外,主机托管交易连接的安全性节约的巨大成本,可以使在纳斯达克托管主机的芝加哥交易商,在一轮往返下单中,减少17~22 毫秒的延迟。图2-11 总结了世界各地主机托管中心的延迟时间。

在大多数主机托管数据中心内,服务器被放置在离交易所服务器本身不同的距离处,自然引起了主机托管于给定设施中的所有交易商对连接"公平性"的关注。小到100 英尺。的物理距离差可以导致在发送和接收的每个消息上一微秒(一百万分之一秒)的时间延迟,使得将主机托管于交易所服务器附近的交易商具有潜在优势。为了解决这些问题,纳斯达克主机托管中心保证了从服务器到交易所再到位于纳斯达克设备的每个交易商服务器等距离的光纤电缆。电缆长度在物理上精确到了毫米,即使是靠近交易所服务器的交易商服务器,电缆也会盘绕起来。
虽然一些市场参与者认为主机托管的价格昂贵难以承受,但实际数据恰恰相反。例如,位于新泽西州斯考克斯市的数据中心,一家私人公司Equinix 提供与主机托管效果相类似的服务,最低月费如下:
● 配备了生物识别安全扫描仪和空调的商业硬件机柜每月1500 美元。
● 20 安120 伏主电源每月费用350 美元。
● 额外的20 安120 伏电源用于冗余,每月额外增加175 美元。
● 最后,连接到世界各地数据中心的超快速通信网络的连接,每月额外支付325 美元。
整套类似设备总计每月只需2350 美元,成本对于任何认真的投资者来说都可以忽略不计。
网络吞吐量
消息传输架构是所有市场参与者都可利用的资源,但它并非对所有人都免费。例如,交易所必须不断地增强基础设施,以确保其连接的带宽足够大,使所有感兴趣的交易商之间可以不受限制地传输消息流量。也许对交易所和其他订单交易地的最大挑战是订单取消的绝对量。根据Hautsch和Huang ( 2011 )所说,在纳斯达克, 95 % 的限价订单在发出后一分钟内被取消。Hasbrouck 和Saar ( 2011 )报告了类似的行为,将其分为快速下单和取消"运行" 。虽然这种行为对一个不知情的观察者可能是恶意的,但是对其解释很简单:如第10 章所详述,制造商需要以接近市场的价格报价一一"处于主动地位",以成功和迅速撮合,从而确保稳定的收入流。一旦市场脱离了做市商的报价,取消订单并以新的最高买价和最低卖价重新提交订单符合做市商的最大利益。此外,如第12 章所述, 关于限价订单簿的时间价格优先权的交易,市场参与者可以挂单,然后不痛不痒地取消过多的数量限价订单,以确保其执行优先级,这在实际操作中被称为"分层"( layering ) 。
在这种动力下, 许多交易场所陷入恶性循环: 一方面,它们互相竞争吸引做市商; 另一方面,许多取消订单的做市商正在侵蚀网络资源,导致报价出错和其他贻误所有市场参与者的行为。甚至主机托管也无法完全解决带宽问题,因为主机托管空间也面临着容量限制: 纳斯达克在新泽西州莫瓦市的主机托管的机库中有很多需求,据说已经无法为对主机托管感兴趣的人提供足够空间。如第3,12 章所讨论的,目前已经在选定的交易所开发和实现了对网络带宽问题的有前景的解决方案,称为按比例执行( pro-rata execution) 。
软件
高频交易系统最终是通过上述硬件和信息传输部署的软件应用程序来实现。与任何软件系统一样,高频交易系统从一个概念开始,即被称为算法的计算机科学术语,随后以所选的计算机语言编码成完全成熟的软件程序。术语算法被正确地定义为逻辑或一系列高级活动,用于向计算机解释如何实现给定的任务。该算法不深入到系统的实际编码或编程的细节,但是仍然可以考虑最终实现算法的硬件和消息结构的特性。算法通常在图中可视化。算法图的关键要素总结在图2-12 中。

图2-12 中所示的算法元素将在整本书中用于解释常见高频交易策略的算法设计。图2-13 说明了以下简单的做市算法的分步过程。
1.开始程序。
2. 检测市场情况:市场条件是否适合做市。
3. 如果是,开始做市。
4. 如果否, 等待一分钟。
5. 重复步骤2 。
图2- 13 中呈现的算法是"嵌套的",或者包括2-13中标为"监测市场情况"和"开始做市"的两个附加算法。嵌套任务可能是区别高频交易系统好坏的关键"秘密武器" 。通常,任务是在先进的研究基础上设计的,其中任务是对几个竞争性的想法进行严格测试并取得积极结果后,精选得出的。图2-13 中所示的两个嵌套任务将在第15 章详细解释。
"算法"这个专业术语通常与术语高频交易、系统交易、电子交易和低延迟交易同义使用。然而,术语之间也有足够明显的区别。系统通常指过程高度条理化的方法。因此,系统交易遵循一些严格的框架,但不必完全自动化。如果交易商在某些指标形成特定模式时手动交易,则被认为是系统化。"系统"这个术语之所以被创造,是用来区分系统化配置的交易商和凭直觉或主观判断进行配置的交易商,后者被称为随意型交易商(discretionary traders ) 。所有高频和算法交易商都是系统交易商。

"电子"这个术语描述了交易商的执行偏好: 是否选择以电子方式或者可能通过电话发出订单。所有高频交易、算法交易和低延迟交易都必定是电子的,但系统交易可能涉及非电子部分。相反,许多仅使用电子交易系统线路的订单,既可以用也可以不用算法。然而,由于大多数市场和交易商正在转向电子平台,"电子交易"一词变得隐式和过时。
"低延迟交易"是指利用交易商和交易所之间的快速连接开展的交易。如上文所述,延迟测量了交易商和交易所之间的时间差。大多数延迟的测量值以微秒为单位记录。高频交易系统通常也是低延迟,但反之不然:低延迟系统通常由低频交易商配置,以获得更好的交易价格。
一旦算法被设计,它被分解成多个部分并且以计算机理解的语言编码。编码的目的是将算法的逻辑准确地翻译成计算机"说",并且在该过程中,当计算机读取和解释代码时,在"运行时间"期间创建尽可能小的延迟。直接写人FPGA 芯片的代码是目前最快的算法。然而,许多高频交易商部署非FPGA 架构也非常优秀,并依赖于C ++和Java 之类的语言来对他们的系统进行编码。虽然C ++仍然是人类容易理解的最快的计算机语言,但许多系统都是用Java 编写的,它是最慢组件的变通解决方法。因此,如著名的纳斯达克OMX 系统据报道用的就是Java 编码,禁用Java 垃圾收集,并用C++ 替代,如直接访问存储器以提高速度。第16 章描述了编码实现的最佳实践方式。
算法的实际交易逻辑代码的概述往往相当短。在许多成功的情况下,交易逻辑只包括50 行的代码。除了实际的买入和卖出的决定之外,每个高频交易系统还包括支持报价的数据检索功能,可以在10000 多行代码情况下实现和多达5000 行代码,以及发送交易和确认收到的应用程序下的同样效果。也许,每个高频交易系统中最冗长但最强制的组成部分是其风险管理的相互制衡。它总共可以有50000 多行代码。高频交易的风险管理将在本书第14 章详细讨论。
|总结|
算法执行与当今的市场不可分割。这是一个相当必要的功能,它为所有投资者,无论大小,带来相当可观的价值。随着技术成本的大幅下降,目前大多数投资者可以负担建立和使用先进的算法,包括为高频交易设计的算法,以前只有少数市场参与者才能使用,如主机托管提供的安全和速度等额外益处的服务。
|章末问题|
1. 你可以在将交易订单通过互联网传输到交易场所之前进行加密吗?解释原因。
2. 史密斯先生看了关于金融业的内容,了解到计算机技术"军备竞赛",并决定技资最新的超级计算机,以提高快速订单传输的概率。史密斯先生的投资是合理的吗?今天大多数消息拥塞发生在网络空间的哪里?
3. 什么是主机托管?
4. 平均来说, 与报价信息相比,交易订单信息的传输速度要慢多少?
5. 什么是心跳检测?
6. X 仪器在交易所A 的最低卖价包含300 单位,交易所B 的最低卖价包含500 个单位,交易所C 的最低卖价只包含100 个单位。客户希望你代表他购买550 台仪器, 你如何分拆客户的订单并将它们在影响最小算法的情况下发送到交易所?