Slippage

Definition

Slippage refers to the difference between the expected price of a trade (based on the current order book) and the actual price at which the trade is executed.

Name
MetricID
Unit
Interval

Order Book Slippage, 1K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 5K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 10K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 20K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 30K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 40K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 50K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 60K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 70K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 80K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 90K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 100K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 200K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 300K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 400K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 500K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 600K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 700K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 800K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 900K USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 1M USD Order, Ask, Percentage

Dimensionless

1h

Order Book Slippage, 1K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 5K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 10K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 20K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 30K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 40K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 50K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 60K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 70K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 80K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 90K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 100K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 200K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 300K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 400K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 500K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 600K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 700K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 800K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 900K USD Order, Bid, Percentage

Dimensionless

1h

Order Book Slippage, 1M USD Order, Bid, Percentage

Dimensionless

1h

Details

Price slippage is the difference, represented as a percentage, between the quoted price of an asset and the execution price of a market order. The bid slippage metrics represent the price slippage of a market sell order. And the ask slippage metrics represent the price slippage of a market buy order. The slippage reflects how much the price of the asset moves when buying or selling into the market. For instance, if you are purchasing a quantity of $1,000 worth of the asset, the slippage metric tells you how much higher the price will be than the price you would expect if there was no slippage (i.e., based purely on the current bid-ask spread).

The metric is calculated using the following steps:

Convert the market order in U.S. dollars to units of the base asset for spot markets and units of the contract:

  • Market Order Size (units)=Market Order Size (USD)Price of Base Asset (USD)\text{Market Order Size (units)} = \frac{\text{Market Order Size (USD)}}{\text{Price of Base Asset (USD)}}

  • Market Order Size (contract units)=Market Order Size (USD)Contract Size×Contract Size Asset (USD)\text{Market Order Size (contract units)} = \frac{\text{Market Order Size (USD)}}{\text{Contract Size} \times \text{Contract Size Asset (USD)}}

Determine the cumulative bid or ask amount at increasing price levels including and above the best bid or ask. This is the total quantity of assets that are willing to be bought or available for sale at each price point:

  • L(n)=i=1nQiL(n) = \sum_{i=1}^{n} Q_i

Find the price at which a $X market order in U.S. dollars can be fully executed. This is done by consuming the bid or ask orders starting at the best bid or ask and moving up the order book until $X worth of orders are filled. In other words, find the smallest nn such that:

  • L(n)Market Order SizeL(n) \geq \text {Market Order Size}

Calculate the effective execution price as the volume-weighted average price of the orders that are required to fully execute the market order, taking into account that the last limit order that the market order matches with may only be partially executed:

  • Pexec=i=1nPimin(Qi,XL(i1))i=1nmin(Qi,XL(i1))P_{\text{exec}} = \frac{\sum_{i=1}^{n} P_i \min\left(Q_i, X - L(i-1) \right)}{\sum_{i=1}^{n} \min\left(Q_i, X - L(i-1) \right)}

Calculate the slippage as the percentage difference between the effective execution price at which the order is executed and the midprice (the price you would expect without slippage):

  • Liquidity Slippage $X Percent=(PexecPmidpricePmidprice)×100 \text{Liquidity Slippage } \$X \text{ Percent} = \left( \frac{\left| P_{\text{exec}} - P_{\text{midprice}} \right|}{P_{\text{midprice}}} \right) \times 100

For example, let’s say an investor wishes to purchase 1 BTC at the best ask price of $25,000 and they submit a market order. The top of the order book has a sell order at this price for 0.25 BTC, so .25 BTC is purchased at $25,000 per BTC. The next order in the orderbook is for 0.5 BTC, but at a price of $25,250. This is executed and 0.5 BTC is purchased at $25,250 per BTC. 0.75 BTC has now been purchased, and 0.25 BTC remain. The investor completes his order at the next offer in the orderbook, 0.5 BTC for $25,500. As only 0.25 BTC are needed to complete the 1 BTC purchase, the investor fills 0.25 BTC at the price of $25,500 per BTC. The effective execution price of this purchase is the average price of the individual orders, weighted by quantity:

  • 0.25×$25,000+0.5×$25,250+0.25×$25,5000.25+0.5+0.25=$25,250\frac{0.25\times\$25,000 + 0.5\times\$25,250 + 0.25\times\$25,500}{0.25 + 0.5 + 0.25} = \$25,250

