Skip to main content

Price Protection Bands

To provide protection from “fat-finger” (UI) and algorithmic errors that place/execute orders far outside prevailing prices

Updated over a week ago

Purpose of the Feature

To provide protection from “fat-finger” (user input error on UI) and/or algorithmic errors that place/execute orders far outside prevailing prices

Definitions

Term

Definition

Mark Price

External vendor provided price: a volume-weighted average of perps' mid prices at several top exchanges.

Served as “mark_price” field in our API endpoints

Price_bandwidth_percent

Coin-specific symmetrical (i.e. same percent for buy and sell orders) ±% band around Mark within which aggressive executions must occur.

  • 10% by default for most currencies

  • Coin-specific overrides for some currencies (see table below)

Limit down price

and

Limit up price.

Price bands restrict the execution of aggressive orders to some bandwidth that contains the Mark Price.

Any instrument will have dynamic Limit down price and Limit up price.

The price band for a perpetual future market is centered around the Mark Price according to the % bandwidth parameter ( price_bandwidth_percent ), as follows:

Limit_down_price = Mark_Price * ( 1 - price_bandwidth_percent)

Limit_up_price = Mark_Price * ( 1 + price_bandwidth_percent)

Aggressive Order

Any order that would immediately match on arrival (market or marketable limit).

Passive Order

Limit order that posts to the book without crossing the spread.

Expected Behavior

  • Bandwidth parameter = 5%

  • Mark price = $100

Limit down price = $95 and Limit up price = $105

  • Limit Orders

    • Aggressive Limit Orders with Limit Prices outside of the [ Limit_down_price , Limit_up_price ] interval (aka the Price Protection Band) will be fully rejected ( no partial execution occurs).

      • A (aggressive) limit BUY order at $106 is rejected

      • A (aggressive) limit SELL order at $94 is rejected

    • Passive Limit Orders with Limit Prices outside of the [ Limit_down_price , Limit_up_price ] interval (aka the Price Protection Band) will be accepted.

      • A (passive) limit BUY order at $94 is accepted

      • A (passive) limit SELL order at $106 is accepted

  • Market Orders

    • Market Orders are to be converted to aggressive Limit IOC orders, with BUY Orders assigned a limit price = Limit_up_price , and SELL Orders assigned a limit price = Limit_down_price

      • If no quantity can be filled inside the band (e.g., spread widens above Limit_up_price), the entire IOC is rejected.

    • A market BUY order is assigned a limit price = $105. Any quantity that is not immediately filled (on the resulting $105 order) is rejected (cancelled back to the user)

    • A market SELL order is assigned a limit price = $95. Any quantity that is not immediately filled (on the resulting $95 order) is rejected (cancelled back to the user)

  • Note: the logic is different between Limit and Market Orders:

    • Aggressive Limit Orders with Limit Prices outside of the [ Limit_down_price , Limit_up_price ] interval are fully rejected ( no partial execution occurs).

    • Market Orders are converted to aggressive Limit IOC orders, with Limit_up_price (BUY) / Limit_down_price (SELL) - this allows for partial execution within the Limit_up / Limit_down price.

Expected Behavior - TPSL Price Protection

  • The user will not be able to create trigger limit orders where the limit price is more than Price_bandwidth_percent % worse than the trigger price (i.e. more than Price_bandwidth_percent % higher than the trigger price for buy orders, more than Price_bandwidth_percent % lower than the trigger price for sell orders )

  • Once the TPSL order is triggered (i.e. converted to a Market or Limit order, depending on whether it was setup as TPSL-Market or TPSL-Limit), the same Expected Behavior as described above will be applied to the resulting Market and Limit orders

    • Aggressive Limit Orders with Limit Prices outside of the [ Limit_down_price , Limit_up_price ] interval (aka the Price Protection Band) will be rejected.

    • Passive Limit Orders with Limit Prices outside of the [ Limit_down_price , Limit_down_price ] interval (aka the Price Protection Band) will be accepted.

    • Market orders will be converted to aggressive Limit IOC orders, with BUY Orders assigned a limit price = Limit_up_price , and SELL Orders assigned a limit price = Limit_down_price

Coin-Specific Overrides of Price Bandwidth Percent

  • The default value is 10% for both limit_up (“high”) and limit_down (“low”)

Below table shows the Instruments for which the default price band values are overridden

  • note: for all the coins , the percent band is symmetrical, i.e. limit_up (high) == limit_down (low)

Coin

Override Value ( in % )

ADA

5

BNB

5

BTC

5

ETH

5

LTC

5

SOL

5

XLM

5

XRP

5

H

15

MNT

15

VIRTUAL

15

Did this answer your question?