问题一(我的理解):Tick数据是不是指一个Order_Book上的数据只要有任何变化,即对其变化后生成的新Order_Book进行Copy,这份Copy就叫做Tick?

而Order_Book上的变化是不连续的,比如客户端连续收到下面3个Tick, Tick1到Tick2之间的时间段Order_Book应该是没有发生任何变化的。因为如果有变化的话,则会被完全分解,在Tick1和Tick2之间出现一个或更多的Tick才对。

问题二:哪些原因造成了A家的数据好,B家的数据不好这种现象?

AB软件商的数据不都是交易所提供的么。看到有人骂哪家的数据怎么怎么样骂的十分凶狠,想必他家的数据一定是非常糟糕了吧。你可以想像我一个外行人看来会觉得困惑......这就好像我朋友对我说街上有两家店在卖苹果手机,街头那家店的手机质量比街尾那家的质量好太多了。

董可人回答:

Tick 一般是指 Best Bid/Offer 的变化,就是 Order Book 上最优的买单和卖单发生的变化。题目中的例子,Tick 2 和 Tick 1 的不同就在于 Best Offer 的 size 变了(少了 25),所以产生了这一个 tick。

当然这个不等于说 Tick 1 和 Tick 2 之间没有别的 Order Book 的变化,它可以在除了 Best Bid/Offer 之外的地方变化,只不过这些事情在 Tick Data 上被滤掉了而已。

这种所谓的 Tick Data 其实就是一种对 Order Book Events 的 Down Sample 而已,它的前提假设是 Best Bid/Offer 是最重要的信息,以丢弃其它相对不如这个重要的信息为代价,缩减数据规模,让数据处理变的更容易。

而实际上,真正的 Limit Order Book Market 里,交易所发的原始数据是所有对 Order Book 的增、删、改+成交这四样,特别是改单一般都是占整体数据流的大部分。只不过要处理这种级别的数据,需要你懂一些数据结构的操作,能自己维护重建 Order Book。这个手艺一般做 Quant 的人都不会,要么就是写出来的代码实在太慢根本处理不了原始数据的规模,所以往往是为了简化起见就给他们 Tick Data,一般人就都能凑合着用了。

因为这种二手数据的本质,Tick Data 做的好不好当然是会有区别的。虽然说是需要记录每一个 Best Bid/Offer 的变化,但实际上这种数据反正也不用维护 Order Book 的一致性,因为各种技术问题少记了几个也不会有人说什么。甚至可能某家的数据处理程序还有 bug ,其中一些数据偷摸的错了一些,一般人也很难发现。这些都是可以用来比较数据质量的。

建议大家做 Quant 工作的,还是要注意编程基本功,有条件就自己直接处理原始数据。少一层二手过滤,就少一次出错的机会,离你发现新策略也就更近一步。

LIKE回答:

从交易所的数据发出到你的电脑上能看到发生了很多事,如何判断数据的好坏是一个复杂的事情。
作为曾经写过不少交易所的tick数据的处理程序的人,可以解释下为啥复杂:)

Tick Data本身并不神秘,就是交易所把每只股票(亦或是futures options)的active order book(就是你的order还存在在交易所里面,并且没有被撮合成交。)里面的买、卖的单的情况发给你,但是每个市场的规定都不同,举个栗子:

最真实的order book是这样的,一天的市场一开始的时候苹果股票的order book清空(这里不进行auction period的探讨):

1. 接着来了第一个卖家:1000@100 :

这时候交易所会发给你一个message,告诉你是苹果股票有人想以100块钱买1000股,那么这个order就先挂在了order book上。

2. 第二个卖家来了,他想卖得更高: 1000@101:

