做市商套利算法

3-29 317 views

做市商套利算法的核心盈利目标是赚取市场上买一盘口和卖一盘口中的价差。这种算法能够成立的前提是交易成本足够低、成交速度足够快,主力合约的流动性足够好。

为了解该算法,我们先来看下面的这个例子:

白糖期货的交易中,主力合约是9月合约,次主力合约是11月合约,其他有交易的合约还有7个,总共有9个合约在交易。要想从盘口的点差中获利,有以下思路(以下设想全部通过电脑程序自动完成,并且按照做市商的条件来计算,所以交易费用可以忽略不计)。

♦主力合约的买一卖一盘口利润,如图7-12所示。

糖1109是主力合约,盘口报价紧度高,一般只相差一个价位。如果价格能停留在7249~7250之间的话,我们可以这样设计:

(1)当价格在7249时挂多开单,7250时挂空开单。

(2)如果7249的多开单有成交的话,马上挂相应单量的7250空平单;同理如果7250空开单有成交的话,马上挂相应单量的7249多平单;

(3)循环(1)、(2)的操作,直至操作需要结束的时候,将剩余未平仓锁单对敲平仓,将单边净仓位按第五篇的“盘口主动型算法交易指令流”方式平仓。

(4)该操作的利润趋近于10 x成交手数/2

实际操作中,价格一般不会长期停留在7249~7250之间,我们需要用某种思路锁定价格整体波动的风险从而获得稳定的点差收益。

♦非主力合约的买一卖一盘口利润,如图7-13所示。

糖1205是非主力合约,盘口价差常常会有2~5个点的空档。如果买一卖一盘口的中间价稳定在6887-6889之间的话,我们可以在主力合约思路上做进一步延伸:

(1)在6886挂多开单,6890挂空开单。

(2)如果6886的多开单有成交的话,马上挂相应单量的6890空平单;同理如果6890空开单有成交的话,马上挂相应单量的6886多平单。

(3)由于非主力合约成交相对稀少,挂6886多开单或多平单,均要等待之前别人在6886上挂的多单18手,所以可以再挂6887多开单;同样,也可以再挂6889空开单。

(4)如果6887的多开单有成交的话,马上挂相应单量的6889空平单;同理如果6889空开单有成交的话,马上挂相应单量的688*7多平单。

(5)循环(1)、(2)以及(3)、(4)的操作,直至操作需要结束的时候,将剩余未平仓锁单对敲平仓。净仓位利用主动型算法逐渐平仓。

(6)该操作的利润趋近于10x平均点差x成交手数/2但是当净仓位需要平仓却遭遇到流动性不足的问题时,不能简单用该合约“主动型算法交易指令流”方式平仓,而是要借助主力合约的流动性。

♦牺牲主力合约盘口利润来锁定非主力合约的盘口利润(见图7-14)。

如前所述,如果价格能稳定在一个很小的区间内,就可以通过来回挂买挂卖获得点差收益,但是价格如果出现波动怎么办?

我们可以用套利思路来回避价格趋势波动的风险。这种思路简单地说就是不求价格波动的趋势收益,只赚取波动中投机者为了成交而支付给我们的点差收益。具体操作如下:

(1)在非主力合约1205上,以6886挂多开单,6890挂空开单。

(2)如果1205合约6886价位的多开单有成交的话,马上挂相应单量的1205合约上的6890空平单,同时也挂1109合约上相应单量的7249空开单;同理,如果1205合约的6890空开单有成交的话,马上挂相应单量的1205合约上的6886多平单,同时也挂1109合约上相应单量的7250多开单。

(3)由于1109合约是主动成交,能保证7249的空开单一定成交,这样手中就同时持有了1109合约的7249空单和1205合约的6886多单。

(4)如果价格上涨,则1205合约的6890空平单会成交,这个时候马上以卖一盘口价挂1109合约多平。此时,卖一盘口价可能为7250、7251、7252、7253(假设1109合约和1205合约的中间价的基差保持不变)。这样平仓收益=(1205合约盈利点差-1109合约损失点差)x成交量/2

(5)如果价格下跌,主力1109合约的买一价从7249变成了 7249-n,则在1205合约上的卖平仓单也相应从6890调整成6890-n~6888-n0如果继续下跌则重复操作,直到卖平单成交。卖平单一旦成交,则主力1109合约报当时的卖一盘口价买平。这样的收益和(4)一样。

我们可以看到,这里虽然用套利形式回避了品种整体上涨下跌的系统性风险,但实际上,合约基差也不是一成不变的。要回避基差波动带来的风险,就需要多个合约联合操作或计算好合约的无风险套利区间。

♦主力盘口与次主力盘口的利润之和,如图7-15所示。

