OTCOptionGroup

OTCOptionGroup#

class sigtech.framework.instruments.option_groups.OTCOptionGroup

Baseclasses: OptionGroup, VolsurfaceBasedGroup

Subclasses: EquityIndexOTCOptionsGroup, FXOTCOptionsGroup, CommodityOTCOptionsGroup

A class representing OTC option groups.

discount_curves(data_dates, data_point=None)

Discount curves used for the options discounting.

Parameters:
  • data_dates – List of dates.

  • data_point – Input data point (optional).

Returns:

Discount curves.

forward_price(data_date, maturity, **kwargs)

Maturity-corresponding future (or more generally next future at or after maturity) quote as seen on data_date.

Parameters:
  • data_date – Input date.

  • maturity – Input maturity.

Returns:

Future quote.

forward_prices(data_dates, maturity, **kwargs)

Maturity-corresponding future (or more generally next future at or after maturity) quote as seen on data_dates.

Parameters:
  • data_dates – List of input dates.

  • maturity – Input maturity.

Returns:

List of future quotes.

classmethod from_underlying(underlying)

Return the object referenced by an underlying.

Parameters:

underlying – Underlying identifier.

Returns:

Object.

get_extra_fx_dependencies(valuation_currency: str, start_dt: datetime, end_dt: datetime, t: time, tz: tzinfo)

Extra dependencies for when the options are of a different currency to the strategy valuation currency

get_option_metrics(strike: float, maturity: str, start_date: date, end_date: date = None, strike_type: str = 'Price', option_type: str = None)

Function for computing series of PV and Greeks of daily rolling European option specified by the input parameters. In addition the function outputs strike (the price one regardless of the input format) and surface implied volatility for the input strike/maturity combination.

Parameters:
  • strike – Price, delta strike or premium, depending on strike_type parameter

  • maturity – Option tenor maturity, e.g. '1M'

  • start_date – Start of the series

  • end_date – End of the series (environment asofdate used if omitted)

  • strike_type'Price' for price strike, 'Delta' for delta strike or 'Premium' for premium

  • option_type'Call' or 'Put' ('Call' by default, unless 'Delta' strike is negative)

Returns:

option_name(option_type, strike, maturity_date, **kwargs)

Option group name.

Parameters:
  • option_type'Call' or 'Put'.

  • strike – Strike of option.

  • maturity_date – Maturity date of the option.

Returns:

str.

spot_value(data_date, data_point=None)

Spot value at a point in time.

Parameters:
  • data_date – Point in time.

  • data_point – Data point (optional).

Returns:

Spot value.

spot_values(data_dates, data_point=None)

Spot values at points in time.

Parameters:
  • data_dates – Input dates.

  • data_point – Data point (optional).

Returns:

List of spot values.

strike_from_price(price: float, date: date, maturity, option_type: str, data_point=None)

Find a strike corresponding to a given price of an option.

Parameters:
  • price – Target option price.

  • date – Pricing date.

  • maturity – Option maturity (could be a datetime.date or a tenor like '1Y').

  • option_type – Option type, 'Call' or 'Put'.

  • data_point – Data point (optional, e.g. 'EOD').

Returns:

Strike value.

vol_from_delta_history(expiry: Union[date, str], delta: float, start_date: date, end_date: date = None, data_point: DataPoint = None)

Get time series of volatility corresponding to the given delta.

Parameters:
  • expiry – Option expiry - either date (e.g. dtm.date(2021,2,3) for fixed tenor case, or tenor string (e.g. '3M') for the rolling tenor case.

  • delta – Delta for which vol is requested. Decimal is expected, i.e. 25% input should be 0.25.

  • start_date – Start date of the time series.

  • end_date – (Optional) end date for the time series. If omitted - last day of vol surface, or last day before option expiry (if fixed) is used

  • data_point – (Optional) data point of the vol surface

Returns:

pd.TimeSeries