def test_thematic_beta(): replace = Replacer() # mock getting PTA report mock = replace('gs_quant.markets.report.ThematicReport.get', Mock()) mock.return_value = ThematicReport(id='report_id') # mock getting thematic exposure mock = replace('gs_quant.markets.report.ThematicReport.get_thematic_betas', Mock()) mock.return_value = pd.DataFrame(thematic_data) # mock getting asset mock = Stock('MAA0NE9QX2ABETG6', 'Test Asset') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [ GsTemporalXRef(datetime.date(2019, 1, 1), datetime.date(2952, 12, 31), XRef(ticker='basket_ticker', )) ] replace('gs_quant.markets.securities.SecurityMaster.get_asset', Mock()).return_value = mock with DataContext(datetime.date(2020, 7, 12), datetime.date(2020, 7, 15)): actual = mr.thematic_beta('report_id', 'basket_ticker') assert all(actual.values == [1, 1, 1, 1]) replace.restore()
def test_skew_fx(): replace = Replacer() mock = Cross('MAA0NE9QX2ABETG6', 'USD/EUR') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='EURUSD', ))] replace('gs_quant.markets.securities.SecurityMaster.get_asset', mock) replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', mock_fx) actual = tm.skew(Cross('MAA0NE9QX2ABETG6', 'USD/EUR'), '1m', None, 25) assert_series_equal(pd.Series([2.0], index=_index, name='impliedVolatility'), actual) replace.restore()
def test_basis(): replace = Replacer() mock_jpyusd = Cross('MA890', 'USD/JPY') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='JPYUSD', ))] identifiers = replace('gs_quant.timeseries.measures.GsAssetApi.map_identifiers', Mock()) identifiers.return_value = {'USD-3m/JPY-3m': 'MA123'} replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', mock_cross) actual = tm.basis(mock_jpyusd, '1y') assert_series_equal(pd.Series([1, 2, 3], index=_index * 3, name='basis'), actual) with pytest.raises(NotImplementedError): tm.basis(..., '1y', real_time=True) replace.restore()
def test_zc_inflation_swap_rate(): replace = Replacer() mock_gbp = Currency('MA890', 'GBP') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='GBP', ))] identifiers = replace('gs_quant.timeseries.measures.GsAssetApi.map_identifiers', Mock()) identifiers.return_value = {'CPI-UKRPI': 'MA123'} replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', mock_curr) actual = tm.zc_inflation_swap_rate(mock_gbp, '1y') assert_series_equal(pd.Series([1, 2, 3], index=_index * 3, name='inflationSwapRate'), actual) with pytest.raises(NotImplementedError): tm.zc_inflation_swap_rate(..., '1y', real_time=True) replace.restore()
def test_spread_option_atm_fwd_rate(): replace = Replacer() mock_usd = Currency('MA890', 'USD') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='USD', ))] identifiers = replace('gs_quant.timeseries.measures.GsAssetApi.map_identifiers', Mock()) identifiers.return_value = {'USD-LIBOR-BBA': 'MA123'} replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', mock_curr) actual = tm.spread_option_atm_fwd_rate(mock_usd, '3m', '10y', '5y') assert_series_equal(pd.Series([1, 2, 3], index=_index * 3, name='spreadOptionAtmFwdRate'), actual) with pytest.raises(NotImplementedError): tm.spread_option_atm_fwd_rate(..., '3m', '10y', '5y', real_time=True) replace.restore()
def test_vol_forecast(): replace = Replacer() mock = Cross('MAA0NE9QX2ABETG6', 'USD/EUR') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='EURUSD', ))] replace('gs_quant.markets.securities.SecurityMaster.get_asset', mock) replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', mock_fx) actual = tm.forecast(mock, '1y') assert_series_equal(pd.Series([1.1, 1.1, 1.1], index=_index * 3, name='forecast'), actual) actual = tm.forecast(mock, '3m') assert_series_equal(pd.Series([1.1, 1.1, 1.1], index=_index * 3, name='forecast'), actual) with pytest.raises(NotImplementedError): tm.forecast(mock, '1y', real_time=True) replace.restore()
def test_swap_rate(): replace = Replacer() mock_usd = Currency('MA890', 'USD') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='USD', ))] identifiers = replace('gs_quant.timeseries.measures.GsAssetApi.map_identifiers', Mock()) identifiers.return_value = {'USD-3m': 'MA123'} replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', mock_curr) actual = tm.swap_rate(mock_usd, '1y') assert_series_equal(pd.Series([1, 2, 3], index=_index * 3, name='swapRate'), actual) identifiers = replace('gs_quant.timeseries.measures.GsAssetApi.map_identifiers', Mock()) identifiers.return_value = {'USD OIS': 'MA123'} actual = tm.swap_rate(mock_usd, '1y', BenchmarkType.OIS) assert_series_equal(pd.Series([1, 2, 3], index=_index * 3, name='swapRate'), actual) mock_eur = Currency('MA890', 'EUR') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='EUR', ))] identifiers = replace('gs_quant.timeseries.measures.GsAssetApi.map_identifiers', Mock()) identifiers.return_value = {'EUR-6m': 'MA123'} actual = tm.swap_rate(mock_eur, '1y') assert_series_equal(pd.Series([1, 2, 3], index=_index * 3, name='swapRate'), actual) mock_sek = Currency('MA890', 'SEK') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='SEK', ))] identifiers = replace('gs_quant.timeseries.measures.GsAssetApi.map_identifiers', Mock()) identifiers.return_value = {'SEK-6m': 'MA123'} actual = tm.swap_rate(mock_sek, '1y') assert_series_equal(pd.Series([1, 2, 3], index=_index * 3, name='swapRate'), actual) with pytest.raises(NotImplementedError): tm.swap_rate(..., '1y', real_time=True) replace.restore()
def test_vol_fx(): replace = Replacer() mock = Cross('MAA0NE9QX2ABETG6', 'USD/EUR') xrefs = replace('gs_quant.timeseries.measures.GsAssetApi.get_asset_xrefs', Mock()) xrefs.return_value = [ GsTemporalXRef(dt.date(2019, 1, 1), dt.date(2952, 12, 31), XRef(bbid='EURUSD', )) ] replace('gs_quant.markets.securities.SecurityMaster.get_asset', mock) # for different delta strikes replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', mock_fx) actual = tm.implied_volatility(mock, '1m', tm.VolReference.DELTA_CALL, 25) assert_series_equal( pd.Series([5, 1, 2], index=_index * 3, name='impliedVolatility'), actual) actual = tm.implied_volatility(mock, '1m', tm.VolReference.DELTA_PUT, 25) assert_series_equal( pd.Series([5, 1, 2], index=_index * 3, name='impliedVolatility'), actual) actual = tm.implied_volatility(mock, '1m', tm.VolReference.DELTA_NEUTRAL) assert_series_equal( pd.Series([5, 1, 2], index=_index * 3, name='impliedVolatility'), actual) actual = tm.implied_volatility(mock, '1m', tm.VolReference.FORWARD, 100) assert_series_equal( pd.Series([5, 1, 2], index=_index * 3, name='impliedVolatility'), actual) actual = tm.implied_volatility(mock, '1m', tm.VolReference.SPOT, 100) assert_series_equal( pd.Series([5, 1, 2], index=_index * 3, name='impliedVolatility'), actual) # NORMALIZED not supported with pytest.raises(MqError): tm.implied_volatility(mock, '1m', tm.VolReference.DELTA_CALL) with pytest.raises(MqError): tm.implied_volatility(mock, '1m', tm.VolReference.NORMALIZED, 25) with pytest.raises(MqError): tm.implied_volatility(mock, '1m', tm.VolReference.SPOT, 25) with pytest.raises(MqError): tm.implied_volatility(mock, '1m', tm.VolReference.FORWARD, 25) replace.restore()