[交易所数据几秒出来]教你看懂交易所tick数据
作者:exileApp,译者: 一通_1983,(https://xueqiu.com/7060676637/67698297)
从证券交易所的统计数据收到到你的笔记本电脑上要看见出现了许多事,怎样推论统计数据的优劣是两个繁杂的事。
Tick 通常是指 Best Bid/Offer 的变动,是 Order Book 上最优化的埋单和几近出现的变动。
简而言之的 Tick Data 只不过是一类对 Order Book Events 的 Down Sample 罢了,它的大前提假定是 Best Bid/Offer 是最关键的关键信息,以弃置其他相较比不上那个关键的关键信息为付出,削减统计数据体量,让统计信息处置变的更容易。
Tick Data这类并不谜样,是证券交易所把每只优先股(或期货市场)的active order book(是你的order还存有在证券交易所里头,因此没有被穿针引线成交量。)里头的买、卖的单的情形someone,但每一消费市场的明确规定都相同,
举个范例:最真实世界的order book是这种的,六天的消费市场一已经开始的这时候苹果公司优先股的order book移走(这儿不展开auction period的深入探讨):
1. 接著来了第三个商家:1000@100 :
这时证券交易所会someone两个message,说你是苹果公司优先股没人与以100分钱买1000股,所以那个order就先挂在了order book上。
2. 第三个商家来了,他想卖得更高: 1000@101:
这时证券交易所会someone另两个message,说你是苹果公司优先股没人卖的价格便宜你差,只好次序在上面。
3. 这边的第三个商家懊悔了,cancel了他的order:1000@100 撤销了,所以证券交易所会有message说你,但你须要他们程式设计处置此种remove掉两个tick的情形:
4. 终于有买家来了... 500@90 , 那个价格是不会成交量的,因为买家低于现在的最佳卖价:101,所以order book里头会继续存着那个order,同时会发送两个tick说消费市场上的其他人:有埋单了:
5. 继续,接著有一位买家以101分钱买入1000股,等于要把目前的best offer 1000@101给match - 穿针引线了,所以你是不会收到那个最新的bid: 101@1000 的,因为它会进入matching engine的瞬间跟对面的best offer 穿针引线了,tick table的两个规则: bid offer 永远不会cross,否则要么是统计数据商的bug,要么是证券交易所的bug。现在,你只会收到两个说你delete the best offer的message,所以tick table长这种:
Tick统计数据是这么简单,消费市场上会重复那个过程。
以上详细的解释了国外的TickData和处置方法,而因为国内的证券交易所都只发送切片关键信息,而不是真实世界的Tick关键信息,所以还是有一定差别的,来补充说下国内证券交易所通常所说的Tick统计数据。
国 内证券交易所的order book的统计数据维护是实时展开的,但和国外证券交易所相同,并不是每一动作都会实时推送到消费市场上来,而是根据指定的时间间隔展开一次检查,如果该时间段内有 动作,则生成一次快照因此推送出,统计数据的推送充其量只能算做OnTime,而不能叫做OnTick(被动触发还是主动检测对用户没有区别,此处为了方便 说明而取前一类方式),
那个tick统计数据并不是real time的,你只知道哦!在前100 millisecond和现在的tick 变动是这种的,可能中间已经成交量了数千单。
以切片时间为500ms的五档行情举例,如下图:
在11时05分03秒200毫秒的这时候,没人以4500的价格卖出3手,系统将其价格与买一价展开匹配,发现符合穿针引线条件,则穿针引线之,以价格4500成交量3手,最新成交量价为4500,总成交量量为3手,而此时因为未到切片时间,所以不会推送统计数据出。
在11时05分03秒300毫秒,又没人以价格5000买入5手并成交量,最新成交量价变为5000,总成交量量为8手,此时仍未到切片时间,仍不会推送统计数据。
一 直等到11时05分03秒500毫秒,系统推论在11:05:03.000-10:05:03.500那个时间段内有统计数据变动,则将盘口的展开买卖关键信息以及汇 总的成交量关键信息——最新成交量价5000,总成交量量8手——生成一份快照,并推送出,这是我们能够接收到的Tick Data。
我们可以发现,因为是一段时间内的交易关键信息汇总,所以我们只能得到最新的成交量价和总的成交量量,相比每次变动都会及时推送的Tick Data,丢失了不少关键信息。
此机制会产生一些值得注意的现象:
一、关键信息的丢失按上图流程所示,如果4500是当日的最低价,则可能会出现因为关键信息丢失而导致无法根据tick获取到当日最低成交量价的情形,所以国内证券交易所都会单独推送一份当日最高最低价以弥补。
二、关键信息的延迟如果是做时间间隔小于500ms的高频交易的话,因为无法及时获取消费市场关键信息,在这500ms内基本等只好在摸黑前进,增加了不少交易风险。
常见问题解疑
什么是快照统计数据与证券交易所统计数据细节?打两个比喻,交易统计数据可以想象为河流,快照是那个河流在某个横截面的统计数据。对于国外的高频tick统计数据,有完整的order统计数据的过程,因此你可以利用这些order统计数据来复原快照统计数据。
国内的证券交易所理论上讲都是快照统计数据(像期货市场是1秒2tick)。典型的统计数据字段包括开盘价、最高价、最低价、最新价、成交量量,成交量额这儿的最高(低)价就从已经开始到现在成交量出现过的最高(低)价,假定你有详细的每笔成交量的明细,只不过那个统计数据是可以用max(min)推算的,所以国外的tick统计数据里头通常是没有那个字段的。
同样的成交量量和成交量额代表的意思不是那个时刻的成交量量和成交量额而是那个时刻已经开始到现在的累计成交量额和成交量量。从理论上讲:T时刻的累计成交量量减去T-1时刻的累计成交量量是T时刻的成交量量,但这儿的"成交量量"只不过是T-1到T时刻的汇总成交量量,只不过是有许多笔组成的。
期货市场的level2相比level1只是频率和报价深度上有些许区别。更有意义的是优先股level2统计数据。
从表结构来看优先股level2主要有三块内容:快照、逐笔成交量和挂单快照类似前述的level1的快照 不过是把5档换成了10档另外还有一些比如所有挂单和数量等字段,深交所和上交所有略微差异。
逐笔成交量就类似国外的tick统计数据,确实是出现过的真正的每笔成交量情形,时间戳精细到10ms。但问题在于那个统计数据也是3s一次收到来,someone0-3s这期间的tick统计数据而不是实时发送给你,因此这儿并不能把他定义为真正的tick统计数据。
Level2 里头的挂单只有展开买卖一档的Top50并不是全部挂单,另外理论上统计数据是纪录这些挂单的增删(挂单没有改一说),但从实际统计数据来看,证券交易所的统计数据并不是增 量增量增量此种方式发送,而是夹杂着全量挂单和增量统计数据的方式,所以也不是完整的挂单动作。可以用这系列推算挂单情形但挂单变动情形只是 sometiems能推算出。
什么是好的统计数据和为啥统计数据有差异?既然都是证券交易所发送出的,为什么会有统计数据的差异?证券交易所比喻成两个电视台,他不断的给客户发送信号。绝大多数客户只装了电视机,收看电视。而统计数据提供商装的是录像机须要录统计数据,然后把录像带卖给客户。
典型的有几类原因导致统计数据的差异;
1. 统计数据记录方式比如拿优先股的Level1的统计数据为例,证券交易所发布两个dbf文件,记录着所有证券最新的状态统计数据,dbf文件是不断的自动刷新的。
所以统计数据提供商或者记录统计数据的人须要做的这时候是每隔一段时间读取那个文件,然后把所有的统计数据放入统计数据库,但因为证券交易所更新统计数据的频率不是两个唯一值,所以为了不错过统计数据,最好的办法是你读取的频率高于他更新的频率。
这种问题就来了,因为你读取许多如果每次都记录下来一来统计数据很大,二来许多重复统计数据。所以大家往往使用的办法是当这条统计数据有变动的这时候我才放入统计数据库。
因为有这种一条规则,所以你看见的一些非活跃成交量的证券统计数据量会少于活跃成交量的证券,远期的期货市场统计数据少于近期的,时间戳相同步等等,你以为是统计数据问题,只不过不然。
2. 运维问题那个是真正的统计数据提供商或者记录统计数据的问题,比如某些原因如断网或者程序错误等造成了一大段的统计数据丢失。
按照前面所述的统计数据机制,只不过对于Level1统计数据T和T+1时刻是没有任何逻辑关联的,假定缺失了你不可能从统计数据这类发现,因此大量的缺失只不过都是这些原因造成的,而且无法弥补!就好比早期的电视录像带很不清晰,但过去已经过去你已经无法补救。
3. 程序导致的统计数据错误我遇到过一些比较异常的错误,比如说某些类型优先股的价格出现异常,空等等,绝大部分是因为录统计数据的程序的错误造成的,为什么会出现?反 正理由也许多,你记住会出现就可以了。少部分是因为证券交易所的问题,比如说证券交易所曾经把Level2统计数据的开盘价发错了.......
(本文编辑自知乎:Like,Bruce Ashbey,赵人希)