derivitec.core.client.DerivitecClient.calculate_risk_on_contracts

DerivitecClient.calculate_risk_on_contracts(contracts, risk_measures, pricing_date, market_date, market_data_override=None, reporting_currency=None, risk_scenarios=None, exclude_historically_derived_vol_surfaces=False, include_contract_data_in_response=True, consolidate_error_messages=True, use_real_time_eq_spot=False, use_real_time_fx_spot=False, pricing_model_manager=None, market_data_environment_name=None, equity_indices_to_decompose=None, pricing_environment_name=None)[source]

Calculate risk on a set of contracts.

Parameters:
  • contracts (list[derivitec.tradables.types.Contract]) – The contracts.

  • risk_measures (list[derivitec.risk_engine.types.RiskMeasure]) – The risk measures.

  • pricing_date (datetime.datetime) – The pricing date.

  • market_date (datetime.datetime) – The market date.

  • market_data_override (derivitec.market_data.types.MarketDataOverride) – The market data override (optional)

  • reporting_currency (str) – The reporting currency. (optional; default local currency except for FX contracts) reporting_currency == None is forbidden)

  • risk_scenarios (list[derivitec.risk_engine.types.RiskScenario]) – The risk scenarios (optional)

  • exclude_historically_derived_vol_surfaces (bool) – The exclude historically derived vol surfaces flag

  • include_contract_data_in_response (bool) – The include contract data in unit risk flag

  • consolidate_error_messages (bool) – True to consolidate error messages

  • use_real_time_eq_spot (bool) – The use real time eq spot flag

  • use_real_time_fx_spot (bool) – The use real time fx spot flag

  • pricing_model_manager (derivitec.tradables.types.PricingModelManager) – The pricing model manager

  • market_data_environment_name (str) – The market data environment name (optional with default Organisation Level Environment)

  • equity_indices_to_decompose (dict[derivitec.misc.types.InstrumentIdentifier,bool]) – The equity indices to decompose with flag to control spot calculation of index. {InstrumentIdenfitifer : bool}

  • pricing_environment_name (str) – The pricing environment name (optional, defaults to None)

Return type:

derivitec.risk_engine.types.RiskCalculationResult

Code

>>> risk_measures = [Npv(), EqDelta()]
>>> pricing_date = market_date = datetime(2017, 11, 1)
>>> contracts = [EqFutureByCode(code=ric("SPZ7"))]
>>> exclude_historically_derived_vol_surfaces = True
>>> risk = client.calculate_risk_on_contracts(
...    contracts,
...    risk_measures,
...    pricing_date,
...    market_date,
...    exclude_historically_derived_vol_surfaces
...    include_contract_data_in_response)

Now we can see the contents of the risk results.

>>> for res in risk.RiskResults:
...     print "{0}: {1} {2}".format(res.MeasureName, res.UnitValue, res.UnitValueCurrency) 
...
NPV: 0.0 USD
EqDelta: 2583.13 USD

The EqDelta risk result has the relevant equity asset information on it. See derivitec.risk_engine.types.RiskResult

>>> for res in filter(lambda x: x.MeasureName == "EqDelta", risk.RiskResults):
...     print res.EquityAsset
...
<ric:.SPX>

Market data overrides

The derivitec.risk_engine.types.MarketDataOverride class can be used to override a number of parameters:

>>> market_data_override = MarketDataOverride(
...        equity_spot_overrides = {ric(".SPX"):3000.0})
>>> risk = client.calculate_risk_on_contracts(
...    contracts,
...    risk_measures,
...    pricing_date,
...    market_date,
...    market_data_override=market_data_override,
...    market_data_environment_name="My Example Environment")