Skip to content

Futures · Order flow

Futures volume profile

Volume by price for a window, with point of control and value area.
On this page

The volume profile of a trading session or of a narrowed window: buy, sell and unknown volume at each price row, the point of control (the busiest row; the lowest price on a tie) and the value area, which grows outward from the point of control by taking the neighboring row with more volume (the lower one on a tie) until it holds value_area_pct of the volume. Reads the live capture; a window it no longer holds answers 422 data_unavailable. For the whole current session use /v1/futures/session-profile.

Example request

curl -sS --get "https://api.ordermap.si/v1/futures/volume-profile" \
  -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

8 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.
row_ticksqueryoptionalintegerdefault 1min 1max 1000Group prices into rows of this many ticks.
value_area_pctqueryoptionalnumberdefault 70min 1max 100Share of the volume the value area contains, in percent.

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

  • dataobjectrequiredThe volume profile of a window.20 fields inside
    • contractstringrequiredDated contract.
    • levelsarray<object>requiredVolume by price, lowest price first.10 fields inside
      • buy_volumeintegerrequiredAggressive buy contracts.
      • deltaintegerrequiredBuy minus sell contracts.
      • in_value_areabooleanrequiredThe row is inside the value area.
      • is_pocbooleanrequiredThe row is the point of control.
      • pricenumberrequiredPrice (lowest price of the row when grouped).
      • price_ticksstringrequiredPrice as an integer count of ticks, as a string.
      • sell_volumeintegerrequiredAggressive sell contracts.
      • total_volumeintegerrequiredAll contracts at the row.
      • trade_countintegerrequiredPrints at the row.
      • unknown_volumeintegerrequiredContracts whose side is unknown.
    • pocnumber | nullrequiredPoint of control: the price with the most volume (the lowest on a tie).
    • row_ticksintegerrequiredTicks per price row.
    • tick_sizenumberrequiredMinimum price increment.
    • total_volumeintegerrequiredContracts in the profile.
    • value_area_highnumber | nullrequiredUpper edge of the value area.
    • value_area_lownumber | nullrequiredLower edge of the value area.
    • value_area_pctnumberrequiredShare of the volume the value area is built to contain, in percent.
    • value_area_volumeintegerrequiredContracts inside the value area.
  • metaobjectrequiredMeta object

Example response

{
  "data": {
    "contract": "ESZ6",
    "levels": [
      {
        "buy_volume": 6120,
        "delta": -920,
        "in_value_area": true,
        "is_poc": true,
        "price": 6021.5,
        "price_ticks": "24086",
        "sell_volume": 7040,
        "total_volume": 13160,
        "trade_count": 3010,
        "unknown_volume": 0
      }
    ],
    "poc": 6021.5,
    "row_ticks": 1,
    "tick_size": 0.25,
    "total_volume": 412837,
    "value_area_high": 6025.25,
    "value_area_low": 6016.75,
    "value_area_pct": 70,
    "value_area_volume": 289100
  },
  "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.