The slippage is the percentage difference in the market price and this execution price:

  • $25,250$25,000$25,000=1%\frac{\$25,250-\$25,000}{\$25,000} = 1\%

So this hypothetical purchase of 1 BTC incurred 1% slippage. If the trade size was different, then the slippage would change; that is, slippage is dependent on order size.

API Endpoints

Liquidity slippage metrics can be accessed using the following endpoints:

  • timeseries/market-metrics

Market metrics

get

Returns metrics for specified markets. Results are ordered by tuple (market, time). To fetch the next page of results use next_page_url JSON response field.

Authorizations
Query parameters
marketsstring[]Required

Comma separated list of markets or market patterns like exchange-* or exchange-*-spot or *USDT-future. Use the /catalog-all/markets endpoint for the full list of supported markets.

metricsstring[]Required

Comma separated metrics to request time series data for. Use the /catalog-all/market-metrics endpoint for the full list of supported metrics per exchange-asset combination.

Example: ["liquidations_reported_future_buy_units_1d","liquidations_reported_future_sell_units_1d"]
frequencystringOptional

Frequency of the market metrics. Supported values are 1m, 5m, 1h, 1d.

Default: 1d
start_timestringOptional

Start of the time interval. This field refers to the time field in the response. Multiple formats of ISO 8601 are supported: 2006-01-20T00:00:00Z, 2006-01-20T00:00:00.000Z, 2006-01-20T00:00:00.123456Z, 2006-01-20T00:00:00.123456789Z, 2006-01-20, 20060120. Inclusive by default. UTC timezone by default. Z suffix is optional and timezone parameter has a priority over it. If start_time is omitted, response will include time series from the earliest time available.

end_timestringOptional

End of the time interval. This field refers to the time field in the response. Multiple formats of ISO 8601 are supported: 2006-01-20T00:00:00Z, 2006-01-20T00:00:00.000Z, 2006-01-20T00:00:00.123456Z, 2006-01-20T00:00:00.123456789Z, 2006-01-20, 20060120. Inclusive by default. UTC timezone by default. Z suffix is optional and timezone parameter has a priority over it. If end_time is omitted, response will include time series up to the latest time available.

start_inclusivebooleanOptional

Inclusive or exclusive corresponding start_* parameters.

Default: true
end_inclusivebooleanOptional

Inclusive or exclusive corresponding end_* parameters.

Default: true
timezonestringOptional

Timezone name for start_time and end_time timestamps. This parameter does not modify the output times, which are always UTC. Format is defined by TZ database.

Default: UTCExample: America/New_York
page_sizeinteger · int32 · min: 1 · max: 10000Optional

Number of items per single page of results. The value of this parameter is ignored if the endpoint supports the format parameter and its value is set to json_stream.

Default: 100
paging_fromstring · enumOptional

Where does the first page start, at the start of the interval or at the end. The value of this parameter is ignored if the endpoint supports the format parameter and its value is set to json_stream.

Default: endPossible values:
sortstring · enumOptional

How results will be sorted. Metrics are sorted by (market, time) by default. If you want to sort 1d metrics by (time, market) you should choose time as value for the sort parameter. Sorting by time is useful if you request metrics for a set of markets.

Default: marketPossible values:
limit_per_marketinteger · int32Optional

How many entries per market result should contain. It is useful when multiple markets are requested.

prettybooleanOptional

Human-readable formatting of JSON responses.

Default: false
formatstring · enumOptional

Format of the response.

Default: jsonPossible values:
next_page_tokenstringOptional

