交易系统实施过程中的时间失真问题[程序化老手]
模拟系统按照自身的时间来处理其他进程运行时所收集和储存的报价。进程手机的数据现在已经称为历史数据,进程记录的报价频率可以差别很大,这主要是因为以下两个因素:
1、原始进程为之收集报价的金融工具的个数。
2、运行原始进程的计算机系统的速度。
这两个因素的影响源于报价过程的本质以及大多数交易系统的实现方式。大多数系统中都包含一个客户端(报价收集和/或交易应用程序),该客户端接收报价以及服务器(提供报价的经纪运营自营商应用程序)信息。客户端常常是在“本地”运行的“本地”程序:即其运行的电脑硬件完全处于交易员的掌控之下。经纪自营商的服务器端几乎都是远程应用程序,这意味着客户必须通过远程连接,比如互联网,才能与服务器进行通信。为了接受报价,客户端程序常常需要与服务器程序之间建立如下的通信:
1、客户端向服务器发送一条或一系列包含以下内容的消息:
a、客户身份认证(由掌管服务器的经纪自营商提供给客户的)
b、请求报价的金融证券名称
2、服务器将会做出回应,确认客户端的消息。服务器的回应还将说明是否因为某些原因不允许客户端接收某些请求的报价。
3、服务器开始把报价源源不断的输出给客户端。报价流的输出通常采取“不同步”的方式,也就是说,只要有新的可用报价,服务器就会将它们发送给客户端。有些证券的报价频率比其他的证券高一些。例如,在经济信息发布前后的高波动阶段,欧元/美元汇率报价频率达到每秒30次也不算稀奇。然而与此同时,一些鲜为人知的股票可能在一个交易日只产出一次报价。因此在设计程序中接收报价的部分时,很重要的一点是记住报价的预期频率。
4、接下来经常会发生报价失真。所有报价一到客户端计算机就进行收集和处理,这是客户端的责任。此处有可能发生若干问题。在客服端的机器里,所有到来报价都会按它们的到达顺序放到一个队列里,最早的报价里处理器最近。我们可以将此队列看做是机场办理登记手续的队列。然而,与机场队列不同的是,此队列的长度或者容量往往是有限的;因而任何报价到来时发现队列已满,此报价会被丢掉。这里就产生了第一个问题,当客户端系统队列长度不同,而其他所有系统特征完全一样时,不同客户端的报价时间序列可能会彼此不同。
一旦报价已在队列中,系统会从队列中选取最早到达的报价进行处理;接着队列中所有的报价会挪动,使之更靠近处理引擎。就像前面讲的一样,报价的到达速度可能要比客户端的处理速度更快,这样报价会填满队列,从而导致系统丢弃新到达的报价,直到旧的报价处理完毕。
- 上一篇:交易策略收益的基本特征
- 下一篇:日内交易系统模型设计思路初探
相关文章
-
没有相关内容