这时候交易所会发给你另一个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数据就是这么简单,市场上会重复这个过程。
但是比较麻烦的是:

  1. 很多时候tick的数据会以UDP发送,想象股市上如果交易非常活跃,那么数据量会非常大,UDP会存在丢包情况,如何处理。曾经遇到过很疯狂的tick update但是还要保持在x micro second的更新cache,可能要排序(看交易所protocol),以及发送出去给前端。
  2. 如何更快的处理实时的tick数据,否则数据量如此大,一旦延迟,以后就再也跟不上“实时”的节奏了,直到你的程序挂掉。
  3. 如何避免一些特殊情况造成bug,一旦一个tick没有算对,那么后面的tick table全是错的:)

同样,还有对tick的理解问题:不同市场的tick还有不同点,上面所说的是发达国家的股票市场,以实时情况推送(有新的order并且在tick的发送level以内,比如东京交易所只发送8个tick level,那么你看不到整个full tick的,因为可能会有100多个level,如果很多人交易的话)。

但是国内是多少个milli second截取一个快照(snapshot),然后发送给你,兴许是国内交易系统已经非常古老,跟不上IT的发展了。那么这个tick数据并不是“real time”的,你只知道“哦!在前100 millisecond和现在的tick 变化是这样的”,可能中间已经成交了数千单。

Keyword回答:

LIKE很详细的解释了国外的TickData和处理方法,而因为国内的交易所都只发送切片信息,而不是真实的Tick信息,所以还是有一定差别的,我来补充说下国内交易所一般所说的Tick数据。

国内交易所的order book的数据维护都是实时进行的,但是和国外交易所不同,并不是每个动作都会实时推送到市场上来,而是根据指定的时间间隔进行一次检查如果该时间段内有动作,则生成一次快照并且推送出来,数据的推送充其量只能算做OnTime,而不能叫做OnTick(被动触发还是主动检测对用户没有区别,此处为了方便说明而取前一种方式)

以切片间隔时间为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,丢失了不少信息。
此机制会产生一些值得注意的现象

1、信息的丢失
按上图流程所示,如果4500是当日的最低价,则可能会出现因为信息丢失而导致无法根据tick获取到当日最低成交价的情况,所以国内交易所都会单独推送一份当日最高最低价以弥补。

2、信息的延迟
如果是做时间间隔小于500ms的高频交易的话,因为无法及时获取市场信息,在这500ms内基本等于是在摸黑前进,增加了不少交易风险

来源:知乎

拓展阅读:

1.期货/股票数据大全查询(历史/实时/Tick/财务等)

2.市面上经典的量化交易策略都在这里了!(源码)

3.量化交易领域最重要的10本参考书推荐!

4.如何设计量化交易策略?

