简介
做市商保护(Market Maker Protection, MMP) 是一种为流动性提供者设计的保护机制,该机制能够防止做市商的订单在短时间大量成交。一旦某个账户在短时间内的总交易额超过了配置的限额,该账户的做市商保护将被触发。当做市商保护被触发时,账户现有的做市商保护订单(被标记为做市商保护的订单)将被交易引擎自动取消,而该账户新的做市商保护订单将在未来一段时间(称为冻结期)被拒绝。用户可以利用这段时间重新评估行情并修改报价。
开启做市商保护
用户需要联系BIT的客户经理来开启或关闭账户的做市商保护功能。做市商保护的四个参数如下表所示:
注意:币本位衍生品、USDT本位衍生品、以及现货的做市商保护参数是各自独立开启和配置的,彼此互不影响。
时间窗口 | window_ms | 计算交易量和净交易Delta的时间窗口的大小与限制。 |
冻结期 | frozen_period_ms | 一旦触发了MMP的冻结期长度。0表示账户将保持冻结状态,直到手动重置。 |
数量限制 | qty_limit | 时间窗口内交易总量的限制。 |
Delta限制 | delta_limit | 时间窗口中的交易的净交易delta的限制。 |
做市商保护默认配置参数如下:
现货交易
币对 | 时间窗口
window_ms | 冻结期
frozen_period_ms | 数量限制
qty_limit | delta限制
delta_limit |
BTC/USDT | 5000 | 100 | 100 | 100 |
BTC/USD | 5000 | 100 | 100 | 100 |
ETH/USDT | 5000 | 100 | 3000 | 3000 |
BCH/USDT | 5000 | 100 | 5000 | 5000 |
币本位衍生品
币种
(币本位期权/合约) | 时间窗口
window_ms | 冻结期
frozen_period_ms | 数量限制
qty_limit | delta限制
delta_limit |
BTC | 5000 | 100 | 100 | 100 |
ETH | 5000 | 100 | 3000 | 3000 |
BCH | 5000 | 100 | 5000 | 5000 |
USDT本位衍生品
币种
(USDT本位期权/合约) | 时间窗口
window_ms | 冻结期
frozen_period_ms | 数量限制
qty_limit | delta限制
delta_limit |
BTC | 5000 | 100 | 100 | 100 |
注意:币本位衍生品的做市商保护参数按照币种独立,USDT本位衍生品的做市商保护参数按照币种独立,现货交易的做市商保护参数按照交易对独立,参数分别可以按照币种/交易对个性化配置。
说明:
做市商保护订单
做市商保护机制只影响做市商保护订单,即把字段`mmp`设置为`true`的订单。只有做市商保护订单的交易才会被计算在内,当做市商保护机制被触发时,只有做市商保护订单会被取消或拒绝。
做市商保护监控
对于每个开启了做市商保护功能的账户,交易引擎将实时监控过去时间窗口`windows_ms`中的交易总量和净交易delta。
图 1 - 做市商保护监控的示例
见图1的例子:一个配置为`window_ms = 300`的账户。其做市商保护订单有4笔交易,分别在时间140、200、340和500。当前时间是560,落入时间窗口(260,560)的交易将被计算在内,即T3和T4。如果T3和T4的总数量或净交易delta超过了配置的限制,做市商保护将被触发。
做市商保护的限制
做市商保护对两种类型的交易指标进行限制:总数量和净交易delta。
交易中单个订单的数量和净交易delta的定义:
产品类型 | 数量 | 净交易 delta |
币本位期权 | |qty| | qty * (delta - mark price) |
币本位合约 | |qty| / mark price | qty / mark price |
USDT本位期权 | |qty| | qty * delta |
USDT本位合约 | |qty| | qty * 1 |
现货 | |qty| | qty * 1 |
`qty`是订单的定向交易量--买入为正,卖出为负。
对于一组交易,总数量和净交易Delta就是各笔交易的数值总和。总数量对照`qty_limit`,净交易delta总和的绝对值对照`delta_limit`。如果其中任何一项到达或超过限制数额,该账户的做市商保护将被触发。
做市商保护机制触发
做市商保护触发时账户现有的做市商保护订单将全部被取消,该账户在`frozen_period_ms'长度的期间内不能下新的做市商保护订单。如果`frozen_period_ms`被配置为0,账户将被无限期冻结,直到用户重置。如果一个被冻结的账户试图下一个新的做市商保护订单,该订单将被拒绝或在匹配前立即被取消。一旦做市商保护被触发,该账户以前的交易将不会被之后的做市商保护监控计算在内。
做市商保护不会中断一个正在进行的匹配过程。换句话说,做市商保护的触发总是发生在上一个订单的匹配完成之后、下一个订单的匹配开始之前。例如,一个做市商账户的 "qty_limit "为30,有5笔挂单,每个订单卖出20份合约。一位买家需要买入100份合约。
如果这位买家用一个订单买入100份合约,所有5个做市商订单将在做市商保护触发前被执行。
如果这位买家下2笔订单,每笔订单分别买入50份合约,做市商保护将在第一个订单成交后立即触发。剩下的3个做市商订单(其中一笔订单已部分成交10份合约)将在做市商保护触发时被取消。
做市商保护API
下做市商保护订单的API与下普通订单的API相同。用户只需在请求中把`mmp`字段设置为`true`即可。
MMP API:
查询MMP状态
获取账户当前的做市商保护状态,包括MMP配置、冻结状态、冻结结束时间等。
USDT本位衍生品接口:[https://www.bit.com/docs/zh-cn/linear_futures.html#mmp]
更新MMP配置
更新账户的做市商保护配置。开启做市商保护功能后,您就可以通过API修改做市商保护参数。
重置MMP状态
如果账户被冻结,MMP重置将清除冻结状态,这样账户就可以立即开始下做市商保护订单。
如果账户没有被冻结,MMP重置将从未来的MMP监控中清除以前的交易,即不再将其计入总数量和净交易delta。
Websocket channel mmp_frozen
用于订阅做市商保护触发的事件。
举例说明
例1
一个账户将时间窗口windows_ms 设置为 1000,delta_limit 设置为 10.
[时间10000]一个做市商保护币本位期权订单 BTC-31JAN20-8000-C成交,净交易delta+8。
(总数量 = 8)
[时间 10500] 一个做市商保护币本位期权订单BTC-31JAN20-8000-P成交,净交易delta -5。
(总数量 = +8 - 5 = 3)
[时间 10900] 一个做市商保护币本位BTC永续合约订单成交,净交易额为+6。
(总数量 = +8 - 5 + 6 = 9)
[时间 11200] 一个做市商保护币本位期权订单BTC-31JAN20-8000-C成交,净交易额为+7。
(总数量 = -5 + 6 + 7 = 8)
在以上过程中,做市商保护没有被触发,因为该账户的净交易Delta在任何1000毫秒的时间窗口中都没有累计超过10。
例2
账户A的数量限制qty_limit = 10, 账户B的delta_limit = 10, 账户C的delta_limit = 20. 假设BTC币本位永续合约的当前标价为10,000USD/BTC。
账户A下了一个BTC币本位永续合约做市商保护订单,数量=+150,000 USD。
帐户B下了一个BTC币本位永续合约普通订单(非MMP订单),数量=+150,000 USD。
账户C下了一个BTC币本位永续合约做市商保护订单,数量= - 500,000 USD,并与上述两个订单撮合成交。
做市商保护监控的结果:
帐户A触发了做市商保护,他的总数量为|150000| / 10000 = 15,超过了qty_limit的10。
帐户B没有触发做市商保护,因为帐户B的做市商保护订单没有交易。
帐户C的做市商保护被触发,他的净交易delta为-300000 / 10000 = -30。|-30| 超过了设置的delta_limit 20。
例3
一个账户将现货币对BTC/USDT的时间窗口windows_ms 设置为1000,qty设置为200,delta_limit 设置为 100.
现货币对BTC/USD的时间窗口windows_ms 设置为1000,qty设置为200,delta_limit 设置为 100.
[时间10000] BTC/USDT 币对买入80个 BTC 做市商保护订单成交
[时间10000] BTC/USD 币对买入80个 BTC 做市商保护订单成交
BTC/USDT币对qty = |80|,净交易 delta+80,做市商保护未触发
BTC/USD币对qty = |80|, 净交易 delta+80,做市商保护未触发
[时间10200] BTC/USD 币对买入90个BTC做市商保护订单成交
BTC/USDT 币对 qty = |80|, 净交易 delta+80, 做市商保护未触发
BTC/USD 币对 qty = |80|+|90|=170,净交易 delta = |+80+90| =170>100,做市商保护触发
[时间10400] BTC/USDT 币对卖出入150个 BTC 做市商保护订单成交
BTC/USDT币对 qty =|80|+|-150| = 230>200, 净交易delta = |+80-150| =70, 做市商保护触发