真格量化

交易所视角下的套利指令撮合机制

2019-05-28  本文已影响1人  ce2a5fc7b1e4


部分投资者在交易中经常使用交易所套利指令,它们是组合交易的一种。本文将从交易所的角度简单介绍组合交易的撮合机制设计,让投资者加深对组合单的了解。

1 组合交易介绍

普通交易指令都是对单一合约发出买卖意向。组合交易是指对两个(或多个)合约进行买卖,买卖价格、买卖数量间保持意向关系的交易策略,能起到锁定价格风险、避免单腿风险等作用。在交易所端实现组合交易(例如使用交易所的套利指令),相比客户端(例如两腿分别委托),优势是能保证在两个(或多个)合约上同时成交。

2 基本概念介绍和说明

交易撮合、组合交易相关的概念很多,重要的内容介绍如下:

(一)普通交易撮合的基本概念

交易模型主要分为委托驱动模型(Order-Driven)和报价驱动模型(Quota-Driven)。其中,报价驱动模型是纯做市商模式的交易模型,指令包括报价与委托两类,同类指令之间不能成交,报价与委托之间可以成交。有时也将委托驱动称为“指令驱动”;而若将报价也看作一种指令,则两种模型都属于指令驱动(Instruction-Driven)。

在委托驱动模型中,总是从已排队的委托序列中获取最优先委托,按规则处理完成后再处理下一委托。这里的按规则处理,主要是对订单簿的平衡过程(Uncrossing)。订单簿是将所有未成交委托按照价格、时间等撮合规则要求,构建出的未成交委托(Open Order)结构。若订单簿中,出现买价格大于等于卖价格的情形,则可以成交,这种状态称为“不平衡“(Crossing)。委托驱动的处理,主要是对新委托平衡订单簿,完成订单簿平衡后,才能再处理下一委托。

(二) 在组合交易工具的订单簿中,价格优先顺序队列继续保持不变

对单腿买卖队列,买入价格越低对投资者越有利,卖出价格越高对投资者越有利。因此买队列按价格最高到最低排列(其中最高价格是最优价格),卖队列按价格最低到最高排列(其中最低价格是最优价格)。

价差组合是指,将买入合约A、卖出合约B;卖出合约A、买入合约B的指令,分别看作买入和卖出(A、B)的价差组合Z的指令。该价差组合Z=合约A-合约B,表示价格关系是合约A价格-合约B价格。价差组合Z的价格,可能出现>0、=0、<0的情况。

对价差组合的买卖队列,在买入价差委托的情况下,第一腿的买入价格越低,第二腿的卖出价格越高,对投资者越有利。此时由于委托价格=第一腿买入成交价-第二腿卖出成交价,因此组合委托价格越低,对投资者越有利。价差组合买队列按照价格最高到最低排列(其中最高价格是最优价格),卖队列按照价格最低到最高排列(其中最低价格是最优价格)。

事实上,只要组合交易工具的价格与其单腿合约价格是线性关系,即:

组合交易工具的价格 = F(单腿A价格,单腿B价格,单腿N价格)。其中F是线性函数。

那么,组合交易工具的订单簿就仍可采用价格由高到低顺序进行排序。这给出了组合交易工具的订单簿与单腿订单簿采用相同内存结构的理论基础。

(三) “派生订单”是建立跨订单簿成交的工具

为实现对多个合约的买卖,需要在单腿合约订单簿之间建立联系,实现跨订单簿成交。通常通过“派生订单”方法,在当前新委托所在订单簿内模拟出拟意向配对的跨订单簿订单。方法有两种:”Implied-In”将若干单腿订单虚拟成一个组合订单,与组合订单所在订单簿建立联通;”Implied-out”将组合订单包含的若干关联单腿订单,派生成一个个单腿订单,并与该单腿订单所在订单簿建立联通关系。

对“派生订单”的理解,有些认为是“订单”,有些认为不是。不同理解都有道理,重要的是在交流时能达成共识。本文中,在撮合子系统部分采用的理解是:“派生订单”不是订单,而是建立跨订单簿撮合的一种方法,使用该方法时,内存中出现了短暂虚拟出来的订单结构;在行情模块部分中,采用的理解是:“派生订单”可以是一种订单,它揭示了隐含的流动性。

