基于对国内外交易所组合策略订单的应用情况分析和研究,通过向知名交易所咨询,从最简单的场景推导出发,定义2-4腿组合策略合约的规则。根据规则将两腿以上的组合订单拆分为多条推导链,以推导链为关联条件,形成覆盖所有关联的树型结构。针对组合订单复杂的推导树型结构提出一种规则统一、支持并行、便于扩展的组合策略订单的关键搜索算法。此算法依据组合订单的价格特性进行优化,避免对搜索树的全量搜索。同时,依据理论实现POC程序,得出具体场景的性能测试数据,在此基础上提出更长远的研究方向和目标。
1 引言
随着资本市场的发展,衍生品的品种也越来越繁多,衍生品交易也变得活跃,各类衍生品组合交易也随之诞生。组合策略订单是指投资者同时买入或者卖出按类型、数量、比例等规则组合的多个普通订单。为了顺应组合衍生品组合交易的飞速发展、提高衍生品市场的流动性、降低盲目进行组合交易带来的市场瞬间冲击。交易所需要增加组合策略订单功能。
通常意义下有组合策略订单有两种:交易所预设的标准组合订单和用户自定义的组合订单。纳斯达克、芝加哥交易所集团、欧洲期货交易所、港交所、泛欧交易所和大商所提供交易所标准的组合策略订单,纳斯达克、芝加哥交易所集团、欧洲期货交易所和港交所支持用户自定义组合策略订单,但用户自定义组合订单需要符合交易所自定义组合订单规则。除大商所只支持两腿的组合策略订单之外,其他交易所都支持两腿以上的组合策略订单。从上述交易所公开的信息可以归纳出两腿的组合策略订单最多支持两次传导,两腿以上的只支持一次传导,各交易所的具体情况如表1所示。
组合策略订单既能对不活跃的标的提供流动性,又能让投资者确保执行既定的投资策略,规避因无法同时成交导致的单边风险暴露,尤其在期权策略交易中显得非常重要。组合策略订单的交易中指令有IOC和限价模式。组合策略订单的限价采用净价交易方式。
期权交易设有独立的组合策略订单簿,组合策略订单报入时,该委托订单即可与组合策略订单簿中的报价撮合成交,又可与一般普通委托簿的委托或报价成交。系统将根据规则决定组合策略订单与组合订单成交还是与普通订单成交,并确定组合策略订单的成交价,计算出组合策略订单的每个普通订单成交价。
由此我们会产生一些疑问,如组合订单怎么与普通订单关联成交?选择哪个组合订单进行关联成交?如何确定成交的组合订单与普通订单的价格和数量?多个组合订单同时推导会产生哪些问题?引入组合订单后带来的性能影响?本项目将对这些问题进行深入研究。
2 研究计划
研究适合国内的期权交易规则的需求(2017年3-6月)。
研究整体解决方案(2017年7-8月)。
POC原型开发(2017年9-10月)。
研究报告整理(2017年10-11月)。
3 研究方法
3.1 研究目标
在连续竞价期间,寻找一种搜索算法规则统一,支持并行计算,可继续扩展的搜索算法,并能解决2-4腿组合订单与普通订单的关联成交问题。
3.2 基本概念定义
撮合规则:价格优先;时间优先。
组合策略订单搜索的必要条件:所有普通订单和组合策略订单能确定时间先后顺序。限制关系特性(详细定义在3.4节描述)组合订单的数量为1。确定组合策略合约规则,详细规则在下文“组合策略合约规则”中描述,本次研究的规则为牛市价差、熊市价差、看涨蝶式、看跌蝶式、看涨鹰式价差,看跌鹰式价差。
普通合约:上交所的标准化期权合约。
普通订单:普通合约的委买或委卖订单,由图1可见,其属性有数量,价格,交易方向。
组合策略合约规则:规定组合策略合约由几个普通合约组成,每个普通合约的数量,购还是沽,多还是空等,普通合约间行权价高低,到期日期先后的关系。还需要规定组合订单与组合订单直接成交,各腿的成交价格计算方法,确保各腿的成交价格不会偏离实际成交价格太远。
组合策略合约:按照组合策略合约规则形成的虚拟合约。市场存在此订单薄,但是不存在具体的标的,如果开仓会分解成对应的普通合约开仓,同理,平仓也一样。(下文的组合策略合约简称为组合合约)
组合策略订单:组合策略合约的委买或委卖订单,由图2可见,其属性有数量,价格,交易方向,相关联的普通订单的交易方向,普通订单价格计算公式,普通订单数量比例关系。前三个是组合订单作为实体特性的属性,后三个是组合订单作为关系特性的属性。因为组合策略订单具有双重特性,所以它即可作为实体又可作为关系。(下文的组合策略订单简称为组合订单)
腿:组合合约规定的普通合约为组合合约的腿。两腿以上的组合合约简称为多腿合约,其订单简称为多腿订单。组合合约的各条腿的数量比例称为腿的比例,例:三腿的蝶式组合策略合约(A,B,C)的数量比例是1:2:1。
组合订单报价:根据组合合约规则确定的合约的多空关系进行公式推导。组合卖单的净报价为所有多头合约报价之和减去所有空头合约报价;组合卖单的净报价为所有空头合约报价之和减去所有多头合约报价。净价报价数值可能为正值也可能为负。如果为正值则买入组合订单付出现金,卖出组合订单得到现金;如果为负值则买入组合订单得到现金,卖出组合订单付出现金。同理,组合订单和组合订单直接成交根据此计算公式可以反向计算出组合订单每条腿的成交价。
推导链:最后报入的普通订单或组合订单作为开始推导的推导根,以作为关系的组合订单为推导链,结合所有推导链构成树型结构。图3为三腿蝶式价差组合订单一种情况推导链的示意图。
推导链的时间关系:推导链上所有实际组合订单和普通订单的组合,按降序排列。时间比较时先看第一个时间戳,数值小的优先,如果数值一样则比较第二个,依次类推,推导链的长度短的优于长度长的。
3.3 组合订单的实体与关系二象性
由3.2节的组合策略订单概念定义知道组合策略订单具有双重特性,它即可作为实体又可作为关系。但实体和关系不能同时发生作用,所以组合订单存在实体和关系二象性,就像光的波粒二象性。
3.3.1 组合订单的实体特性
数量,价格,交易方向三个属性发挥作用,组合订单当成一个实体处理,无论是与直接委托的组合订单还是普通订单推导出的组合订单,都只能与其对手方进行成交,组合订单的成交价根据正常的撮合决定,组合内对应的普通订单根据组合策略合约规则和其标的普通订单的最近成交价确定。如果所有组合订单都作为实体,则组合订单只能与组合订单进行成交。
3.3.2 组合订单的关系特性
从图4中可知,组合订单通过关系特性与普通订单产生关联。普通订单的交易方向,普通订单价格计算公式,普通订单数量比例关系属性发挥作用,组合订单必须推导成普通订单或其他实体组合订单参与成交,组合订单的每个腿都能直接成交,成交价由撮合决定。
组合订单与普通订单的关联复杂程度由作为关系特性组合订单的数量决定。推导链的关系特性组合订单数量越大,关联越复杂。表2显示内容为本次研究的关系特性组合订单数量。
3.3.3 关系组合订单推导链拆分
关系组合订单的推导链拆分步奏:
1)组合订单拆分为所有的逻辑组合集合
2)判断逻辑组合集合元素是否存在真实基础订单和组合订单,存在的则放入真实组合集合。
3)真实组合集合中取元素进行组合,能组成和组合订单一样的结构,得出真实推导链集合。
两腿组合订单(仅限于牛市、熊市价差或其他腿比例为1:1的两腿组合订单)的天生优势在于它只有两个关联合约,且数量为1:1。如果把它当作关系使用,推导出的另一条腿一定为普通订单,无法与其他作为实体的组合订单产生关系。而使用多腿组合订单关系特性,另外的两条或三条腿可能会与其他的作为实体的组合订单发生关联。多腿组合订单比两腿组合订单复杂就在于推导关系更为复杂。以看涨鹰式价差组合订单(A,B,C,D)bid,同到期日,数量关系比例为1:1:1:1,全部为认购期权,交易方向为多空空多,行权价逐个升高。
1)找出所有逻辑组合
(A),(B),(C),(D),(A,B),(A,C),(A,D),(B,C),(B,D),(C,D)
(A,B,C),(A,B,D),(A,C,D),(B,C,D),(A,B,C,D)
2)找出所有真实的基础或组合订单
(A)bid,(B)ask,(C)bid,(D)ask,(A,B)bid,(A,C)bid,
(B,D)ask,(C,D)ask,(A,B,C,D)bid
3)将所有实际基础或组合订单按照组合订单的数量进行组合
a.(A,B,C,D)bid*1
b.(A)bid*1,(B)ask*1,(C)bid*1,(D)ask*1
c.(A,B)bid*1,(C,D)ask*1
d.(A,C)bid*1,(B,D)ask*1
e.(A)bid*1,(B)ask*1,(C,D)ask*1
f.(A)bid*1,(C)ask*1,(B,D)ask*1
g.(D)bid*1,(B)ask*1,(A,C)bid*1
h.(D)bid*1,(C)ask*1,(A,B)bid*1
在本次研究范围限定的组合策略合约规定中,(A,B,C,D)bid组合订单关系特性的所有推导链如图5所示。
在本次研究范围限定的组合策略合约规定中,(A)bid普通订单通过所有与之管理的关系特性组合订单的所有推导链如图6所示。
3.4 组合订单与普通订单的基本关系
3.4.1 交易方向关联
组合策略合约规则约定了组合订单与普通订单的交易方向。例:三腿的组合订单(A,B,C),组合订单买入(BID)等于买入(BID)A,卖出(ASK)B,买入(BID)C、组合订单卖出(ASK),则卖出(ASK)A,买入(BID)B,卖出(ASK)C。
3.4.2 数量与比例关系
组合策略合约规则约定了组合订单与普通订单的数量比例关系,为了满足成交条件,组合订单的每条腿都必须满足最小交易数量。以三腿的组合订单为例,(A,B,C)的数量比例1:2:1,组合订单买入(BID)一手等于买入(BID)一手A,卖出(ASK)两手B,买入(BID)一手C、组合订单卖出(ASK)一手等于卖出(ASK)一手A,买入(BID)两手B,卖出(ASK)一手C。其中B的买卖手数都是两手,必须同时成交两手,如果只能成交一手,则不能通过组合订单进行成交。同理,如果一手B通过(A,B,C)进行推导,推导出的A,C都有0.5手,不满足 A和C的最小交易数量,不能通过(A,B,C)进行推导。
3.4.3 价格推导公式
组合策略合约规定了组合订单与普通订单的价格计算方法。根据计算方法可以推导出各个订单的计算方法。以三腿蝶式组合订单的一种情况为例,定义组合订单价格推导公式(内推,Implied In):
(A,B,C)bid = (A)bid – (B1)ask – (B2)ask + (C)bid
(A,B,C)ask = (A)ask – (B1)bid – (B2)bid + (C)ask
经过简单的四则运算得到,可以推导出组合订单推普通订单价格公式(外推,Implied out):
(A)bid = (A,B,C)bid + (B1)ask + (B2)ask - (C)bid
(A)ask = (A,B,C)ask + (B1)bid + (B2)bid - (C)ask
(B1)bid = (A)ask - (A,B,C)ask – (B2)bid + (C)ask
(B1)ask = (A)bid - (A,B,C)bid – (B2)ask + (C)bid
(B2)bid = (A)ask - (A,B,C)ask – (B1)bid + (C)ask
(B2)ask = (A)bid - (A,B,C)bid – (B1)ask + (C)bid
(C)bid = (A,B,C)bid + (B1)ask + (B2)ask - (A)bid
(C)ask = (A,B,C)ask + (B1)bid + (B2)bid - (A)ask
3.5 组合策略订单搜索算法
组合订单的搜索算法的主要思路:正向逻辑搜索,反向价格推导。
3.5.1 正向逻辑搜索
以最后报入的订单的对手方为推导根,推导根搜索每条推导链形成覆盖全局的推导树,推导出推导树的全部叶子节点。预先已经将关系特性的所有普通订单和实体组合订单的组合情况都推导完全,所有推导树能覆盖到所有相关订单。
3.5.2 反向价格推导
由于组合订单的价格推导方式有很多种,最后决定选择哪条推导链进行成交的依据是比较不同推导链的推导根的价格高低和推导链的时间先后顺序,以成交条件为目标的价格计算必须要求推导树的叶子节点以对手方进行计算。根据组合订单的报价计算公式推导出的普通订单的报价计算公式,推导根的价格可以直接使用此公式进行计算。
(A)bid’ = (A,B,C)bid + (B1)ask + (B2)ask - (C)bid,
其中(A)bid’为推导出的订单,(B1)ask,(B2)ask,(C)bid必须成交则取他们各自的对手方价则:
(A)bid’ = (A,B,C)bid + (B1)bid + (B2)bid - (C)ask
同理其他组合订单推普通订单的公式也直接取他们的对手方价:
(A)ask’ = (A,B,C)ask + (B1)ask + (B2)ask - (C)bid
(B1)ask’ = (A)ask - (A,B,C)bid – (B2)bid + (C)ask
(B2)bid’ = (A)bid - (A,B,C)ask – (B1)ask + (C)bid
(B2)ask’ = (A)ask - (A,B,C)bid – (B1)bid + (C)ask
(C)bid’ = (A,B,C)bid + (B1)bid + (B2)bid - (A)ask
(C)ask’ = (A,B,C)ask + (B1)ask + (B2)ask - (A)bid
3.6 搜索算法优化
3.6.1 组合策略订单的价差关系
三腿蝶式组合订单定义组合订单价格推导公式如下,两个公式相减可得。
(A,B,C)bid = (A)bid – (B1)ask – (B2)ask + (C)bid (A,B,C)ask = (A)ask – (B1)bid – (B2)bid + (C)ask (A,B,C)ask - (A,B,C)bid = ((A)ask – (B1)bid – (B2)bid + (C)ask) - ((A)bid – (B1)ask – (B2)ask + (C)bid) = ((A)ask – (A)bid) + ((B1)ask – (B1)bid) + ((B2)ask – (B2)bid) + ((C)ask – (C)bid)
推导出的组合订单买卖单之间的价差其实就是对应每个普通订单的买卖单之间的价差之和。由于普通订单的买卖单的价差至少为一个最小价格变动单元,由普通订单推导出的组合订单直接的买卖单之间的价差至少为其所有腿数个最小价格变动单元。(A,B,C)bid和(A,B,C)ask为隐含的组合订单。
(A,B,C)ask’ - (A,B,C)bid= ((A)ask’ – (B1)bid’ – (B2)bid’ + (C)ask’) - (A)bid – (B1)ask – (B2)ask + (C)bid)= ((A)ask’ – (A)bid)) + ((B1)ask – (B1)bid’) + ((B2)ask – (B2)bid’) + ((C)ask’ – (C)bid)
其中(A,B,C)ask’是作为关系特定进行推导的组合订单,(A)ask’,(B1)bid’,(B2)bid’,(C)ask’为(A,B,C)bid’推导出的订单
在反向推导推导根的报价时,其余腿均以成对手方计算。则:
((B1)ask–(B1)bid’)=((B2)ask–(B2)bid’)=((C)ask’–(C)bid)=0
带入公式可得
(A,B,C)ask’-(A,B,C)bid=(A)ask’–(A)bid
在简单换位就能推导出
(A)ask’=(A)bid+((A,B,C)ask’-(A,B,C)bid)
同理可以推导出
(A)bid” = (A)ask-((A,B,C)ask-(A,B,C)bid”)
其中(A,B,C)bid”是作为关系特定进行推导的组合订单,(A)bid”为(A,B,C)bid”推导出的订单
((A,B,C)ask’-(A,B,C)bid)为直接报入组合订单卖单与隐含组合订单买单的价差,通过(A,B,C)ask’推导出的(A)ask’的价格等于(A)bid加上此价差。同样,((A,B,C)ask-(A,B,C)bid”)为隐含组合订单卖单与直接报入组合订单买单的价差,通过(A,B,C)bid”推导出的(A)bid”的价格等于(A)ask减去此价差。通过此公式可以直接利用组合订单的价差计算出推导的普通订单的价格。
3.6.2 推导链搜索剪枝
从图7中可知,由普通订单推导出两腿组合订单的报价存在着两个价位的价差,直接报入的组合卖单价格小于等于0.65或者组合卖单价格大于等于0.65,都不会产生新的成交,中间存在的0.65价位有两个方向的报价的可能。实际中0.65价位只出现一种情况,要么为卖单报价;要么为买单报价。根据组合订单价差推导公式,如果组合订单的价差大于普通订单的价差则此推导出的普通订单肯定劣于普通订单报价,推导出的普通订单肯定不会成交,此推导链在搜索的时候可以依据价差进行剪枝。只有当直接申报组合订单与普通推导出普通订单的价差小于或等于普通订单的价差,通过组合订单关系特性推导的普通订单才能优于或等于普通订单的报价。例:出现中间报价场景一,(A,B)bid可以进行推导,(A,B)ask则没有推导的必要;出现中间报价场景二,(A,B)ask可以进行推导,(A,B)bid则没有推导的必要。
注:圆圈里面的数字标识时间戳顺序,中间数字为报价,最后括弧里的数字为手数,字母I表示此订单为隐含订单。
3.6.3 推导链并行计算
每个作为关系特性的组合订单的推导链都是独立的,每条推导链都使用原委托队列的数据进行计算,推导的结果在推导过程中不会对其他推导链产生影响,所以推导链的搜索和价格计算可以并行处理。
3.7 时间与空间复杂度
当组合订单关系特性数大于0时,组合订单主要在两种场景中增加耗时:
1.普通订单和组合订单统一排序编号和在排序后不同标的的普通订单由并行改成了串行,时间复杂度由O(Max(M1,M2,M3..Mn))变为O(Sum(M1,M2,M3..Mn))。
2.根据推导链反向推导出推导根价格的过程,由于推导链已经确定,每次都选择最优的一、两笔订单进行计算,不需要遍历全部委托队列或一个价位所有订单,每个推导链的推导计算时间都是O(1),推导链可以并行计算,只要并发的线程数量大于推导链的数量,则整个搜索过程增加的时间也是O(1),实际中并发线程数量并不足够多,大量的搜索过程会因为累积而串行执行,增加的时间复杂度约为O(logN)。
3.7.1 时间复杂度
新订单(包括普通订单和组合订单)委托请求到达,如果委托报价优于本方最优价则以此订单的对手方为推导根通过推导树反向推导出所有推导链在此推导根的价格,根据“价格优先,时间优先”的原则,找出最优的一个推导根,按照推导链进行成交,成交后委托量全部成交则完成,还剩余委托量继续搜索,直至此全部成交或没有可以推导的推导链;如果委托报价不优于本方最优价,则在本方委托队列中查找对应委托价格的队列位置,在所有相同委托价格的最后插入此普通订单,达到更新本方委托队列的目的。时间复杂度:O(〖(m*k)〗^l*n),m表示包含此普通委托相关联的组合订单数,k表示组合策略订单的腿数,l表示关系特性组合订单数,n表示需要搜索的次数)。
新订单(包括普通订单和组合订单)撤单请求到达,搜索此订单在本方委托队列的位置,再从委托队列中将其删除。时间复杂度:O(n) ,n表示委托队列长度。
3.7.2 空间复杂度
因为每条推导链都是独立推导,每条推导链都使用原委托队列的数据进行计算,在推导过程中拷贝与推导链相关的普通订单薄和组合订单薄,只是在推导根的订单薄会增加组合订单推导的普通订单,在一次成交之后组合订单推导的普通订单需要清空重新推导,所以空间复杂度为O(n*m)。n为一份推导链所需要的内存空间,m为并行搜索的线程数。
3.8 难点与创新点
3.8.1 难点
1)组合订单推普通订单的方式多样
如果组合订单都推导到普通订单,需要从多种推导方式中选择一种推导方式,判断多次普通订单能否成交,还要判断普通订单是否是其他订单的隐含订单。本算法只需判断一次推导根价格和时间顺序。以价格计算公式 (A,B,C)bid = (A)bid – (B1)ask – (B2)ask + (C)bid为例。假设需要推导的是(A)bid,如果组合推导到普通订单进行成交,从(A)bid开始推导,得到(A)bid、(B1)ask、(B2)ask、(C)bid的普通订单报价,需要依次判断A,B,C三个普通订单的价格是否满足成交条件,还要避免满足成交的对手方可能是由另外的组合订单推导出来的普通订单,组合订单的另外普通订单能否成交。使用本算法推导,(A,B,C)bid为关系特性的组合订单报价,数值固定, (B1)ask ,(B2)ask 和(C)bid统一取其对手方价,数值固定。计算公式中四个变量固定,另一个肯定能计算出具体的值。只需要比较此推导链计算的(A)bid报价和其他推导链计算的(A)bid报价,按撮合规则选择优先(A)bid报价成交即。
2)关系特性组合订单的拆分
三腿和四腿的组合订单的子集包含其他的两腿或三腿组合订单。关系特性组合订单可以分解成多个实体组合订单与普通订单的组合。需要预先把所有可能全部推导出来,每种组合都是独立推导链。为并行计算打下基础。
3)发现组合订单价差规律
发现组合订单与推导的普通订单直接的价差规则,利用组合订单价差规律可以直接计算推导普通订单或组合订单的价格。还可以避免搜索不必要的关系特性组合订单,优化搜索时间。
3.8.2 创新点
1)搜索规则统一
无论最后报入的普通订单还是组合订单,搜索算法的推导根都是最后报入订单的对手方,搜索推导根的所有推导链形成的推导树,计算出推导根的数量和价格,再根据不同推导链的时间和推导根的数量、价格,依据价格优先,时间优先决定哪一个推导链推出的推导根进行成交。
2)搜索路径并行计算
组合订单关系特性的引入不可避免地会造成性能的损失,为了避免损失需要尽可能缩短处理时间。因为算法的推导树能够覆盖与其相关的所有标的,且每个推导链都直接使用原始订单薄,推导链之间没有相关性,所以推导链能并行运行,降低搜索时间。
3)搜索算法便于扩展
当前作为关系特性的组合订单数量为1,如果增加作为关系特性的组合订单数量,事先计算好组合订单的拆分,便能延长推导链,只增加推导链的数量,不会改变推导链的搜索算法。
组合订单创建和拆分时使用了组合策略合约规则进行判断,事先规定好组合策略合约规则,无论是标准的组合订单还是用户自定义订单,只要符合组合策略合约规则都能进行推导,只增加推导链的数量,不会改变推导链的搜索算法。
4、POC测试
由于每个订单的搜索树都是独一无二的,而且每次成交或者更新订单薄都会对搜索树进行改变,在缺乏大量的真实数据的支持下很难测试出贴近于实际情况的耗时。对此我们采用全量测试法,即构造一个会搜索每条路径的搜索树,每个订单到达都会全量搜索所有路径,如此搜索能够模拟最坏情况下的搜索过程。为了保持搜索树的稳定,POC性能测试时只搜索出结果,不对结果进行撮合。
测试环境:
CPU:Intel Xeon Platinum 8160M 24C|48T 2.0GHz*4
Memory:128GB
System:Windows Server 2012 R2 Standard
测试场景:
300个单腿合约,组合订单类型有2腿、3腿和4腿,每个单腿合约与每种类型的5-10个组合订单关联,关系特性组合订单数为1。连续进行一百万次模拟操作。全量的测试数据如表3所示
结合表3和图8,可以看出每个测试场景中单次执行耗时随着组合订单的腿数和关联数量增加而增加。
结合表3与图9可以每个测试场景中的吞吐量随着组合订单的腿数和关联数量增加而减少。由于POC程序只是检验算法性能,未涉及搜索前后的业务处理,所以未能与其他交易所的性能数据进行对比。
5、研究结果
本课题通过阅读和分析国内外交易所提供的公开资料,以及对知名交易所的组合订单进行深入的调研。明确2-4腿组合订单的相关定义,规定了组合策略合约的规则。说明了组合订单的实体特性与关系特性,组合订单通过关系特性与普通订单和实体组合订单产生关联,以组合订单的关系特性为推导链,以推导根为根节点,将与推导根关联的所有推导链构成覆盖所有可能关联的普通订单和实体组合订单的推导树。完整地描述了一种规则统一、支持并行、便于扩展的组合策略订单的关键搜索算法。以及组合订单的搜索逻辑过程,数量计算公式,价格计算公式,多腿组合订单拆解成不同的推导链等。找出组合订单在价格推导中的价差特性,依据此特性可以直接用于价格推导或搜索过程中根据实际的组合订单价差情况进行剪枝优化。最后基于搜索算法的理论指导实践,实现组合订单的搜索算法POC程序,并针对不同的搜索场景对POC程序进行优化,完成POC功能测试以及性能测试,再针对性能测试数据进行性能调优,得出的性能测试数据为今后的具体方案实施提供理论依据。
6、分析讨论
本课题研究通过资料查阅,逻辑推理,分析优化等方法提出了针对常见的2-4个合约组成的组合订单和普通订单之间的搜索撮合算法理论。根据理论进行搜索算法优化,实现搜索算法POC,根据搜索场景不断优化。提供了一种组合订单撮合的技术可行性方案,课题研究内容逻辑推导非常复杂,搜索性能优化要求也很高。研究成交相较于国内外同行业的搜索算法具有一定的创新性。创新点主要在于搜索规则统一、搜索算法可以并行、搜索算法规则可以继续扩展,并能支持自定义订单。
但是由于时间与精力的限制,本课题研究还要相当的局限性,例如:本次只考虑了一个组合订单为关系特性的情况,如果多个组合订单为关系特性,关系特性组合订单和关系特性组合订单的关联方式更多,搜索树的情况会更复杂。开题时提出的使用GPU进行并行运算的计划也没有实现。由于具体业务场景的缺失和上下游业务逻辑得到差异,POC的性能测试数据也未能与其他交易所进行对比。
未来研究计划,会考虑多个组合订单为关系特性的情况,跨品种的组合订单,进一步研究对搜索算法性能优化,尝试使用GPU实现并行搜索算法,使用多路CPU同时对多个标的的期权进行组合订单搜索等。
合成股票策略是指利用期权复制股票收益的一种交易策略,通过该策略我们可以获得和股票相同的收益情况,但相比直接购买股票,采用期权构建股票多头策略具有更低的成本。
合成股票多头策略的构建方法是卖出一份行权价距当前股价较为接近的认沽期权,同时再买入一份具有相同到期日、相同行权价的认购期权。采用该策略的投资者通常强烈看好股票未来的走势,希望通过杠杆博取更高的收益。在实际应用中,由于虚值期权行权风险较大,实值期权构建成本较高,因此通常使用平值的认购、认沽期权构建合成股票多头策略。
当股价上涨时,买入的认购期权价格也将随之上涨。同时,认沽期权的价格会下跌,卖出的认沽期权会出现浮盈。但值得注意的是,一旦股价下跌,合成股票多头策略中买入的认购期权和卖出的认沽期权会同时出现亏损,此外还可能会被要求追加保证金。因此,合成股票多头策略是一把双刃剑,在放大收益的同时也放大了亏损。
与购买认购期权相比,合成股票多头策略为了降低构建成本而卖出认沽期权是更为激进的行为,其代价是放弃了认购期权在下跌时的保护作用。与合成股票多头策略相对应的是合成股票空头策略,构建方法是买入一份行权价距当前股价较为接近的认沽期权,再卖出一份具有相同到期日、相同行权价的认购期权,采用合成股票空头策略的投资者通常看空后市。
不同投资者对于风险受益偏好和特定的市场预期都有所不同,除了买卖单一类型的期权这种直接运用期权头寸的交易方式,投资者还可以运用不同期权的组合以及期权与标的股票的组合形成满足投资者自身需求的交易策略,其中一种基础的交易策略就是合成股票交易策略。
合成股票交易策略是利用两种期权的组合获得其标的股票相类似收益情的交易策略,采用这种交易策略可以利用更低的投资成本去获得与标的股票类似受益情况。其中基本两种交易策略就是股票多头交易策略和股票空头交易策略。
构建股票多头交易策略基本的操作方式就是么买入一份某股票的认购期权(call),同时卖出一份行权价,到期日与该认购期权都相同的认沽期权(put),这两份期权组合的收益情况就会与标的股票相类似。
构建股票空头交易策略的操作方式就是买入一份认沽期权(put),再卖出一份到期日和行权价都与该认沽期权相同的认购期权(call),这两个期权组合的收益情况同样会与标的股票相类似。