我们今天讲整个交易的缘起——集合竞价。
在前面跟大家介绍了连续竞价的时候,直接说了买家卖家不断地发送自己买卖意愿的时候,怎么样具体的形成了后续的价格,为什么会有价格分歧,怎么样形成波动和趋势。今天我们对对上述的概念和现象做进一步的细节上的讲解。
我们要具有连续竞价的前提是得先生成一个集合竞价的状态,这就像在拍卖了里头,首先得有一个起拍价,得明确我这个拍卖的起拍价格和我报价的最小间隔单位,我才可以进行进一步的拍卖的报价。
所以我们需要用集合竞价的结果,来生成连续竞价的前提。
什么是集合竞价呢?
在交易开始的时候,我给定一段的时间,买卖双方都可以把自己真实的交易意愿,在这个时间段之内报上来。
你报的时候,不是说你报了我就进行撮合,我有一个时间段,在这个时间时间段里头你都可以来报,有些时间段里头是既可以报也可以撤回去。有些时间段里头还可以报,但是不能撤回去了。
什么叫买卖意愿呢?
针对这个给定的品种,你想买还是想卖?是什么样的价格?多少数量?报完之后,到了一个给定的时间节点,就不能撤回了,就可以进行集合竞价的撮合了。
那撮合的原则是什么?
如果最低的卖价和最高的买价之间能有一种交叉,也就是成交可行的话,那我就设定一个最优的价格。何为最优?可以生成最大成交量的那个价格叫做最优,它是用一种迭代试算的算法找到的。
给大家举个例子。
这个表的第一列报价,第二列数量,第三列方向,大家可以看看前四行都是卖家的报单。第一个人10块钱两手,第二个人9.9五手,第三个人9.8三手,第四个人9.5卖10手,卖的最多,报的价最便宜的是9.5。
卖家在报价的时候,买家是不知道的,双方都是根据之前历史上,尤其是头一天收盘时形成的结果,或者是收盘后形成的结算价或者收盘价,以及之前一段时间通过技术分析来研判出来的历史价格的一些走势和信息,以及我们自己认为的对价格走势有影响的宏观消息,标的特有的消息等等,我对今天的价格以及我愿意承担的价格,进行一个综合的研判。
那买家也开始报价,买家不知道卖家报了多少,第一个人是9.6 两手,第二个人说9.9五手,第三个人买的最多,11块钱七手。
那这个时候大家先看看这个买卖双方的价格有没有交叉,卖的最便宜的价格是9.5,买的最便宜的价格是9.6,这是可以成交的。买的最贵的价格是11块钱,当然是更能够成交的,那应该多少钱成交呢?
比如说我们就设定以9.5和9.6中间的价格9.55进行成交。
这个时候大家注意,因为9.55比9.5的价格要更高,那9.5的这个十手就卖不掉了。那么9.5上面的价格是可以卖的。但是大家注意这个买的人是9.6,9.6是可以在9.55之上愿意买的。但是9.8、9.9的这些价格觉得9.55卖的太便宜了,他卖不掉。所以这个时候9.5的这个可以卖掉,9.5以上的这些卖单卖不掉。
那买单,我可以用9.6来买9.5的这十手,9.9也给你买了9.5的这十手,最终定的价格都是9.55这个价格。但是9.5的这个卖单的十手,我就可以被9.6、9.9、11的这个二、五、七分别来进行消化。因为十一卖出的价更高,应该是先给报11块的这七手买单给成交了,剩下的十里头减去七还有三手,给9.9的成交了。
最后实际的成交情况是,我以9.55成交,实际愿意卖9.5的这个人,因为他比9.55低,他这十手就卖掉了,成交价就是9.55,他卖了十手,得了95.5块钱。
而这里头11块钱和9.9块的这两个,11块钱是全部成交,最后成交价其实是9.55,优先成交,成交了七手。九块九的这五手里头部分成交,成交了三手,成交价都是九9.55。那这个时候是定了是十手。
但是十手是不是最优成交的数量呢?
我们可以把价格继续提高,比如提到9.8。
提到9.8的时候,9.8卖的这三手也能卖出去了。那9.5当然愿意以更高的价格卖。从买家的角度来说,9.9、11块钱都是高于9.8的卖价的,那我当然愿意买,这个我加起来有十二手的买单。所以这个时候在9.8还是可以成交的。
那成交的单子就是11块钱,照样是七手全部成交,他拿了9.5这十手买单里的七手。然后9.9的买单他的五手里头,再从前面的三手里头拿,拿完之后还有两手,可以从9.8的卖单里头去拿。
所以当价格定到9.8的时候,这个成交变成了十二手。
那还能能更高吗?当然可以,还可以定到9.9。
这个时候买单9.9、11块的十二手全部成交了。卖的话9.5卖掉了10手,9.8卖了两手,但是9.6的这个买不了,所以到9.9的时候卖的更多了,但是买的这块儿也就是十二手,没有新的这个买单了,所以最优的量就是十二手。
那这个最优的价定到9.8就比较合适了。
所以说因为9.8他愿意卖,但是如果我们要考虑公允的话,可以在9.9的这个最便宜的买单和9.8这个卖单之间取一个中间价,卖到9.85元。
那我卖9.85元的话,对于买家和卖家来说,成交量都是十二手,最大的成交量。但是对卖家来说更有利一点,这样的话就通过一种试算的方式,找到了最大成交量的成交价格。
如果说这个例子听不懂,没关系,这里主要是给大家找找感觉。一开始我们说开盘集合竞价的时候,你把这些单子报上去之后,他怎么样通过一种算法的方式找到可以撮合最大成交量的那个成交价格。
这个时候我希望大家你可以不理解这个算法,也可以忘掉这个算法,但你要记住的是通过一段时间的集合的竞价,形成了一个结果,就是撮合完的这个结果。这个时候已经撮合的订单就成交了,这个价就叫做开盘价。开盘成交量就是刚才我撮合出来这12手。
没成交的怎么办?
注意没成交的就是连续竞价的那个源头。他就形成了一个在集合竞价时段有成交意愿的这些报单,但是他没能在集合竞价的时候成交,那我就放在那儿,随着连续竞价进行不断的撮合。
那么下面我们就有了4个概念:
第一个订单流;
订单流听起来很时髦,实际上很简单。就是你给定一个时间点,我们叫时间戳,新增的买卖意愿,你下了单我下了单,任何人下的单,他都叫订单流,他就汇聚到了交易所里面。
这个订单流有一个时间戳,标识了他什么时候下的单,标识了他的买卖意愿,多少钱?多少量,这就叫订单流。
订单流就像流水一样,源源不断的往交易所里面流入。流入进去之后,一个单子一个单子收过来,我就朝我的存量的,刚才集合竞价形成的内一堆买卖意愿进行匹配。
第二个订单簿;
特定时间戳上,沉淀的买卖意愿就叫订单簿。
这个订单簿就是在一个给定的时点上,我沉淀出来的买卖意愿,当我订单流进来的时候,我就跟我存量的订单簿进行匹配。如果匹配未果,我这个订单流就夹在了那个订单簿上,更新一下订单博的状态。
当然有一些下单指令比较特殊,说全部成交或撤销,或者说部分成交或撤销。如果说没能产生可就撤了。但是这里不考虑这种特殊指令,我订单下进来之后,如果没能成交我就挂那儿了,更新订单簿。
如果是说能成交,我就进行削减,买卖匹配根据成交撮合的规则是时间优先、价格优先等等,撮合完之后更新订单簿的状态,形成新的订单簿。
所以说订单簿它是有时间概念的,他是在特定的时间戳上沉淀的一种买卖意愿。
第三个成交记录;
那么相对应的,如果是说订单流和这个沉淀的订单簿可以匹配成功,这个匹配的结果就叫做成交记录。
也就是说我之前沉淀的那个买卖意愿终于被新增的订单流给匹配了。我新发送的这个人而言,我的买卖意愿被之前一个存量的买卖意愿给匹配了。因为时间是离散的,他是流水一样不断地动态匹配的。
已经成交了的话,不管是前面那个发错买卖意愿,形成订单簿的人,还是说对新发送买卖意愿,形成订单流的人,他们都收到了一个成交记录:相同的时间,相同的价格、相同的数量,只是买卖方向不一样,这就是成交记录。
第四个什么叫做行情;
如果理解了刚才像买大白菜一样,不断的撮合成交的过程。那行情就是对成交记录和订单簿的一个抽样展示。
由于数据管理的一些规则,由于行情软件交易所的信息系统的性能,他不是说对所有的数据都给你予以展示。所以说我们看到行情是个抽样的结果。
通常来说可以认为500毫秒,就是一个展示行情的一个比较小的极限,那我把每500毫秒的成交记录汇总展示出来,我们把这个通常叫做Tick数据。
大家注意看我们这张图。
它给的是2016年8月22日这5分钟里的一个分时的Tick图,是rab的连续合约。大家可以看,在很小的时间段之内,这个价格是不变的。所以这个Tick在特定的时间段里头,它是一个连续的横线。这是对于分时Tick,相对来说我们可以获取的最精细行情的一个展示。
行情是什么?行情就是对成交记录的抽样展示。
理解了这些数据生成的机理,我们在交易的时候看到这个盘面的时候。我们就不仅知其然,还知其所以。
那么这里我对股票和期货行情进行一个简介:
股票行情
Level1:每500毫秒,汇总一次成交记录,作为伪Tick数据,平均每6秒,更新一次订单簿,展示五档行情。
Level2:展示10毫秒级别的成交数据,平均每3秒更新一次订单簿,展示10档行情。
虽然说随着证券交易组的净化,这个level2 的行情也在不断的演进。比如深交所已经开始提供所谓的全息盘口,把订单簿的所有档的报价都给你展示出来,甚至所有挡上面所有的队列都给展示出来。成交数据呢,尽可能的给你一个高精度的时间记录数据。
期货行情
平均500毫秒汇总一次成交记录,作为伪Tick数据,并更新订单簿,展示一档行情。
那对期货行情而言,我们每500毫秒形成一次成交之后,这个成交明细里就可以看到差不多一秒钟就更新两笔数据。由于数据到达本地服务器的时间有一些摇摆,所以一般来说在同一个秒时间戳上,有时候是两笔行情,有时候是三笔行情。
那当我们有了详细的Tick数据之后,我们就可以对Tick数据,或者Tick行情进行进一步的分析。