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 structured_calc(mocker, priceable: Priceable, measure: risk.RiskMeasure): set_session() values = [{ 'marketDataType': 'IR', 'assetId': 'USD', 'pointClass': 'Swap', 'point': '1y', 'value': 0.01 }, { 'marketDataType': 'IR', 'assetId': 'USD', 'pointClass': 'Swap', 'point': '2y', 'value': 0.015 }] mocker.return_value = [[values]] result = priceable.calc(measure) expected = risk.sort_risk(pd.DataFrame(values)) assert result.equals(expected) risk_request = risk.RiskRequest( positions=(risk.RiskPosition(priceable, 1), ), measures=(measure, ), pricing_location=PricingContext.current.market_data_location, pricing_and_market_data_as_of=PricingContext.current. _pricing_market_data_as_of, parameters=RiskRequestParameters(), wait_for_results=True) mocker.assert_called_with(risk_request)
def __df_from_coordinate_data(cls, data: Iterable[dict]) -> pd.DataFrame: from gs_quant.risk import sort_risk df = sort_risk(pd.DataFrame.from_records(data)) index_field = next((f for f in ('time', 'date') if f in df.columns), None) if index_field: df = df.set_index(pd.DatetimeIndex(df.loc[:, index_field].values)) return df
def test_coordinate_last(mocker): data = { 'responses': [{ 'data': [{ 'marketDataType': 'Prime', 'marketDataAsset': '335320934', 'field': 'price', 'price': 1.0141, 'time': '2019-01-20T01:08:00Z' }] }, { 'data': [{ 'marketDataType': 'IR', 'marketDataAsset': 'USD', 'pointClass': 'Swap', 'marketDataPoint': ('2Y', ), 'quotingStyle': 'ATMRate', 'ATMRate': 0.02592, 'time': '2019-01-20T01:09:45Z' }] }] } expected_result = sort_risk( pd.DataFrame([{ 'field': 'price', 'marketDataAsset': '335320934', 'marketDataType': 'Prime', 'value': 1.0141 }, { 'quotingStyle': 'ATMRate', 'marketDataAsset': 'USD', 'marketDataType': 'IR', 'marketDataPoint': ('2Y', ), 'pointClass': 'Swap', 'value': 0.02592 }])) # mock GsSession mocker.patch.object(GsSession.__class__, 'current', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_post', return_value=data) result = GsDataApi.coordinates_last(coordinates=test_coordinates, as_of=dt.datetime(2019, 1, 2, 1, 10), as_dataframe=True) result.sort_index(axis=1, inplace=True) expected_result.sort_index(axis=1, inplace=True) assert result.equals(expected_result)
def test_coordinates_data(mocker): bond_data = [{ 'marketDataType': 'Prime', 'marketDataAsset': '335320934', 'field': 'price', 'price': 1.0139, 'time': pd.to_datetime('2019-01-20T01:03:00Z') }, { 'marketDataType': 'Prime', 'marketDataAsset': '335320934', 'field': 'price', 'price': 1.0141, 'time': pd.to_datetime('2019-01-20T01:08:00Z') }] swap_data = [{ 'marketDataType': 'IR', 'marketDataAsset': 'USD', 'pointClass': 'Swap', 'marketDataPoint': ('2Y', ), 'quotingStyle': 'ATMRate', 'ATMRate': 0.02592, 'time': pd.to_datetime('2019-01-20T01:09:45Z') }] bond_expected_result = [{ 'marketDataType': 'Prime', 'marketDataAsset': '335320934', 'field': 'price', 'value': 1.0139, 'time': pd.to_datetime('2019-01-20T01:03:00Z') }, { 'marketDataType': 'Prime', 'marketDataAsset': '335320934', 'field': 'price', 'value': 1.0141, 'time': pd.to_datetime('2019-01-20T01:08:00Z') }] swap_expected_result = [{ 'marketDataType': 'IR', 'marketDataAsset': 'USD', 'pointClass': 'Swap', 'marketDataPoint': ('2Y', ), 'quotingStyle': 'ATMRate', 'value': 0.02592, 'time': pd.to_datetime('2019-01-20T01:09:45Z') }] bond_expected_df = sort_risk(pd.DataFrame(bond_expected_result)) bond_expected_df = bond_expected_df.set_index( pd.DatetimeIndex(bond_expected_df.time.values)) swap_expected_df = sort_risk(pd.DataFrame(swap_expected_result)) swap_expected_df = swap_expected_df.set_index( pd.DatetimeIndex(swap_expected_df.time.values)) # mock GsSession mocker.patch.object(GsSession.__class__, 'current', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_post', side_effect=[{ 'responses': [{ 'data': bond_data }] }, { 'responses': [{ 'data': bond_data }, { 'data': swap_data }] }]) coord_data_result = GsDataApi.coordinates_data( coordinates=test_coordinates[0], start=dt.datetime(2019, 1, 2, 1, 0), end=dt.datetime(2019, 1, 2, 1, 10)) assert_frame_equal(coord_data_result, bond_expected_df) coords_data_result = GsDataApi.coordinates_data( coordinates=test_coordinates, start=dt.datetime(2019, 1, 2, 1, 0), end=dt.datetime(2019, 1, 2, 1, 10), as_multiple_dataframes=True) assert len(coords_data_result) == 2 assert_frame_equal(coords_data_result[0], bond_expected_df) assert_frame_equal(coords_data_result[1], swap_expected_df)