Skip to main content

Options

An Options variable holds the options for one ondate: a list of tenors (maturities), each with an option chain of strikes with the call and put values side by side.

Introduction​

You get an Options variable by reading an EventOptions for an ondate:

eua = ${data:"NGE.EUA:OPTIONS:2026-09-16"}

An Options variable is made of three levels:

LevelTypeWhat it isIndex
OptionsOptionsThe options for an ondateby tenor: eua["2026M09"] or eua["M00"]
TenorOptionTenorOne maturity and its option chainby strike: t[85]
StrikeOptionStrikeOne strike, with its call and put valuess.call, s.put

Options properties​

NameDescriptionType
idThe id of the options, ending with the ondateString
ondateThe ondate of these options (YYYY-MM-DD)String
nameThe name of the optionsString
descriptionA description of the optionsString
currencyThe currency codeString
unitsThe units codeString
timezoneThe timezone of the ondateString
valueThe main value columnString
columnsThe columns in the strike tablesList
tenorsThe tenors (maturities) in delivery orderList
identityThe configured identityObject
propertiesThe properties: event, modified, and for a positions view positions, positionDate and unpricedObject

Options methods​

NameDescriptionReturn Type
tenor(code)Gets a tenor (maturity) by its tenor, absolute or relative code, null when it is not thereOptionTenor
value(tenor, strike, callPut, column)Gets a value of one optionScalar
count()The number of options (call and put prices at a strike count separately)Number
size()The number of tenorsNumber

OptionTenor properties​

NameDescriptionType
tenorThe tenor of this maturity (the value of the tenor property, e.g. 2026M09)String
absoluteThe absolute tenor code, e.g. 2026M09String
relativeThe relative tenor code on the ondate, e.g. M01String
startThe start of the delivery period (date)String
endThe end of the delivery period (date, inclusive)String
expiryThe expiry date of the optionsString
strikesThe strikes (option chain rows) in ascending orderList

OptionTenor methods​

NameDescriptionReturn Type
strike(price)Gets the option chain row for a strike, null when the strike is not thereOptionStrike
nearest(price)Gets the option chain row with the strike nearest to a price (e.g. the at-the-money strike for the underlying price)OptionStrike
values(callPut, column)Gets one column of the calls (C) or puts (P) as a list in strike order (missing values are null)List
strikePrices()Gets the strike prices as a list in ascending orderList
size()The number of strikesNumber

OptionStrike properties and methods​

NameDescriptionType
strikeThe strike price, as exact text so that strike == 85 worksScalar
callThe call option values by column (empty when there is no call at this strike)Object
putThe put option values by column (empty when there is no put at this strike)Object
get(callPut, column)Gets a value of the call (C) or put (P) at this strikeScalar

In a positions view the held side also has POSITION_VOLUME and TRADED_PRICE.

OptionsDates​

Reading an EventOptions without an ondate gives an OptionsDates: the ondates the options can be built for, each referencing OBJ:ID:YYYY-MM-DD. It works like the CurveDates of a curve, including ranges and the L, L-1 and -YYYY-MM-DD ids.

Examples​

Going through the option chains​

eua = ${data:"NGE.EUA:OPTIONS:2026-09-16"}
for t in eua
print t.tenor + " expires " + t.expiry
for s in t
print s.strike
print s.call
print s.put
next
next

A volatility smile​

sep = eua["2026M09"]
strikes = sep.strikePrices()
vols = sep.values("C", "OPTION_VOLATILITY")

The at-the-money strike​

atm = eua["2026M09"].nearest(86.4)
print atm.strike
print atm.call.DELTA_FACTOR

Strikes matching a condition​

above = eua["2026M09"].strikes[strike > 82]