Token for receiving the results from the next page of a query. Should not be used directly. To iterate through pages just use next_page_url response field.

Responses
200
Time series of market metrics.
application/json
get
GET /v4/timeseries/market-metrics HTTP/1.1
Host: api.coinmetrics.io
Accept: */*
{
  "data": [
    {
      "market": "binance-BTCUSDT-future",
      "time": "2022-01-19T20:00:00.000000000Z",
      "liquidations_reported_future_buy_usd_5m": "1298.36866"
    },
    {
      "market": "binance-BTCUSDT-future",
      "time": "2022-01-19T20:10:00.000000000Z",
      "liquidations_reported_future_buy_usd_5m": "39713.60016"
    },
    {
      "market": "binance-BTCUSDT-future",
      "time": "2022-01-19T20:30:00.000000000Z",
      "liquidations_reported_future_buy_usd_5m": "29084.10932"
    },
    {
      "market": "binance-BTCUSDT-future",
      "time": "2022-01-19T21:00:00.000000000Z",
      "liquidations_reported_future_buy_usd_5m": "46294.99528"
    }
  ]
}
curl --compressed "https://api.coinmetrics.io/v4/timeseries/market-metrics?markets=coinbase-btc-usd-spot&metrics=liquidity_slippage_100K_ask_percent&frequency=1h&limit_per_market=1&api_key=<your_key>"

Examples

A sample of the liquidity slippage percentage for a $100K buy order on the coinbase-btc-usd-spot market is shown below:

{
  "data" : [ {
    "market" : "coinbase-btc-usd-spot",
    "time" : "2023-05-04T20:00:00.000000000Z",
    "liquidity_slippage_100K_ask_percent" : "0.038994542840022156"
  }, {
    "market" : "coinbase-btc-usd-spot",
    "time" : "2023-05-04T21:00:00.000000000Z",
    "liquidity_slippage_100K_ask_percent" : "0.02565041632600015"
  }, {
    "market" : "coinbase-btc-usd-spot",
    "time" : "2023-05-04T22:00:00.000000000Z",
    "liquidity_slippage_100K_ask_percent" : "0.023751750174591604"
  }, {
    "market" : "coinbase-btc-usd-spot",
    "time" : "2023-05-04T23:00:00.000000000Z",
    "liquidity_slippage_100K_ask_percent" : "0.012357077898177927"
  }, {
    "market" : "coinbase-btc-usd-spot",
    "time" : "2023-05-05T00:00:00.000000000Z",
    "liquidity_slippage_100K_ask_percent" : "0.004505088323999404"
  } ]
}
  • market: The id of the markets.

  • time: The time in ISO 8601 date-time format.

  • liquidity_slippage_100K_ask_percent: The percent slippage of a $100K buy order executed at this time in this market.

Frequently Asked Questions

Why are some of the values for some slippage metrics and observations missing?

Coin Metrics calculates slippage metrics from order book snapshots obtained from centralized exchanges. Coin Metrics will obtain the deepest and most complete order book snapshot that the exchange offers — however, the order book depth allowed varies by exchange.

If the order book depth for a market is insufficient to calculate a particular slippage depth metric for a $X market order, Coin Metrics will assign a null value to the observation. The null value was chosen instead of using the available depth to calculate a value (even if the order book depth is insufficient to calculate a value for a given order size) to provide transparecy to the user that the order book depth is too shallow. If a non-null value is desired, it is recommended to select a metric with a smaller $X order size.

For more information on the available order book depth by exchange, please see Are there any limitations to the order book depth provided by each exchange? Please note that some exchanges only provide an order book with very shallow depth, such as the top 100 levels. Therefore, a large number of nulls can be expected from markets from these exchanges.

What units are the slippage metrics in?

The values are in percent units. For example, if the value is 0.0076, it should be interpreted as 0.0076%.

How often are the metrics calculated?

The depth metrics are calculated once an hour.

Release History

  • Release Version. Market Data Feed v2.8 on May 2023.

Last updated

Was this helpful?