Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
    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
Esempio n. 4
0
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)
Esempio n. 5
0
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)