Skip to content

Futures · Order flow

Futures CVD

Cumulative volume delta of a futures session.
On this page

Running total of buy volume minus sell volume, one point per print, over a trading session; prints with an unknown side are not counted. The series starts at zero at the start of the selected window. A window of more than 10,000 prints is refused with 413 range_too_large: narrow start_time and end_time. Reads the live capture; a window it no longer holds answers 422 data_unavailable.

Example request

curl -sS --get "https://api.ordermap.si/v1/futures/cvd" \
  -H "Authorization: Bearer $ORDERMAP_API_KEY" \
  --data-urlencode symbol=ES

Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.

Parameters

6 parameters, none required.

ParameterType and limitsDescription
symbolqueryoptionalstringat most 3 characterspattern ^[A-Za-z0-9]{1,3}$Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.
contractqueryoptionalstringat most 6 characterspattern ^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.
sessionqueryoptionalstringrthglobexgthcurbcombineddefault rthTrading session to read. rth is 09:30 to 16:00 Eastern Time; globex the full 18:00 to 17:00 session; gth the overnight window (20:15 to 09:25); curb 16:15 to 17:00; combined gth plus rth. Futures trade through the night, so every session is available on every plan.
datequeryoptionalstringdateTrading date (YYYY-MM-DD) of the session; default the current or most recent one.
start_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000Narrow the session to start at or after this time.
end_timequeryoptionalintegerunix-msmin 946684800000max 4102444800000Narrow the session to end at or before this time.

Response

StatusMeaningBody
200Successful response.Schema below
400Invalid, unknown or repeated parameters, or an invalid cursor.Error object
401Missing or invalid API key.Error object
403The plan, dataset release or account state does not allow this request.Error object
422The request is valid but no data exists for it.Error object
429Rate limit, burst limit or cooldown; wait Retry-After seconds.Retry-AfterError object
500Internal error.Error object
503Data temporarily unavailable; retry after Retry-After seconds.Retry-AfterError object
504The request timed out.Error object

Authenticated responses carry the X-RateLimit-* headers (see rate limits); 429 and 503 add Retry-After.

200 response body

  • dataarray<object>required3 fields inside
    • contractstringrequiredDated contract.
    • timestampintegerunix-msrequiredTime of the print. Unix epoch milliseconds (UTC).
    • valuenumberrequiredCumulative buy minus sell contracts after the print.
  • metaobjectrequiredMeta object

Example response

{
  "data": [
    {
      "contract": "ESZ6",
      "timestamp": 1792159200123,
      "value": 1842
    }
  ],
  "meta": {
    "as_of": 1760659200123,
    "coverage": {
      "complete": true
    },
    "delay_ms": 0,
    "delayed": false,
    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
    "source": "cme"
  }
}

Values are illustrative. Missing values are null, never 0.