这样的做法与非主力合约的做法相似,不过由于运用了次主力合约,合约的流动性增强,操作性也更高。缺陷在于单笔交易利润较小。能否盈利要仰赖于算法的执行效果。

(1)在次主力合约1201合约上,以6906挂多开单,6907挂空开单。

(2)如果1201合约的6906多开单有成交的话,马上挂相应单量的1201合约上的6907空平单,同时也在1109合约上按照“盘口主动型算法交易指令流”开相应单量的空开单;同理如果1201合约的6907空开单有成交的话,马上挂相应单量的1201合约上的6906多平单,也在1109合约上按照“盘口主动型算法交易指令流”开相应单量的多开单。

(3)由于1109合约是以算法指令形式挂单,并不一定能马上成交。因此如果1201合约上的6907空平单优先于算法指令成交,则算法自动撤单。如果算法优先成交,则手中就同时持有了1109合约的空单和1201合约的6906多单。

(4)如果价格上涨,贝U1201合约的6907空平单会成交,这时候1109合约的空单就按照“盘口主动型算法交易指令流”平仓相应单量。

(5)如果价格下跌,则1201合约的6907空平单撤单,并以6907-n继续往下报价,直到该空平单成交。成交之后,1109合约的空单就按照“盘口主动型算法交易指令流”平仓相应单量。

由于次主力合约有一定的流动性,且基差比较稳定,该操作方式的交易量可以比较大。实际的收益来源于主力合约与次主力合约双边盘口利润。虽然这种方式的单笔利润很小,但是可以持续累积。一般做法是,每日收盘前,用算法清理所有仓位,以保证每日持仓为0,结算绝对收益。

♦多个合约套利算法联合操作,如图7-16所示。

实际操作中,可以将之前的几个思路联合起来一起操作。最终取得一个总的算法收益。当然,这样的操作靠人工是不可能完成的,必须借助精密的计算机程序和相当通畅的网络。

(1)选择一系列的合约进行操作。对象应该至少是有少量成交量的合约,或者是几个活跃合约的中间月份合约(中间月份的合约虽然有的成交量不大,但是可以通过蝶式套利的形式回避合约基差风险)。如图7-16所示,主力选择了糖1107合约至1205合约。

(2)指定一个参考系合约。一般为主力合约,即1109合约。如果考虑到主力合约与其他合约的成交量相差太大,也可以把参照系设置为次主力合约1201。如果考虑到次主力合约的盘中报单量未必比主力合约少,则取主力合约和次主力合约两者报单量较小者为参照系合约。

(3)按加权平均法或者回归分析法定义各合约在盘中的合理基差。在合理基差范围内,1107合约、1111合约、1203合约、1205合约的买一卖一盘口挂单量均按1201合约的挂单量补足。如果1201合约由于挂撤单、成交等因素导致挂单量瞬间变化,其他合约也通过挂撤单的形式相应做出变化,迅速达到与1201合约相同的挂单量。

(4)如果在合理基差以外的区域,只按算法挂单不易成交的一方。

(5)如果1107合约挂单被成交,则按套利算法锁定1109合约;如果1111合约被成交,则按套利算法蝶式锁定1109合约与1201合约;如果1201合约被成交,则按套利算法锁定1109合约;如果1203和1205合约被成交,也按套利算法锁定1109和1201合约。

通过这样复杂的组合操作,最终达到的效果是吸收各个合约上的盘口流动性利润,同时锁定主力合约与次主力合约,来回避系统性风险和时间风险。有兴趣的朋友可以根据这样的思路编译计算机语言,测试效果。

做市商算法为市场提供了大量的流动性,使得各合约都能在买一卖一盘上有充足的订单,有助于市场整体活跃度提高,同时还可以极大消除市场噪音。发达国家对做市商已有了较完备的制度法规,我国如果能引进做市商制度,将有助于市场的长期健康发展。

『期货研究』通过日线和tick趋势做期货交易

1.策略思想 结合日线趋势和tick走势,确定开仓。开仓之后,依据tick趋势加仓或平仓。 2.日线趋势判断 本文中的方法是基于dual thrust 和 R-Break思想的变形,...

阅读全文

震荡行情交易之王——RSI指标

摘要:无论做何种电子盘交易,收益一定伴随着风险,在不考虑止损和手续费的情况下,可以说有多大的收益就有多大的风险,那么如何减少风险获得稳定收益,选择...

阅读全文

期货均线交易系统

均线交易模型非常多。 单均线交易模型 典型的有30分钟120线。30分钟的55线。日线的13线。日线的60线。 双均线交易模型。 比如20 40 比如20 120 比如10 20 比...

阅读全文

欢迎留言