def structured_calc(mocker, priceable: Priceable, measure: risk.RiskMeasure): set_session() values = { '$type': 'RiskVector', 'asset': [0.01, 0.015], 'points': [ {'type': 'IR', 'asset': 'USD', 'class_': 'Swap', 'point': '1y'}, {'type': 'IR', 'asset': 'USD', 'class_': 'Swap', 'point': '2y'} ] } mocker.return_value = [[[[values]]]] expected = risk.sort_risk(pd.DataFrame([ {'mkt_type': 'IR', 'mkt_asset': 'USD', 'mkt_class': 'Swap', 'mkt_point': '1y', 'value': 0.01}, {'mkt_type': 'IR', 'mkt_asset': 'USD', 'mkt_class': 'Swap', 'mkt_point': '2y', 'value': 0.015} ])) current = PricingContext.current result = priceable.calc(measure) assert result.raw_value.equals(expected) risk_requests = (risk.RiskRequest( positions=(RiskPosition(instrument=priceable, quantity=1),), measures=(measure,), pricing_and_market_data_as_of=(PricingDateAndMarketDataAsOf(pricing_date=current.pricing_date, market=current.market),), parameters=RiskRequestParameters(raw_results=True), wait_for_results=True),) mocker.assert_called_with(risk_requests)
def _pricing_market_data_as_of( self) -> Tuple[PricingDateAndMarketDataAsOf, ...]: return tuple( PricingDateAndMarketDataAsOf( d, business_day_offset(d, -1, roll='preceding') if d == dt.date.today() else d) for d in self.__date_range)
def scalar_calc(mocker, priceable: Priceable, measure: risk.RiskMeasure): set_session() mocker.return_value = [[[[{'$type': 'Risk', 'val': 0.01}]]]] current = PricingContext.current result = priceable.calc(measure) assert result == 0.01 risk_requests = (risk.RiskRequest( positions=(RiskPosition(instrument=priceable, quantity=1),), measures=(measure,), pricing_and_market_data_as_of=(PricingDateAndMarketDataAsOf(pricing_date=current.pricing_date, market=current.market),), parameters=RiskRequestParameters(raw_results=True), wait_for_results=True),) mocker.assert_called_with(risk_requests)
def _pricing_market_data_as_of( self) -> Tuple[PricingDateAndMarketDataAsOf, ...]: return PricingDateAndMarketDataAsOf(self.pricing_date, self.market_data_as_of),