量化基金入门(六) —— 机器之心

允许专业人士和零售交易者进行算法交易的交易所数量每年都在增长,并且越来越多的交易者正在转向算法交易。

参阅上文:

量化策略入门Vol. 1—— 常见量化策略种类

量化策略入门 Vol.2 ——市场微观结构入门

量化策略入门 Vol.2 —— 订单执行优化

量化策略入门(三)——如何搭建属于自己的交易系统

量化策略入门(四)——交易系统的组成以及搭建(深度好文)

量化基金入门(五)—— 交易系统的设计以及内核

订单路由系统使用交易所提供的API,以交易所可以理解的语言对订单进行加密。交易所提供的API有两种:本机API和FIX、API。本机API是特定于特定交易所的API。FIX(金融信息交换)协议是在不同的交换中使用的一组规则,以使安全市场中的数据流更容易有效。我们将在下一节中进一步讨论FIX。在开放的经济中,可以通过自动交易系统将订单发送到交易所或非交易所,ORP应该能够处理到不同目的地的订单。在这里,我们要指出,订购信号可以由个人手动执行,也可以自动执行。后者是我们认为的“自动交易系统”。订单管理器模块包括不同的执行策略,这些策略基于预定义的逻辑来执行购买/出售订单。一些流行的执行策略包含VWAP,TWAP等。有不同的过程(如订单路由,订单编码,传输等)构成该模块的一部分。 

自动交易系统中的风险管理由于自动交易系统无需任何人工干预即可工作,因此有必要进行全面的风险检查以确保交易系统按设计执行。缺少风险检查或错误的风险管理会导致定量公司无法弥补的巨大损失。因此,风险管理系统(RMS)部分是构成任何自动化交易系统中非常重要的组成部分。在自动交易系统中,有2处组件用来处理交易程序的风险管理机制:在应用程序内–我们需要确保交易者没有设置那些错误的参数。它不应允许交易者设置严重不正确的值,也不能设置任何胖手指错误。在OMS中生成订单之前–在订单流出系统之前,我们需要确保订单通过了我们模型自身风险管理系统(RMBS)的检验。这是我们交易中最关键,应付风险管理的机制。

自动交易系统协议的出现正如我们之前在自动交易系统教程中所看到的那样,由于新架构能够将每台服务器扩展为多种策略,因此出现了从一台服务器连接到多个目的地的需求。因此,订单管理器托管了多个适配器,以将订单发送到多个目的地并从多个交易所接收数据。每个适配器都充当交换所理解的协议和系统内通信协议之间的解释器。因此,多次交换将需要多个适配器。但是,为了向自动交易系统添加新的交易所,必须设计一个新的适配器并将其插入体系结构,因为每个交易所都遵循针对交易所提供的功能进行了优化的协议。为了避免添加适配器的麻烦,已经设计了标准协议。其中最突出的是FIX协议。这不仅使它可以随时随地连接到不同的目的地,而且还大大减少了与新目的地连接时的上市时间。标准协议的存在使自动交易系统很容易与第三方供应商集成,以进行分析或提供市场数据。结果,市场变得非常高效,因为与新目的地/供应商的集成不再是一个约束。此外,仿真变得非常容易,因为从真实市场接收数据并将订单发送到仿真器只是使用FIX协议连接到仿真器的问题。模拟器本身可以在内部构建,也可以从第三方供应商处购买。可以在适配器不知道是从实时市场还是从记录的数据集接收数据的情况下,回放类似记录的数据。

低延迟架构的出现有了自动交易系统的构建块,这些策略现在可以实时处理大量数据并做出快速交易决策。如今,随着诸如FIX之类的标准通信协议的出现,建立算法交易平台或自动交易系统的技术进入壁垒变得越来越低,因此,算法交易的世界变得越来越有竞争力。随着服务器拥有更多的内存和更高的时钟频率,重点转移到了减少决策等待时间上。随着时间的流逝,减少延迟已成为许多原因的必要,例如:1. 该策略仅在低延迟环境中才有意义

2. 适者生存,只有最适合的能够生存,如果达不到标准,将被淘汰。

但是,问题在于,延迟实际上是一个包含几个不同延迟的总体术语。尽管它很容易理解,但是很难量化。因此,如何解决减少等待时间的问题变得越来越重要。