Tick 数据在技术上究竟是什么东西?相关推荐

  1. 渠道、数据、技术,谁才是网络信贷市场的决胜因素?

    近日,"让未来发生--第一财经技术与创新大会"在上海召开,"金融科技(Fin-tech)与区块链" 圆桌会议作为重头戏之一,陆金所.蚂蚁金服.飞贷金融科技.万向 ...

  2. 从ServerSwitch到SONiC Chassis:数据中心交换机技术的十年探索历程

    编者按:微软交换机操作系统开源项目SONiC (Software for Open Networking in the Cloud) 在微软Azure数据中心里已经大规模部署,但如何在高层的Chass ...

  3. 计算机数据交换技术发展的顺序,计算机网络数据交换技术的发展探析

    [摘要] 随着经济的快速发展和网络科技的普及,人们也越来越重视计算机网络技术的发展,未来社会离不开计算机网络技术的应用,加快对计算机网络数据交换技术的创新和发展就变得尤为重要,本文主要是对计算机网络数 ...

  4. 从技术上解读大数据的应用现状和开源未来

    来源:网络大数据 作者 | 韩锐. Lizy Kurian John.詹剑锋 摘要:近年来,随着大数据系统的快速发展,各式各样的开源基准测试集被开发出来,以评测和分析大数据系统并促进其技术改进.然而, ...

  5. eBay数据科学家李睿:自然语言处理在eBay的技术实践 数据 网络 类别 技术 分类器 阅读1593 近日,在飞马网主办的“FMI人工智能大数据高峰论坛”上,来自eBay的数据科学家李睿

    eBay数据科学家李睿:自然语言处理在eBay的技术实践 数据 网络 类别 技术 分类器 阅读1593  近日,在飞马网主办的"FMI人工智能&大数据高峰论坛"上,来自eB ...

  6. 海洋大数据关键技术及在灾害天气下船舶行为预测上的应用

    海洋大数据关键技术及在灾害天气下船舶行为预测上的应用 王冬海,卢峰,方晓蓉,郭刚 中电科海洋信息技术研究院有限公司,北京 100041 摘要:随着海洋数据量的爆炸式增长,海洋大数据受到越来越多的关注. ...

  7. 从技术上解读大数据的应用现状和开源未来! | 技术头条

    作者 | 韩锐. Lizy Kurian John.詹剑锋 责编 | 胡巍巍 近年来,随着大数据系统的快速发展,各式各样的开源基准测试集被开发出来,以评测和分析大数据系统并促进其技术改进.然而,迄今为 ...

  8. 数据分析师前景怎样?为什么企业每年都会在数据分析技术上“砸钱”?

    小编先从一张图片的数据(数据来源:BOSS直聘)和大家讲起. 对于以上的企业,想必大家并不陌生.以上企业涉足了物流.建筑.教育和电商等多个行业,他们都在以高薪诚聘数据分析师.同样的招聘信息还有很多,在 ...

  9. 一线技术管理者究竟在管什么事?

    来自:新亮笔记 概述 上篇文章<一个人被提拔,不仅仅是能力,而是信任> 中分享了两个点: 什么样的工程师,容易被提拔? 当被提拔到一线管理者后,你的初衷是什么? 这篇文章分享 一线技术管理 ...

最新文章

  1. 文巾解题 477. 汉明距离总和
  2. Python编程基础:第五十一节 将函数赋值给变量Assign Functions to Variables
  3. 量子计算机打破智子封锁,人类科技会被“智子”锁死?来看量子计算机如何打破技术壁垒...
  4. 小程序实现图片的放大预览
  5. 如何改造UE4用于赛璐璐3D卡渲?这里有一份日本大厂的实操分享
  6. 微信小程序之 SideBar(侧栏分类)
  7. IDEA工具开发必备设置-极大提高开发效率
  8. 周末直播丨细致入微 - OEM Grid Control 配置部署与使用
  9. C++之继承探究(六):虚函数和多态
  10. tnsnames.ora 监听配置文件详解
  11. 没有别家钱多,没有别家人多,小型培训机构招生怎么做?
  12. Ubuntu redmine 安装
  13. 中国银联全渠道系统商户接入 测试指引-银联网关支付产品
  14. html5shiv版本,用html5shiv.js解决ie低版本浏览器支持html5标签
  15. 51单片机学习板,超声波模块学习
  16. IDrawingDoc Interface 学习笔记
  17. 风控数据来源及分析技巧
  18. java是c语言吗_java和c语言的区别是什么
  19. 活动星投票国风正当红网络评选微信的投票方式线上免费投票
  20. 【tool】动态注释LOG_NDEBUG宏定义

热门文章

  1. HBA-蜜獾算法(Honey Badger Algorithm,HBA)(算法源码可复制)
  2. 回忆当年高考的一道数学证明题
  3. 什么叫做副作用的函数
  4. Vue.js 父子组件通信的十种方式;告诉世界前端也能做 AI;你可能不知道的14个JavaScript调试技巧...
  5. Barrier与多线程
  6. 学python如何不加班 杀手框架Pandas
  7. ppt精选111个毕业答辩模板
  8. 爱招飞软件开发工具与 Arduino 与 ESP32 的关系
  9. 如何提高神经网络的泛化能力?八大要点掌握
  10. 国庆的人山人海,生无可恋脸