Skip to content

Options · Exposure, levels, volatility and OI

Options market map

Modeled exposure and executed flow by strike for SPX and SPXW.
On this page

A one-view picture of where positioning and activity sit: at each strike the modeled dealer gamma exposure (calls, puts, net, gross) next to the premium executed there, with the totals and, when fresh references exist, the mapping from the index to its dated futures contract. It covers the live SPX and SPXW chain only and requires fresh chain and underlying inputs. Exposure uses the classic open interest model. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.

Example request

curl -sS --get "https://api.ordermap.si/v1/options/market-map" \
  -H "Authorization: Bearer $ORDERMAP_API_KEY" \
  --data-urlencode underlying_symbol=SPXW

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

Parameters

4 parameters, 1 required.

ParameterType and limitsDescription
underlying_symbolqueryrequiredstringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$SPX or SPXW (this view covers those roots only).
max_dtequeryoptionalintegermin 0max 3650Only expirations within this many days.
date_of_expiryqueryoptionalstringdateOnly this expiration.
contract_typequeryoptionalstringcallputCalls or puts. Omit for both.

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

  • dataobjectrequiredPositioning and flow context.33 fields inside
    • exposure_modelstringrequiredName of the positioning assumption behind the exposures, for example oi_signed_proxy-v1: a model, not an observation.
    • exposure_unitstringrequiredWhat one unit of exposure is.
    • flowobjectrequiredSession flow totals.6 fields inside
      • call_premiumnumberrequiredCall premium in US dollars.
      • net_call_premiumnumberrequiredCall premium at the ask minus at the bid.
      • net_put_premiumnumberrequiredPut premium at the ask minus at the bid.
      • put_premiumnumberrequiredPut premium in US dollars.
      • tradesintegerrequiredPrints.
      • volumeintegerrequiredContracts traded.
    • futures_mappingobject | nullrequiredIndex to dated futures mapping, when fresh references exist.4 fields inside
      • basisnumberrequiredFutures minus index.
      • contractstringrequiredFutures contract.
      • futures_referencenumberrequiredFutures price.
      • index_referencenumberrequiredIndex level.
    • strikesarray<object>requiredStrikes, ascending.11 fields inside
      • call_exposurenumberrequiredModeled call exposure.
      • call_premiumnumberrequiredCall premium executed.
      • gross_exposurenumberrequiredGross exposure.
      • net_call_premiumnumberrequiredCall ask minus bid premium.
      • net_exposurenumberrequiredNet exposure.
      • net_put_premiumnumberrequiredPut ask minus bid premium.
      • put_exposurenumberrequiredModeled put exposure.
      • put_premiumnumberrequiredPut premium executed.
      • strikenumberrequiredStrike.
      • tradesintegerrequiredPrints.
      • volumeintegerrequiredContracts traded.
    • totalsobjectrequiredExposure totals.4 fields inside
      • callnumberrequiredCalls.
      • grossnumberrequiredGross.
      • netnumberrequiredNet.
      • putnumberrequiredPuts.
    • underlying_pricenumber | nullrequiredUnderlying price.
    • underlying_symbolstringrequiredThe requested underlying.
  • metaobjectrequiredMeta object

Example response

{
  "data": {
    "exposure_model": "oi_signed_proxy-v1",
    "exposure_unit": "USD per 1% spot move",
    "flow": {
      "call_premium": 41200000,
      "net_call_premium": 6180000,
      "net_put_premium": 5070000,
      "put_premium": 33800000,
      "trades": 10100,
      "volume": 343000
    },
    "futures_mapping": {
      "basis": 30.35,
      "contract": "ESZ6",
      "futures_reference": 6051.75,
      "index_reference": 6021.4
    },
    "strikes": [
      {
        "call_exposure": 6050000000,
        "call_premium": 2100000,
        "gross_exposure": 12520000000,
        "net_call_premium": 320000,
        "net_exposure": -420000000,
        "net_put_premium": -20000,
        "put_exposure": -6470000000,
        "put_premium": 320000,
        "strike": 6000,
        "trades": 212,
        "volume": 5000
      }
    ],
    "totals": {
      "call": 13800000000,
      "gross": 28800000000,
      "net": -1200000000,
      "put": -15000000000
    },
    "underlying_price": 6021.4,
    "underlying_symbol": "SPX"
  },
  "meta": {
    "as_of": 1760659200123,
    "coverage": {
      "complete": true
    },
    "delay_ms": 0,
    "delayed": false,
    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
    "source": "opra"
  }
}

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