def test_midcurve_vol_return_data(): replace = Replacer() test_data = dict(midcurveVol=[1, 2, 3]) df = MarketDataResponseFrame( data=test_data, index=[dt.date(2019, 1, 1), dt.date(2019, 1, 2), dt.date(2019, 1, 3)]) replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = ["MADWG3WHCKNE1DJA", "MAH6JK3TZJJGFQ65"] replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [dt.date(2019, 1, 2), dt.date(2019, 1, 5)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df actual = tm_rates.midcurve_vol(Currency("GBP", name="GBP"), "1y", "1y", "1y", 0) assert_series_equal(tm._extract_series_from_df(df, QueryType.MIDCURVE_VOL), actual) replace.restore()
def test_currency_to_tdapi_midcurve_asset(): replace = Replacer() replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = 'ZAR' asset = Currency('MA1', 'ZAR') assert tm_rates._currency_to_tdapi_midcurve_asset(asset) == 'MA1' replace.restore()
def test_swaption_atmFwdRate_return_data(): replace = Replacer() test_data = dict(atmFwdRate=[1, 2, 3]) df = MarketDataResponseFrame( data=test_data, index=[dt.date(2019, 1, 1), dt.date(2019, 1, 2), dt.date(2019, 1, 3)]) replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = ["MADWG3WHCKNE1DJA", "MAH6JK3TZJJGFQ65"] replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [dt.date(2019, 1, 2), dt.date(2019, 1, 5)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df actual = tm_rates.swaption_atm_fwd_rate(Currency("GBP", name="GBP")) assert_series_equal(tm._extract_series_from_df(df, QueryType.ATM_FWD_RATE), actual) replace.restore()
def test_currency_to_tdapi_swaption_rate_asset_retuns_throws(): replace = Replacer() replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "ZAR" asset = Currency("MA1", "ZAR") assert _currency_to_tdapi_swaption_rate_asset(asset) == "MA1"
def test_swaption_swaption_vol_term2_throws(): with pytest.raises(NotImplementedError): tm_rates.swaption_vol_term(Currency("GBP", name="GBP"), tm.SwaptionTenorType.SWAP_MATURITY, '5y', 0, real_time=True)
def test_swaption_premium_throws_for_unsupported_ccy(): replace = Replacer() replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "ZAR" with pytest.raises(NotImplementedError): tm_rates.swaption_premium(Currency("KRW", name="KRW")) replace.restore()
def test_swaption_vol2_return__empty_data(): replace = Replacer() df = ExtendedSeries() replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = [ "MADWG3WHCKNE1DJA", "MAH6JK3TZJJGFQ65"] replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [ dt.date(2019, 1, 2), dt.date(2019, 1, 5)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df actual = tm_rates.swaption_vol(Currency("GBP", name="GBP")) assert_series_equal(ExtendedSeries(), actual) replace.restore()
def test_swaption_vol_smile2_returns_no_data(): replace = Replacer() df = ExtendedSeries() replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = [ "MADWG3WHCKNE1DJA", "MAH6JK3TZJJGFQ65"] replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [ dt.date(2020, 1, 2), dt.date(2020, 1, 2)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df with DataContext('2019-01-01', '2025-01-01'): actual = tm_rates.swaption_vol_smile(Currency("GBP", name="GBP"), '3m', '10y') assert_series_equal(ExtendedSeries(), actual) replace.restore()
def test_swaption_swaption_vol_term2_returns_data(): replace = Replacer() df = MarketDataResponseFrame( data=dict(expirationTenor=['1m', '6m', '1y'], terminationTenor=['1y', '2y', '3y'], swaptionVol=[1, 2, 3]), index=_index * 3) replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = [ "MADWG3WHCKNE1DJA", "MAH6JK3TZJJGFQ65"] replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [ dt.date(2020, 1, 2), dt.date(2020, 1, 2)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df with DataContext('2019-01-01', '2025-01-01'): actual = tm_rates.swaption_vol_term(Currency("GBP", name="GBP"), tm.SwaptionTenorType.SWAP_MATURITY, '5y', 0) expected = pd.Series([1, 2, 3], index=pd.to_datetime(['2019-02-01', '2019-07-01', '2020-01-01'])) assert_series_equal(expected, pd.Series(actual), check_names=False) with DataContext('2019-01-01', '2025-01-01'): actual = tm_rates.swaption_vol_term(Currency("GBP", name="GBP"), tm.SwaptionTenorType.OPTION_EXPIRY, '5y', 0) expected = pd.Series([1, 2, 3], index=pd.to_datetime(['2020-01-01', '2021-01-01', '2021-12-31'])) assert_series_equal(expected, pd.Series(actual), check_names=False) replace.restore()
def test_swaption_swaption_vol_term2_returns_empty(): replace = Replacer() df = ExtendedSeries() replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = [ "MADWG3WHCKNE1DJA", "MAH6JK3TZJJGFQ65"] replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [ dt.date(2020, 1, 2), dt.date(2020, 1, 2)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df with DataContext('2019-01-01', '2025-01-01'): actual = tm_rates.swaption_vol_term(Currency("GBP", name="GBP"), tm.SwaptionTenorType.SWAP_MATURITY, '5y', 0) assert_series_equal(ExtendedSeries(), actual, check_names=False) replace.restore()
def test_swaption_premium_return_data(): replace = Replacer() test_data = dict(swaptionPremium=[1, 2, 3]) df = MarketDataResponseFrame(data=test_data, index=[dt.date(2019, 1, 1), dt.date(2019, 1, 2), dt.date(2019, 1, 3)]) replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = "MADWG3WHCKNE1DJA" replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [ dt.date(2019, 1, 2), dt.date(2019, 1, 5)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df actual = tm_rates.swaption_premium(Currency("GBP", name="GBP")) assert_series_equal(tm._extract_series_from_df(df, QueryType.SWAPTION_PREMIUM), actual) replace.restore()
def test_swaption_vol_smile2_returns_data(): replace = Replacer() test_data = dict(strikeRelative=["ATM", "ATM+50", "ATM+100"], swaptionVol=[1, 2, 3]) df = MarketDataResponseFrame(data=test_data, index=_index * 3) replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()).return_value = "GBP" replace('gs_quant.timeseries.measures_rates._get_tdapi_rates_assets', Mock(), Mock()).return_value = [ "MADWG3WHCKNE1DJA", "MAH6JK3TZJJGFQ65"] replace('gs_quant.timeseries.measures_rates._range_from_pricing_date', Mock(), Mock()).return_value = [ dt.date(2020, 1, 2), dt.date(2020, 1, 2)] replace('gs_quant.timeseries.measures_rates._market_data_timed', Mock()).return_value = df with DataContext('2019-01-01', '2025-01-01'): actual = tm_rates.swaption_vol_smile(Currency("GBP", name="GBP"), '3m', '10y') assert_series_equal(pd.Series([1, 2, 3], index=[0.0, 50.0, 100.0]), pd.Series(actual)) replace.restore()
def test_currency_to_tdapi_swaption_rate_asset_retuns_asset_id(mocker): replace = Replacer() mocker.patch.object(GsSession.__class__, 'current', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', side_effect=mock_request) mocker.patch.object(SecurityMaster, 'get_asset', side_effect=mock_request) bbid_mock = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) with tm.PricingContext(dt.date.today()): cur = [{ "currency_assetId": "MAK1FHKH5P5GJSHH", "currency": "JPY", "swaption_id": "MATT7CA7PRA4B8YB" }, { "currency_assetId": "MA66CZBQJST05XKG", "currency": "GBP", "swaption_id": "MAX2SBXZRPYR3NTY" }, { "currency_assetId": "MAPSDDS072PHYMVQ", "currency": "AUD", "swaption_id": "MAQHSC1PAF4X5H4B" }, { "currency_assetId": "MAJNQPFGN1EBDHAE", "currency": "EUR", "swaption_id": "MAZB3PAH8JFVVT80" }, { "currency_assetId": "MAZ7RWC904JYHYPS", "currency": "USD", "swaption_id": "MAY0X3KRD4AN77E2" }] for c in cur: print(c) asset = Currency(c.get("currency_assetId"), c.get("currency")) bbid_mock.return_value = c.get("currency") mqid = _currency_to_tdapi_swaption_rate_asset(asset) assert mqid == c.get("swaption_id") bbid_mock.return_value = None assert _currency_to_tdapi_swaption_rate_asset(asset) == c.get( "currency_assetId") replace.restore()
def test_currency_to_tdapi_inflation_swap_rate_asset(mocker): replace = Replacer() mocker.patch.object(GsSession.__class__, 'current', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', side_effect=mock_request) mocker.patch.object(SecurityMaster, 'get_asset', side_effect=mock_request) bbid_mock = replace( 'gs_quant.timeseries.measures_inflation.Asset.get_identifier', Mock()) with tm_rates.PricingContext(dt.date.today()): cur = [{ "currency_assetId": "MAK1FHKH5P5GJSHH", "currency": "JPY", "inflation_id": "MA1CENMCA88VXJ28" }, { "currency_assetId": "MA66CZBQJST05XKG", "currency": "GBP", "inflation_id": "MAW75DV9777630QN" }, { "currency_assetId": "MAJNQPFGN1EBDHAE", "currency": "EUR", "inflation_id": "MAJTD8XDA8EJZYRG" }, { "currency_assetId": "MAZ7RWC904JYHYPS", "currency": "USD", "inflation_id": "MA4016GCT3MDRYVY" }] for c in cur: print(c) asset = Currency(c.get("currency_assetId"), c.get("currency")) bbid_mock.return_value = c.get("currency") mqid = _currency_to_tdapi_inflation_swap_rate_asset(asset) assert mqid == c.get("inflation_id") bbid_mock.return_value = None assert _currency_to_tdapi_inflation_swap_rate_asset(asset) == c.get( "currency_assetId") replace.restore()
def test_currencypair_to_tdapi_fxo_asset(mocker): replace = Replacer() mocker.patch.object(GsSession.__class__, 'current', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', side_effect=mock_request) mocker.patch.object(SecurityMaster, 'get_asset', side_effect=mock_request) bbid_mock = replace( 'gs_quant.timeseries.measures_fx_vol.Asset.get_identifier', Mock()) with tm_rates.PricingContext(dt.date.today()): cur = [ { "currency_assetId": "MAK1FHKH5P5GJSHH", "currency": "USDJPY", "id": "MAW3BZY6KFQ6TP95" }, { "currency_assetId": "MA66CZBQJST05XKG", "currency": "GBPUSD", "id": "MA7F5P92330NGKAR" }, { "currency_assetId": "MAJNQPFGN1EBDHAE", "currency": "EURUSD", "id": "MASN9J5N0H418Y6A" }, ] for c in cur: print(c) asset = Currency(c.get("currency_assetId"), c.get("currency")) bbid_mock.return_value = c.get("currency") mqid = _currencypair_to_tdapi_fxo_asset(asset) assert mqid == c.get("id") bbid_mock.return_value = None assert _currencypair_to_tdapi_fxo_asset(asset) == c.get( "currency_assetId") replace.restore()
def test_currency_to_tdapi_xccy_swap_rate_asset(mocker): replace = Replacer() mocker.patch.object(GsSession.__class__, 'current', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', side_effect=mock_request) mocker.patch.object(SecurityMaster, 'get_asset', side_effect=mock_request) bbid_mock = replace('gs_quant.timeseries.measures_xccy.Asset.get_identifier', Mock()) with tm_rates.PricingContext(dt.date.today()): cur = [ { "currency_assetId": "MAK1FHKH5P5GJSHH", "currency": "JPY", "xccy_id": "MAFMW4HJC5TDE51H" }, { "currency_assetId": "MA66CZBQJST05XKG", "currency": "GBP", "xccy_id": "MATDD783JM1C2GGD" }, { "currency_assetId": "MAJNQPFGN1EBDHAE", "currency": "EUR", "xccy_id": "MAW8SAXPSKYA94E2" }, ] for c in cur: print(c) asset = Currency(c.get("currency_assetId"), c.get("currency")) bbid_mock.return_value = c.get("currency") mqid = _currency_to_tdapi_crosscurrency_swap_rate_asset(asset) assert mqid == c.get("xccy_id") bbid_mock.return_value = None assert _currency_to_tdapi_crosscurrency_swap_rate_asset(asset) == c.get("currency_assetId") replace.restore()
def test_swaption_premium_throws_for_unsupported_ccy(): with pytest.raises(NotImplementedError): tm_rates.swaption_premium(Currency("KRW", name="KRW"))
def test_swaption_premium_throws_for_realtime(): with pytest.raises(NotImplementedError): tm_rates.swaption_premium(Currency("GBP", name="GBP"), real_time=True)
def test_swaption_vol_smile2_returns_throws(): with pytest.raises(NotImplementedError): tm_rates.swaption_vol_smile(Currency("GBP", name="GBP"), "1m", "1m", real_time=True)
def test_inflation_swap_term(mocker): replace = Replacer() args = dict(forward_tenor='1y', pricing_date='0d', clearing_house=_ClearingHouse.LCH, real_time=False) class ObjectView(object): def __init__(self, d): self.__dict__ = d holidays = replace('gs_quant.datetime.GsCalendar.get', Mock(holidays=[])) holidays.return_value = ObjectView({'holidays': []}) bd_calendar = replace( 'gs_quant.timeseries.measures_inflation._get_custom_bd', Mock()) bd_calendar.return_value = CustomBusinessDay() pricing_date_mock = replace( 'gs_quant.timeseries.measures_inflation._range_from_pricing_date', Mock()) pricing_date_mock.return_value = [dt.date(2019, 1, 1), dt.date(2019, 1, 1)] mock_nok = Currency('MA891', 'PLN') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'ACU' args['asset'] = mock_nok with pytest.raises(NotImplementedError): tm.inflation_swap_term(**args) mock_usd = Currency('MAZ7RWC904JYHYPS', 'USD') args['asset'] = mock_usd xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'USD' args['real_time'] = True with pytest.raises(NotImplementedError): tm.inflation_swap_term(**args) args['real_time'] = False args['forward_tenor'] = '5yr' with pytest.raises(MqValueError): tm.inflation_swap_term(**args) args['forward_tenor'] = '1y' bd_mock = replace('gs_quant.data.dataset.Dataset.get_data', Mock()) bd_mock.return_value = pd.DataFrame(data=dict(date="2020-04-10", exchange="NYC", description="Good Friday"), index=[pd.Timestamp('2020-04-10')]) xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'USD' identifiers_empty = replace( 'gs_quant.timeseries.measures.GsAssetApi.get_many_assets', Mock()) identifiers_empty.return_value = {} with pytest.raises(MqValueError): tm.inflation_swap_term(**args) identifiers = replace( 'gs_quant.timeseries.measures.GsAssetApi.get_many_assets', Mock()) mock_asset = Currency('USD', name='USD') mock_asset.id = 'MAEMPCXQG3T716EX' mock_asset.exchange = 'OTC' identifiers.return_value = [mock_asset] d = { 'terminationTenor': ['1y', '2y', '3y', '4y'], 'swapRate': [1, 2, 3, 4], 'assetId': [ 'MAEMPCXQG3T716EX', 'MAFRSWPAF5QPNTP2', 'MA88BXZ3TCTXTFW1', 'MAC4KAG9B9ZAZHFT' ] } bd_mock.return_value = pd.DataFrame() market_data_mock = replace( 'gs_quant.timeseries.measures_inflation._get_inflation_swap_data', Mock()) market_data_mock.return_value = pd.DataFrame() df = pd.DataFrame(data=d, index=_index * 4) actual = tm.inflation_swap_term(**args) assert actual.empty series_apply_mock = replace( 'gs_quant.timeseries.measures_inflation.pd.Series.apply', Mock()) series_apply_mock.return_value = pd.Series([ dt.date(2022, 3, 30), dt.date(2023, 3, 30), dt.date(2024, 3, 30), dt.date(2025, 3, 30) ], index=df.index) market_data_mock.return_value = df with DataContext('2019-01-01', '2026-01-01'): actual = tm.inflation_swap_term(**args) actual.dataset_ids = _test_datasets expected = tm.ExtendedSeries([1, 2, 3, 4], index=[ dt.date(2022, 3, 30), dt.date(2023, 3, 30), dt.date(2024, 3, 30), dt.date(2025, 3, 30) ]) expected.dataset_ids = _test_datasets assert_series_equal(expected, actual, check_names=False) assert actual.dataset_ids == expected.dataset_ids args['location'] = PricingLocation.NYC with DataContext('2019-01-01', '2026-01-01'): tm.inflation_swap_term(**args) holidays.return_value = ObjectView({'holidays': ['0d']}) with pytest.raises(MqValueError): tm.inflation_swap_term(**args) replace.restore()
def test_inflation_swap_rate(mocker): replace = Replacer() args = dict(swap_tenor='5y', index_type='UKRPI', clearing_house='LCH', forward_tenor='5y', real_time=False) mock_gbp = Currency('MA26QSMPX9990G66', 'GBP') args['asset'] = mock_gbp xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' args['swap_tenor'] = '5yr' with pytest.raises(MqValueError): tm.inflation_swap_rate(**args) args['swap_tenor'] = '5y' args['forward_tenor'] = '5yr' with pytest.raises(MqValueError): tm.inflation_swap_rate(**args) args['forward_tenor'] = '5y' args['real_time'] = True with pytest.raises(NotImplementedError): tm.inflation_swap_rate(**args) args['real_time'] = False args['asset'] = Currency('MA666', 'AED') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'AED' with pytest.raises(NotImplementedError): tm.inflation_swap_rate(**args) args['asset'] = mock_gbp xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' args['index_type'] = tm.InflationIndexType.TESTCPI with pytest.raises(MqValueError): tm.inflation_swap_rate(**args) args['index_type'] = tm.InflationIndexType.UKRPI xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' identifiers = replace( 'gs_quant.timeseries.measures_inflation._get_tdapi_inflation_rates_assets', Mock()) identifiers.return_value = {'MA26QSMPX9990G66'} mocker.patch.object(GsDataApi, 'get_market_data', return_value=mock_curr(None, None)) actual = tm.inflation_swap_rate(**args) expected = tm.ExtendedSeries([1, 2, 3], index=_index * 3, name='swapRate') expected.dataset_ids = _test_datasets assert_series_equal(expected, actual) assert actual.dataset_ids == _test_datasets xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'EUR' identifiers = replace( 'gs_quant.timeseries.measures_inflation._get_tdapi_inflation_rates_assets', Mock()) identifiers.return_value = {'MAZBW57ZPS54ET7K'} mocker.patch.object(GsDataApi, 'get_market_data', return_value=mock_curr(None, None)) args['asset'] = Currency('MAZBW57ZPS54ET7K', 'EUR') args['index_type'] = 'FRCPXTOB' actual = tm.inflation_swap_rate(**args) expected = tm.ExtendedSeries([1, 2, 3], index=_index * 3, name='swapRate') expected.dataset_ids = _test_datasets assert_series_equal(expected, actual) assert actual.dataset_ids == _test_datasets replace.restore()
def test_crosscurrency_swap_rate(mocker): replace = Replacer() args = dict(swap_tenor='5y', rateoption_type='LIBOR', clearing_house='LCH', forward_tenor='5y', real_time=False) mock_gbp = Currency('MA26QSMPX9990G66', 'GBP') args['asset'] = mock_gbp xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' xrefs = replace('gs_quant.timeseries.measures.SecurityMaster.get_asset', Mock()) mock_usd = Currency('MA26QSMPX9990G63', 'USD') xrefs.return_value = mock_usd args['swap_tenor'] = '5yr' with pytest.raises(MqValueError): tm.crosscurrency_swap_rate(**args) args['swap_tenor'] = '5y' args['forward_tenor'] = '5yr' with pytest.raises(MqValueError): tm.crosscurrency_swap_rate(**args) args['forward_tenor'] = '5y' args['real_time'] = True with pytest.raises(NotImplementedError): tm.crosscurrency_swap_rate(**args) args['real_time'] = False args['asset'] = Currency('MA666', 'AED') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'AED' with pytest.raises(NotImplementedError): tm.crosscurrency_swap_rate(**args) args['asset'] = mock_gbp args['asset'] = Bond('MA667', 'TEST') with pytest.raises(MqValueError): tm.crosscurrency_swap_rate(**args) args['asset'] = mock_gbp args['asset'] = Cross('MA667', 'USDAED') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.side_effect = ['AED', 'USD'] with pytest.raises(NotImplementedError): tm.crosscurrency_swap_rate(**args) args['asset'] = Cross('MA667', 'USDAED') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.side_effect = ['USD', 'AED'] with pytest.raises(NotImplementedError): tm.crosscurrency_swap_rate(**args) args['asset'] = Cross('MA667', 'USDGBP') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' xrefs = replace('gs_quant.timeseries.measures_xccy._check_crosscurrency_rateoption_type', Mock()) xrefs.side_effect = [tm.CrossCurrencyRateOptionType.LIBOR, tm.CrossCurrencyRateOptionType.OIS] with pytest.raises(MqValueError): tm.crosscurrency_swap_rate(**args) replace.restore() xrefs = replace('gs_quant.timeseries.measures.SecurityMaster.get_asset', Mock()) xrefs.return_value = mock_usd args['asset'] = Cross('MA667', 'USDGBP') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' identifiers = replace('gs_quant.timeseries.measures_xccy._get_tdapi_crosscurrency_rates_assets', Mock()) identifiers.return_value = {'MA26QSMPX9990G66'} mocker.patch.object(GsDataApi, 'get_market_data', return_value=mock_curr(None, None)) actual = tm.crosscurrency_swap_rate(**args) expected = tm.ExtendedSeries([1, 2, 3], index=_index * 3, name='xccySwapSpread') expected.dataset_ids = _test_datasets assert_series_equal(expected, actual) assert actual.dataset_ids == _test_datasets args['asset'] = Cross('MA667', 'USDCAD') xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'CAD' identifiers = replace('gs_quant.timeseries.measures_xccy._get_tdapi_crosscurrency_rates_assets', Mock()) identifiers.return_value = {'MA26QSMPX9990G66'} mocker.patch.object(GsDataApi, 'get_market_data', return_value=mock_curr(None, None)) actual = tm.crosscurrency_swap_rate(**args) expected = tm.ExtendedSeries([1, 2, 3], index=_index * 3, name='xccySwapSpread') expected.dataset_ids = _test_datasets assert_series_equal(expected, actual) assert actual.dataset_ids == _test_datasets args['asset'] = mock_gbp xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' args['rateoption_type'] = tm.CrossCurrencyRateOptionType.TestRateOption with pytest.raises(MqValueError): tm.crosscurrency_swap_rate(**args) args['rateoption_type'] = tm.CrossCurrencyRateOptionType.LIBOR xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'GBP' identifiers = replace('gs_quant.timeseries.measures_xccy._get_tdapi_crosscurrency_rates_assets', Mock()) identifiers.return_value = {'MA26QSMPX9990G66'} mocker.patch.object(GsDataApi, 'get_market_data', return_value=mock_curr(None, None)) actual = tm.crosscurrency_swap_rate(**args) expected = tm.ExtendedSeries([1, 2, 3], index=_index * 3, name='xccySwapSpread') expected.dataset_ids = _test_datasets assert_series_equal(expected, actual) assert actual.dataset_ids == _test_datasets xrefs = replace('gs_quant.timeseries.measures.Asset.get_identifier', Mock()) xrefs.return_value = 'EUR' identifiers = replace('gs_quant.timeseries.measures_xccy._get_tdapi_crosscurrency_rates_assets', Mock()) identifiers.return_value = {'MAZBW57ZPS54ET7K'} mocker.patch.object(GsDataApi, 'get_market_data', return_value=mock_curr(None, None)) args['asset'] = Currency('MAZBW57ZPS54ET7K', 'EUR') args['rateoption_type'] = 'OIS' actual = tm.crosscurrency_swap_rate(**args) expected = tm.ExtendedSeries([1, 2, 3], index=_index * 3, name='xccySwapSpread') expected.dataset_ids = _test_datasets assert_series_equal(expected, actual) assert actual.dataset_ids == _test_datasets replace.restore()