Implied Volatility

API QuantAPI DeveloperRequires options add-on

Implied volatility and skew for a group of stocks on a single date.

This API returns data for multiple stocks — every constituent of a market index, or of one of your own universes — for the specified date.

One row is returned per US-listed stock with listed options, carrying its identifiers alongside its readings as of the latest processed trading day on or before the requested date (today when date is omitted); the row's date is that trading day.

Track what the options market expects a stock to do. Implied volatility is the volatility that, put into an option pricing model, reproduces the market price of the stock's listed options. It is annualized and quoted in percent, so it compares directly with historic (realized) volatility.

Every row carries at-the-money implied volatility at three constant maturities (30, 60 and 90 calendar days) and four readings of the 30-day smile: the 25-delta put and call volatilities, their difference (the 25-delta skew), and the volatility at strikes of 90% and 110% of the stock price.

Available Data Points:

  • Date: The specific date for which the data is retrieved (YYYY-MM-DD format).
  • Exchange Symbol: Symbol of the exchange where the security trades.
  • Ticker: The ticker symbol associated with the security.
  • Company Name: The name of the company issuing the security.
  • Ortex Company ID: Unique id for a company.
  • Ortex Security ID: Unique id for a security issued by a company.
  • Ortex Tradable Item ID: Unique id for a listing of a security.
  • IV 30D: At-the-money implied volatility at a constant 30-day maturity, in percent.
  • IV 60D: At-the-money implied volatility at a constant 60-day maturity, in percent.
  • IV 90D: At-the-money implied volatility at a constant 90-day maturity, in percent.
  • IV Put 25D 30D: Implied volatility of the 25-delta put at 30 days, in percent.
  • IV Call 25D 30D: Implied volatility of the 25-delta call at 30 days, in percent.
  • Skew 25D 30D: IV Put 25D 30D minus IV Call 25D 30D, in volatility points.
  • IV 90 Moneyness 30D: Implied volatility at a strike of 90% of the stock price, 30 days, in percent.
  • IV 110 Moneyness 30D: Implied volatility at a strike of 110% of the stock price, 30 days, in percent.

Method

Computed each trading day from the end-of-day US option chain. Listed expiries move through time, so a reading taken from whichever expiry is nearest 30 days jumps every time that expiry rolls off. Each maturity here is instead interpolated between the two listed expiries either side of it, linearly in total variance (volatility squared times time), the method used for the VIX; total variance is additive in time, which is what keeps the series continuous through an expiry roll. Expiries less than 7 days out are not used. Where no expiry lies beyond a target, the nearest expiry within half the target's length again is used as it stands; further away the value is null.

Smile and skew

Each expiry's smile is read from out-of-the-money options (puts below the forward price, calls above it), with contracts that have no bid left out. At-the-money is at the forward price, implied from put-call parity on the strikes nearest the stock price, so an upcoming dividend does not tilt it. The 25-delta strikes use Black-Scholes-Merton deltas with each contract's own implied volatility. The skew is the 25-delta put volatility minus the 25-delta call volatility: positive when downside protection costs more than upside, the normal state for indices and most large stocks. Wing and moneyness readings are only interpolated between quoted strikes, never extrapolated past the last one.

Coverage

US-listed stocks and ETFs with listed options; a non-US listing is answered with 400 instrumentNotCovered. History starts in January 2012. A reading is null where that day's chain cannot support it: no strikes either side of the money, the 25-delta point or the moneyness level, or no expiry near enough the maturity. Expect more nulls for thinly traded names and before 2022, when the vendor's chains were less complete. A trading day appears once its end-of-day chain has been processed, normally the following morning (UTC).

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: Trial keys may be limited to a specific date range and set of regions. Requests outside the allowed regions or entirely outside the allowed date range are rejected; a date window that partially overlaps the allowed range is trimmed to it, reported in meta.restriction.

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

Query Params
string

The ORTEX index identifier used by this endpoint. Return one row per constituent of this market index, as of the requested date. Pick one from the examples, or type another ORTEX index identifier; the full list, with each index's name, country and constituent count, is GET /api/v11/reference/indices/list/. Matching ignores case, so us500 and US500 are the same index. Supply exactly one of 'index' or 'universe' — sending both, or neither, returns 400 invalidSelection. An unrecognized index identifier returns 404 indexNotFound. Membership is point-in-time: a date before the index's membership history starts returns an empty page with emptyReason requestedRangeOutsideAvailableData, never today's constituents.

string

Return one row per constituent of one of your own universes, matched case-insensitively by name. Supply exactly one of 'index' or 'universe' — sending both, or neither, returns 400 invalidSelection. A name you do not own, or that does not exist, returns 404 universeNotFound. On a Quant key, a universe holding more than 250 constituents returns 409 universeSizeExceeded; nothing in it is changed. Manage your universes at /api/v11/universes/.

date

The single date to return data for (defaults to the latest available). Format: YYYY-MM-DD.

integer

Page number within the paginated result set. Must be >= 1. Defaults to 1.

integer

Number of rows per page. The default and the maximum allowed depend on the API tier; a value above the tier maximum is rejected with 400 invalidPageSize.

string
enum
Defaults to json

Response format. "json" (default) or "csv".

Allowed:
Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

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