如果我们看一下自动交易系统的基本生命周期,

1.  交易所发布市场数据包2.  小包通过电线3.  数据包到达服务器端的路由器。4.  路由器通过服务器端的网络转发数据包。5.  数据包到达服务器的以太网端口。6. 取决于是否为UDP / TCP,将进行处理,并且已除去包头和包尾的数据包会进入适配器的内存。7.  然后,适配器解析数据包并将其转换为算法交易平台内部的格式8.  该数据包现在通过系统的几个模块-CEP,滴答存储等。9.  CEP分析并发送订单请求10.订单请求作为市场数据包再次经历周期的逆转。在自动交易系统中,任何这些步骤的高延迟都可确保整个周期的高延迟。因此,延迟优化通常从此周期的第一步开始,这就是我们控制的第一步,即“数据包在电线上传输”。最简单的方法是尽可能缩短到目的地的距离。托管是交易所提供的设施,用于在交易所附近托管交易服务器。下图说明了可以通过减小距离来获得的增益。

在自动交易系统中,对于涉及单个目的地的任何一种高频策略,托管都已成为事实。但是,涉及多个目的地的策略需要仔细计划。在做出这样的决定之前,必须考虑诸如目的地回复订单请求所花费的时间以及它与两个目的地之间的ping时间进行比较之类的因素。该决定也可能取决于策略的性质。网络等待时间通常是减少自动交易系统总等待时间的第一步。但是,还有许多其他地方可以优化体系结构。

传输期以及延迟在自动交易系统中,传播潜伏期表示沿电线发送比特所需的时间,当然受光速的限制。除减少物理距离外,还引入了一些优化措施来减少传播延迟。例如,芝加哥和纽约之间的普通电缆的往返时间估计为13.1毫秒。2012年10月,Spread Networks宣布了延迟方面的改进,使往返时间估计为12.98毫秒。微波通信被诸如Tradeworx之类的公司进一步采用,使往返时间估计为8.5毫秒。请注意,理论最小值约为7.5毫秒。持续的创新正在推动科学的发展,并迅速达到光速的理论极限。防御技术中较早采用的激光通信的最新发展,进一步缩短了短距离内已经稀疏的等待时间,降低了纳秒。

网络处理延迟网络处理延迟表示路由器,交换机等引入的延迟。自动交易系统的体系结构中的下一个优化级别是数据包从A点到B点所经过的跃点数。跃点定义为源和目标之间的路径的一部分,在此期间数据包不会通过路由器或交换机等物理设备。例如,一个数据包可以通过两条不同的路径传播相同的距离。但是它可能在第一个路径上有两个跃点,而在第二个路径上有3个跃点。假设传播延迟相同,路由器和交换机各自引入自己的延迟,通常作为经验法则,越多的跃点就增加了延迟。网络处理延迟也可能会受到我们称为微爆发的影响。微爆发定义为数据传输速率的突然增加,这不一定会影响平均数据传输速率。由于自动交易系统是基于规则的,因此所有此类系统都将以相同的方式对同一事件做出反应。结果,许多参与系统可能会发送订单,导致参与者和目的地之间的数据传输突然激增,从而导致微爆发。下图表示微爆发的具体情形。

第一个图显示了数据传输速率的1秒视图。我们可以看到平均速率远低于1Gbps的可用带宽。但是,如果我们更深入地研究第二张图片(5毫秒视图),则会发现传输速率每秒都多次飙升到可用带宽之上。结果,网络端点,路由器和交换机中的网络堆栈上的数据包缓冲区都可能溢出。为了避免这种情况,通常通常为自动交易系统分配比观察到的平均速率高得多的带宽。

