简介
做市商保护(Market Maker Protection, MMP) 是一种为流动性提供者设计的保护机制,该机制能够防止做市商的订单在短时间大量成交。一旦某个账户在短时间内的总交易额超过了配置的限额,该账户的做市商保护将被触发。当做市商保护被触发时,账户现有的做市商保护订单(被标记为做市商保护的订单)将被交易引擎自动取消,而该账户新的做市商保护订单将在未来一段时间(称为冻结期)被拒绝。用户可以利用这段时间重新评估行情并修改报价。
开启做市商保护
用户需要联系Bit.com的客户经理来开启或关闭账户的做市商保护功能。做市商保护的四个参数如下表所示:
注意:期权合约与现货的做市商保护参数是独立开启和配置的,彼此互不影响
时间窗口 |
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/USDC |
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 |
注意:合约和期权的做市商保护参数按照币种独立,现货交易的做市商保护参数按照币对独立,参数可以按照币对个性化配置。
说明:
做市商保护订单
做市商保护机制只影响做市商保护订单,即把字段`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 |
现货 |
|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状态
合约&期权接口:[https://www.bit.com/docs/zh-cn/#mmp]
现货接口:[https://www.bit.com/docs/spot/zh-cn/#mmp]
-
- 获取账户当前的做市商保护状态,包括MMP配置、冻结状态、冻结结束时间等。
- 更新MMP配置
合约&期权接口:[https://www.bit.com/docs/zh-cn/#mmp-2]
现货接口:[https://www.bit.com/docs/spot/zh-cn/#mmp-2]
-
- 更新账户的做市商保护配置。
- 注意,默认情况下,API是不能进行做市商保护参数修改的。用户可以向Bit.com工作人员申请API修改权限,开放后用户可以通过API进行做市商参数修改。您也可以联系Bit.com的工作人员帮助修改做市商保护参数。
- 重置MMP状态
合约&期权接口:[https://www.bit.com/docs/zh-cn/#mmp-3]
现货接口:[https://www.bit.com/docs/spot/zh-cn/#mmp-3]
-
- 如果账户被冻结,MMP重置将清除冻结状态,这样账户就可以立即开始下做市商保护订单。
- 如果账户没有被冻结,MMP重置将从未来的MMP监控中清除以前的交易,即不再将其计入总数量和净交易delta。
- Websocket channel mmp_frozen
合约&期权接口:[https://www.bit.com/docs/zh-cn/#mmp-mmp_frozen]
现货接口:[https://www.bit.com/docs/spot/zh-cn/#mmp-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] 一个做市商保护BTCUSD永续合约订单成交,净交易额为+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. 假设BTCUSD永续合约的当前标价为10,000USD/BTC。
- 账户A下了一个BTCUSD永续合约做市商保护订单,数量=+150,000 USD。
- 帐户B下了一个BTCUSD永续合约普通订单(非MMP订单),数量=+150,000 USD。
- 账户C下了一个BTCUSD永续合约做市商保护订单,数量= - 500,000美元,并与上述两个订单撮合成交。
做市商保护监控的结果:
帐户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/USDC的时间窗口windows_ms 设置为1000,qty设置为200,delta_limit 设置为 100.
- [时间10000] BTC/USDT 币对买入80个 BTC 做市商保护订单成交
- [时间10000] BTC/USDC 币对买入80个 BTC 做市商保护订单成交
- BTC/USDT币对qty = |80|,净交易 delta+80,做市商保护未触发
- BTC/USDC币对qty = |80|, 净交易 delta+80,做市商保护未触发
- [时间10200] BTC/USDC 币对买入90个BTC做市商保护订单成交
- BTC/USDT 币对 qty = |80|, 净交易 delta+80, 做市商保护未触发
- BTC/USDC 币对 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, 做市商保护触发