Option Moneyness TimeSeries

API to retrieve the out-of-the-money (OTM) share of options open interest and volume for a given ticker, as a daily timeseries.

A call is out-of-the-money when its strike is above the closing price on

that date; a put when its strike is below it. All expiries are included, and
each percentage is measured against that side's total open interest (or volume) for the
same date.

Available Data Points:

  • date: Trading date for the row (in YYYY-MM-DD format).
  • otmCallPctOi: Percentage (0–100) of call open interest which is out-of-the-money.
  • otmCallPctVolume: Percentage (0–100) of call volume which is out-of-the-money.
  • otmPutPctOi: Percentage (0–100) of put open interest which is out-of-the-money.
  • otmPutPctVolume: Percentage (0–100) of put volume which is out-of-the-money.
  • otmCallOi: Out-of-the-money call open interest, in contracts — the numerator of otmCallPctOi.
  • otmCallVolume: Out-of-the-money call volume, in contracts — the numerator of otmCallPctVolume.
  • otmPutOi: Out-of-the-money put open interest, in contracts — the numerator of otmPutPctOi.
  • otmPutVolume: Out-of-the-money put volume, in contracts — the numerator of otmPutPctVolume.

The full side totals are not returned, but follow directly from the fields above: for example callOi = otmCallOi ÷ (otmCallPctOi ÷ 100).

Nulls: a percentage is null when that side had no open interest (or no

volume) on that date — the share is undefined rather than zero. The out-of-the-money
totals beside it are still returned, and the other side is unaffected, so a ticker with puts
but no calls still yields a row with its put figures populated.

Note: classification is strict on both sides, so a strike landing exactly on the

closing price counts as neither out-of-the-money nor in-the-money. The complement of these
figures is therefore "in-the-money or at-the-money"; the exactly-at-the-money bucket
is a very small share of open interest.

Dates are returned only where the figures are available: a date with no options data, or with no closing price to measure strikes against, is omitted from the response rather than returned with empty values. A request covering only such dates returns no rows.

Try it out! You can test the API with the trial key TEST. Simply include it in your request headers; either here, or add the header "Ortex-Api-Key": "TEST" to your http request.

Trial key restrictions: A list of randomly selected rows will be returned

Get full access! Get a key at app.ortex.com/apis

Path Params
string
required

Exchange symbol (e.g. "nyse", "nasdaq"), MIC code (e.g. "xnys", "xnas") or two character ISO country code (e.g "us", "ca" for ALL country exchanges)

string
required

Ticker symbol

Query Params
string

Format yyyy-mm-dd. Defaults to 30 days before to_date. The requested range may span at most 5500 days.

integer

A page number within the paginated result set.

integer

Number of results to return per page.

string

US instruments only. Picks which instrument a ticker refers to, as of the given date (format yyyy-mm-dd).

What it does: changes instrument resolution only. It does not filter or move the returned data — that stays controlled by the endpoint's own data parameters (such as from_date / to_date, or as_of_date on the options endpoints). Think of it as answering "who owned this ticker on this date?", not "what data do I want back?".

Why you need it: tickers get reused, renamed and delisted over time (e.g. FBMETA; SPLK was delisted when Cisco acquired Splunk). By default the endpoint matches the ticker on the exchange in the URL path to the currently-active instrument — so a ticker that no longer trades returns 404, and a recycled ticker resolves to today's owner, not the historical one.

When set: the URL path exchange is ignored and all US exchanges are searched for whichever instrument held the ticker on that date. This lets you pull history for a company that has since changed ticker, delisted, or moved exchange.

Rules:

  • Omitted → current behaviour, exactly unchanged.
  • Present (any value, even blank or a future date) → as-of resolution is applied; a blank value defaults to today.
  • A non-US exchange / MIC / country code combined with this parameter returns 400.

Note: on the options endpoints this is distinct from as_of_date, which filters the option data snapshot — ticker_as_of_date only selects the instrument.

string

Format yyyy-mm-dd. Defaults to today if not provided.

Responses

400

Invalid request parameters

403

Not authorized

404

Data not found

429

Rate limit exceeded

500

Internal server error

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json