序列化延迟自动交易系统的序列化等待时间表示将位拉上线和下线所花费的时间。在T1线上传输的1500个字节的数据包大小(1,544,000 bps)将产生大约8毫秒的序列化延迟。但是,使用56K调制解调器(57344bps)的相同1500字节数据包将花费200毫秒。1G以太网线会将等待时间减少到大约11微秒。中断等待时间自动交易系统中的中断等待时间表示在服务器上接收数据包时中断所引起的等待时间。中断等待时间定义为从产生中断到服务中断源之间经过的时间。什么时候产生中断?中断是硬件或软件向处理器发出的信号,指示事件需要立即关注。处理器则通过挂起其当前活动,保存其状态并处理中断来做出响应。每当在NIC上接收到数据包时,都会发送一个中断来处理已加载到NIC接收缓冲区中的位。响应此中断所花费的时间不仅影响对新到达的有效负载的处理,还影响处理器上现有进程的延迟。Solarflare在2011年推出了“OpenOnload”,它实现了一种称为内核旁路的技术,该技术中,数据包的处理不是留给操作系统内核,而是留给用户空间本身。整个数据包被NIC直接映射到用户空间,并在那里进行处理。结果,完全避免了中断。

因此,加快了每个分组的处理速度。下图清楚地说明了内核绕过的优点。

应用程序延迟自动交易系统的应用程序延迟表示应用程序处理所花费的时间。这取决于几个数据包,分配给应用程序逻辑的处理,所涉及的计算的复杂性,编程效率等。通常,增加系统上的处理器数量将减少应用程序延迟。时钟频率增加也是如此。许多自动交易系统利用专用处理器内核来处理应用程序的基本元素,例如策略逻辑。这避免了由内核之间的进程切换引起的等待时间。同样,如果在自动交易系统中对策略进行编程时要牢记缓存大小和内存访问位置,那么将会有很多内存缓存命中,从而进一步降低了延迟。

为了促进这一点,许多系统使用非常低级的编程语言来优化针对处理器特定体系结构的代码。一些公司甚至使用完全可编程门阵列(FPGA)将复杂的计算刻录到硬件上。随着复杂性的增加,成本也随之增加,下图恰当地说明了这一点。

复杂程度高频算法交易的世界已经进入了激烈竞争的时代。随着每个参赛者采用新的驱逐比赛的方法,技术取得了突飞猛进的进步。与早期的对应算法相比,现代算法的交易体系结构非常复杂。因此,就时间和金钱而言,先进的自动交易系统的建造成本更高。

Standard 10GE network card

Low latency 10GE network card

FPGA

ASIC

Latency

20 microseconds + application time

5 microseconds + application time

3-5 microseconds

Sub microsecond latency

Ease of deployment

Trivial

Kernel driver installation

Retraining of programmers

Specialists

Man years effort to develop

Weeks

Months

2-3 man-years

2-3 man-years

建立一个完整的自动交易系统可能超出单个零售交易者的范围。对于希望探索算法交易方式的交易者,可以选择在市场上可以订阅的自动交易系统。交易者可以订阅这些自动化系统,并使用在这些系统上可供用户使用的算法交易策略。我们在博客“印度顶级算法交易平台”中重点介绍了一些流行的自动交易系统。知道编程的交易者可以在Python和R等编程平台上制定和回测其策略。建立自己的自动交易系统初学者可以学习建立自己的算法交易策略并在市场上获利。以下步骤可作为构建算法交易策略的粗略指导:构想或策略假设–提出一个您认为会在实时市场中获利的交易构想。这个想法可以基于您的市场观察,也可以从交易书籍,研究论文,交易博客,交易论坛或任何其他来源中借用。

获取所需的数据–要测试您的想法,您将需要历史数据。您可以从Google财务,Yahoo财务等网站或付费数据供应商处获取此数据策略编写–掌握数据后,就可以开始对策略进行编码,并可以使用Excel,Python或R编程等工具对其进行编码。回测策略–编码后,您需要测试您的交易想法是否能在历史数据上获得良好的回报。回测将涉及优化输入,设置利润目标和止损,头寸规模等。模拟交易您的策略–在回测步骤之后,您需要首先模拟交易您的策略。这意味着要在模拟市场状况的模拟器上测试您的策略。有一些经纪人为您的策略纸件交易提供算法交易平台。实施您的策略–如果在进行纸交易后该策略是有利可图的,您可以将其实施。您可以通过提供算法交易工具的合适经纪人开户。允许专业人士和零售交易者进行算法交易的交易所数量每年都在增长,并且越来越多的交易者正在转向算法交易。

格隆汇声明:文中观点均来自原作者,不代表格隆汇观点及立场。特别提醒,投资决策需建立在独立思考之上,本文内容仅供参考,不作为实际操作建议,交易风险自担。

相关阅读

评论