(四)本文仅分析“价格优先、时间优先“下的组合交易

连续竞价的撮合算法主要有“价格优先、时间优先“,”按比例撮合“两种,是在不同市场环境下,两种公平性角度不同的算法族。两种算法族若需要支持组合交易,可以分别设计相应的规则;对跨两种算法族之间的组合交易,需求情形罕见,一般只在客户端解决。本文仅分析”价格优先、时间优先“的组合交易。

3 撮合子系统

“公平”的撮合规则

“公平”是撮合规则设计的首要原则。通常假定参与者进入场内市场时,其初始状态是合理的,然后在“公平”的市场规则下进行演绎。撮合算法就是这样的规则。对一个竞争过程(不论场内竞价、场外交易、拍卖等),“价格”体现了相同标称条件下的购买条件,“时间“体现了意向的表达先后,都是基础优先条件 。在撮合上,“价格优先、时间优先”是大多数情况下的公平竞价规则。

“公平“原则的程度在组合交易中需要调整。在组合交易中,一个新委托对手方,可以是单腿订单也可以是跨订单簿的组合订单,如果单腿订单的价格条件与跨订单簿成交的价格条件相同,此时,“时间优先“原则要求单腿订单和多个跨订单簿订单相互比较时间顺序,而多个订单时间顺序的情形很多,简单的“时间优先”无法解决判定成交原则。如A合约、B合约、AB价差组合,当前A合约委托的对手方,可以是另一个A合约委托、或B合约委托与一个AB价差组合委托,这三个委托的时间顺序可能有六种:

这时,在保证价格优先的前提下,需要进一步明确具体的优先顺序

,使市场明确知晓,不至于迷惑。只要规则公开透明、全市场知悉,那么投资者继续参与市场交易的行为,就是对规则的认可。这种“公平”,不如原来那么绝对,但也是参与者们共同同意的。支持组合交易,需要将“公平“程度调整为“规则公开透明、参与者同意和认可“。

“公平“原则的范围也需要调整。在组合交易中,撮合实现了跨订单簿成交,造成了”公平“原则从原来的单个订单簿,向外延伸到多个订单簿。普通交易可以仅对单合约委托按时间排序,组合交易需要将一揽子合约的委托统一按时间排序,且也要参与到与普通交易指令的排队中去。

高性能和高效率

撮合规则追求高性能和高效率。前文“关于技术对市场支持作用的探讨”中,曾提到,采用信息技术实现组织大规模市场的目标。为了支持大规模场内市场交易,追求高性能是撮合子系统的必然需要。

首先,可以结合实际功能需要,采取简洁的规则设计:组合腿数限定为2腿,可以避免处理高于两腿的更复杂情形;减少不必要的组合交易工具,如A、B、C三个合约,若已有价差组合AB、BC,则不再建立AC;分析是否一定需要驻留订单簿的组合订单,能否只支持IOC、FAK类型的组合订单等。

其次,规则可以在保证适当”公平“的基础上,偏向提高系统性能的需要。许多交易所都”禁止Implied-on-Implied“,这个概念有多种解释,涵义接近:派生订单是工具,不能看成是订单,不能再派生;派生工具的使用不能出现递归;成交对手方的链条上,不能出现不同类型的组合订单。这些不同的解释,说的都是Implied-on-Implied会产生跨组合类型之间的成交链:

如图,有时是在合约A的委托簿中产生这样的情形,即单纯地在派生订单上产生派生;有时可能是两个派生订单,在合约B或者C的委托簿中成为对手方进行成交。部分情形过于复杂,容易产生逻辑陷阱。且频繁使用派生订单也会增大系统性能开销。当然,支持Implied-on-Implied派生,能提供更多成交机会,也可能产生更优的价格。但是如果把组合交易看作是对普通交易的支持和补充,就不应过度使用。在考虑公平性的时候,仅针对合约、以及与合约直接关联的组合交易工具作为考察范围,一般也就没有必要采用Implied-on-Implied的做法。

按照各类委托的比例(订单分布结构)进行性能优化

规则设计完成后,在技术实现过程中,还要采用各种性能优化方法。最重要的是根据委托进入系统后,各种可能行为的比例,来设计使用派生订单工具。

那么,使用派生订单的设计,可以有两种:

