Market Maker Protection API Configuration

  • Updated

Deribit provides a suite of API methods for managing Market Maker Protection (MMP) settings. These methods allow for real-time configuration and monitoring of MMP parameters, ensuring efficient risk management for market makers.

For comprehensive details on MMP configuration and management, refer to the Deribit API Documentation.

Tip

MMP Settings can also be configured inside Account settings page

mmp_settings.png

Available API Methods

Notice

Authentication: All private API methods require prior authentication using the public/auth method. Ensure that your WebSocket connection is authenticated before invoking private methods.

  • private/get_mmp_config: Retrieves the current MMP configuration for a specified index and MMP group. If no parameters are provided, it returns all configurations.

  • private/set_mmp_config: Sets or updates the MMP configuration for a specified index and MMP group.

  • private/reset_mmp: Resets the MMP state for a specified index and MMP group, allowing for immediate resumption of quoting after a trigger.

  • private/get_mmp_status: Retrieves the current MMP status, indicating whether MMP is active or has been triggered for a given index and MMP group.

Key Parameters

index_name (string, required)

Identifier of the derivative instrument (index) on the Deribit platform, such as btc_usd or eth_usd. All configuration settings will apply specifically to this index.

interval (integer, required)

The duration of the monitoring window in seconds. For example, an interval of 3 implies a 3-second window.

  • The interval begins after the first trade.

  • If a new trade is executed after the interval has ended, a new interval is started, and counters reset.

  • If a trade occurs during an already running interval, that interval continues unaffected.

This mechanism allows the platform to track activity in short, rolling windows to identify potentially risky trading behavior.

frozen_time (integer, required)

Time in seconds that MMP remains active after being triggered. Once this frozen period has passed, MMP will automatically reset, allowing new orders to be submitted.

  • If you want to disable automatic reset, set frozen_time to 0. In that case, a manual reset is required using the private/reset_mmp method.

  • Manual reset is also possible during the frozen time period.

quantity_limit (float, required)

The total traded quantity, measured in units of the base currency (e.g., BTC in BTC-PERPETUAL), within the interval.

  • This count is direction-agnostic—a buy followed by a sell counts double.

    Example: Buy 10 BTC and sell 10 BTC = 20 total quantity.

  • Applicable to both options and futures.

    Note

    Once this is set, an initial margin will be reserved even without any open positions. Initial Margin due to quantity_limit = quantity_limit * 0.03

delta_limit (float, required)

The maximum allowable net transaction delta change during the interval.

  • Expressed in units of base currency.

  • The delta limit is treated as an absolute threshold:

    e.g., delta_limit: 10 → MMP is triggered if net transaction delta exceeds +10 or drops below -10.

  • Direction matters: buying +5 delta and selling −5 delta cancels out if within the same interval.

    Note

    Note that we use the net transaction delta instead of delta. Net Transaction Delta = Delta - Mark Price. In the rest of this document, "delta" actually refers to net transaction delta

vega_limit (float, optional)

The maximum change in vega exposure allowed within a given interval, measured in absolute terms.

  • Expressed in USD, representing the change in sensitivity to implied volatility across executed trades.

  • This parameter is primarily relevant for options traders managing risk in volatile markets.

  • Similar to delta_limit, the vega_limit is direction-aware and evaluated on a net basis. If the exposure exceeds the set threshold (positively or negatively), MMP will be triggered.

Notice

When evaluating Delta and Vega limits for MMP, Deribit uses the greeks at the moment of trade execution. The system does not re-evaluate Delta or Vega using live greeks at the time of MMP checking.

mmp_group (string, optional)

Specifies the MMP group used for Mass Quotes.  If omitted, the methods apply to the default MMP settings.

block_rfq(boolean, optional)

When set to true, the methods apply to Block RFQ MMP settings. See Block RFQ - Configuring MMP for more details.

MMP Flag on Limit Orders (buy/sell/edit)

Clients can control whether individual limit orders are subject to Market Maker Protection by setting the mmp flag in buy, sell, or edit requests.

  • To enable or disable MMP for a specific order, include "mmp": true or "mmp": false in the request.

  • If you’re only updating price or size and wish to retain the current MMP setting, you can simply omit the mmp parameter—its state will remain unchanged.

  • The edit method supports toggling the MMP flag, allowing you to apply or remove protection without canceling and resubmitting the order.

MMP Events and Notifications

Deribit provides real-time feedback on MMP (Market Maker Protection) activity via user.mmp_trigger.{index_name} subscription and event flags, enabling clients to react promptly when protection is triggered.

Clients can subscribe to the channel:

user.mmp_trigger.{index_name}

Replace {index_name} with the desired instrument index, such as:

user.mmp_trigger.btc

Upon MMP being triggered for a given index, the client will receive a trigger notification in the following format:

{  "frozen_until": 1594390902986 }
  • The value is a Unix timestamp in milliseconds indicating until when the MMP is active (i.e., orders remain blocked).

  • If frozen_until: 0, it means MMP will remain active until manually reset using the private/reset_mmp method.

This notification allows the client to track MMP state per index and avoid submitting new orders that would be rejected due to ongoing MMP freeze.

MMP Flags in WebSocket Responses

In addition to the event channel, Deribit also communicates MMP-trigger-related actions using a special field in order event messages.

If an order is cancelled as a direct result of an MMP trigger, the order event will include:

{  "mmp_cancelled": true }

This field will be absent in all other cases, allowing clients to clearly distinguish between MMP-related cancellations and other reasons (e.g., manual, timeout, user API).

Best Practices
  • Monitor both user.mmp_trigger events and mmp_cancelled flags to maintain a complete picture of your quoting activity and protection status.

  • On receiving a frozen_until timestamp, you should pause quote submission for the affected index until the freeze period ends or you manually reset MMP.

  • Always handle the mmp_cancelled flag explicitly in order management logic to prevent resubmitting orders that may immediately be cancelled again.

FIX Configuration

Please review the FIX specs here: https://docs.deribit.com/#mmprotection-limits-mm