def test_var_swap(): idx = pd.date_range(start="2019-01-01", periods=4, freq="D") data = {'varSwap': [1, 2, 3, 4]} out = pd.DataFrame(data=data, index=idx) replace = Replacer() market_mock = replace( 'gs_quant.timeseries.measures.GsDataApi.get_market_data', Mock()) market_mock.return_value = out expected = pd.Series([1, 2, 3, 4], name='varSwap', index=idx) actual = tm.var_swap(Index('MA123', AssetClass.Equity, '123'), '1m') assert_series_equal(expected, actual) market_mock.assert_called_once() market_mock.reset_mock() market_mock.return_value = pd.DataFrame() actual = tm.var_swap(Index('MA123', AssetClass.Equity, '123'), '1m') assert actual.empty replace.restore()
def test_var_swap_fwd(): # bad input with pytest.raises(MqError): tm.var_swap(Index('MA123', AssetClass.Equity, '123'), '1m', 500) # regular idx = pd.date_range(start="2019-01-01", periods=4, freq="D") d1 = { 'varSwap': [1, 2, 3, 4], 'tenor': ['1y'] * 4 } d2 = { 'varSwap': [1.5, 2.5, 3.5, 4.5], 'tenor': ['13m'] * 4 } df1 = pd.DataFrame(data=d1, index=idx) df2 = pd.DataFrame(data=d2, index=idx) out = pd.concat([df1, df2]) replace = Replacer() market_mock = replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', Mock()) market_mock.return_value = out tenors_mock = replace('gs_quant.timeseries.measures._var_swap_tenors', Mock()) tenors_mock.return_value = ['1m', '1y', '13m'] expected = pd.Series([7.5, 8.5, 9.5, 10.5], name='varSwap', index=idx) actual = tm.var_swap(Index('MA123', AssetClass.Equity, '123'), '1m', '1y') assert_series_equal(expected, actual) market_mock.assert_called_once() # no data market_mock.return_value = pd.DataFrame() assert tm.var_swap(Index('MA123', AssetClass.Equity, '123'), '1m', '1y').empty # no data for a tenor market_mock.return_value = pd.DataFrame(data=d1, index=idx) assert tm.var_swap(Index('MA123', AssetClass.Equity, '123'), '1m', '1y').empty # no such tenors tenors_mock.return_value = [] assert tm.var_swap(Index('MA123', AssetClass.Equity, '123'), '1m', '1y').empty # finish replace.restore()