1、方法一:预先派生订单,等待委托来成交。处理步骤如下:

对当前新委托,在订单簿内比较;若价格能成交,进行成交处理;然后进行派生处理(基于本腿的派生、外部派生到本腿两部分;若本方向没有余单量,则仅对手方方向;若本方向有余单量,则本方向也需要重新派生)。

若价格不能成交,但等于或优于原最优价格,放入订单簿,进行派生处理(基于本腿的派生,仅本方向)。

若价格不能成交,也不优于原最优价格,放入订单簿。

2、方法二:新委托来了以后,再根据情况,使用派生手段。

当前新委托价格比本方最优价格更优。先从外部派生到本腿的对手方,然后判断是否能成交,并进行成交处理,完成后,剩余单量挂单,并消除所有未成交派生订单。

当前新委托价格不优于本方最优价格,直接挂入订单簿。

最后,撮合子系统中的“派生订单“手段,用于实现成交配对,具体的拆单处理过程,需要逐笔完成,要求”派生“的颗粒度较细,但也需要考虑优化步骤。

4 行情子系统与模块

(一) 以“以建立市场透明度,揭示流动性和成交定价”为主要目标

满足市场实际需要,维护市场公平的同时,建立市场透明度是行情子系统的主要目标。具体体现在:揭示市场流动性状况、揭示最新成交定价两个方面。对支持组合交易,行情子系统设计的原则有:

1、根据需要,揭示组合交易工具的流动性,便于广大市场参与者的理解和参与。组合交易是对市场交易功能的补充,不应要求参与者对组合交易理解很深入才能正常交易。在功能设计上,需要充分考虑这一原则。首先,组合订单簿中的流动性可以单独发布。其次,从便于单腿订单交易的角度,是否需要跨订单簿揭示组合订单流动性,如何设计具体的规则,应仔细考虑。海外交易所一般将最优价位上的流动性揭示出来,具体有不同做法。

2、揭示最新成交定价,内容上有单腿行情和组合行情两部分。例如,大商所目前将组合订单相互成交时的单腿定价通过单腿行情进行发布,这种做法将单腿定价也作为成交定价的趋势进行揭示,要求单腿定价规则的合理性与市场自行交易形成的价格合理性相当。

3、具体设计应当结合系统性能考虑,不过于复杂。行情子系统同样需要高效,应当避免过于复杂,影响技术系统性能。

对于大商所和郑商所的组合交易指令,目前其撮合系统将限价指令和套利指令分为两个队列(这让投资者多了一个排队的地方),如果限价指令买卖价格符合成交原则,套利指令不符合成交原则,则限价指令成交,套利指令不成交。反之依然。如果限价指令的价格和套利指令的价差都满足成交条件,则撮合系统将根据限价指令和套利指令申报的时间先后,按照时间优先的原则成交。

与单个合约类似,套利指令也遵循“价格”(价差)优先原则,套利指令买单价差由大到小排序,如-100,-110,-120••••••,套利指令卖单价差由小到大排序-95 ,-90,-80•••••,排在前面将优先成交。

套利指令成交时,撮合系统将保证套利指令中两个合约同时成交,且数量相等。另外,套利指令与套利指令也可以成交。由于套利指令队列排队一般不如单腿的限价指令队列拥挤,投资者可以考虑利用套利组合指令的优势来改进交易策略。

— — — — — — E N D — — — — — —

往期文章:

Numpy处理tick级别数据技巧

真正赚钱的期权策略曲线是这样的

多品种历史波动率计算

如何实现全市场自动盯盘

AI是怎样看懂研报的

真格量化策略debug秘籍

真格量化对接实盘交易

常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法

如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

活用订单类型规避频繁撤单风险

真格量化回测撮合机制简介

如何调用外部数据

如何处理回测与实盘差别

如何利用趋势必然终结获利

常见量化策略介绍

期权交易“七宗罪”

波动率交易介绍

推高波动率的因素

波动率的预测之道

趋势交易面临挑战

如何构建知识图谱

机器学习就是现代统计学

AI技术在金融行业的应用

如何避免模型过拟合

低延迟交易介绍

架构设计中的编程范式

真格量化可访问:

https://quant.pobo.net.cn

真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887

上一篇 下一篇

猜你喜欢

热点阅读