def test_basket_average_implied_vol(): replace = Replacer() dates = pd.DatetimeIndex([date(2021, 1, 1), date(2021, 1, 2), date(2021, 1, 3), date(2021, 1, 4), date(2021, 1, 5), date(2021, 1, 6)]) x = pd.DataFrame({'impliedVolatility': [30.0, 30.2, 29.8, 30.6, 30.1, 30.0]}, index=dates) x['assetId'] = 'MA4B66MW5E27U9VBB94' y = pd.DataFrame({'impliedVolatility': [20.0, 20.2, 20.3, 20.6, 21.1, 20.0]}, index=dates) y['assetId'] = 'MA4B66MW5E27UAL9SUX' implied_vol = x.append(y) implied_vol.index.name = 'date' mock_data = replace('gs_quant.timeseries.measures.GsDataApi.get_market_data', Mock()) mock_data.side_effect = [implied_vol, _mock_spot_data()] mock_asset = replace('gs_quant.timeseries.backtesting.GsAssetApi.get_many_assets_data', Mock()) mock_asset.return_value = [{'id': 'MA4B66MW5E27U9VBB94', 'bbid': 'AAPL UW'}, {'id': 'MA4B66MW5E27UAL9SUX', 'bbid': 'MSFT UW'}] a_basket = Basket(['AAPL UW', 'MSFT UW'], [0.1, 0.9], RebalFreq.DAILY) expected = pd.Series([21.0, 21.2, 21.25, 21.6, 22.0, 21.0], index=dates) actual = a_basket.average_implied_volatility('6m', EdrDataReference.DELTA_CALL, 50) assert_series_equal(actual, expected) with pytest.raises(NotImplementedError): a_basket.average_implied_volatility('6m', EdrDataReference.DELTA_CALL, 50, real_time=True) replace.restore()
def test_basket_average_implied_vol(): replace = Replacer() dates = pd.DatetimeIndex([date(2021, 1, 1), date(2021, 1, 2), date(2021, 1, 3), date(2021, 1, 4), date(2021, 1, 5), date(2021, 1, 6)]) x = pd.DataFrame({'impliedVolatility': [30.0, 30.2, 29.8, 30.6, 30.1, 30.0]}, index=dates) x['assetId'] = 'MA4B66MW5E27U9VBB94' y = pd.DataFrame({'impliedVolatility': [20.0, 20.2, 20.3, 20.6, 21.1, 20.0]}, index=dates) y['assetId'] = 'MA4B66MW5E27UAL9SUX' implied_vol = x.append(y) implied_vol.index.name = 'date' mock_spot = replace('gs_quant.timeseries.backtesting.ts.get_historical_and_last_for_measure', Mock()) mock_spot.side_effect = [implied_vol.rename(columns={'impliedVolatility': 'spot'})] mock_data = replace('gs_quant.api.utils.ThreadPoolManager.run_async', Mock()) mock_data.return_value = [implied_vol] mock_asset = replace('gs_quant.timeseries.backtesting.GsAssetApi.get_many_assets_data', Mock()) mock_asset.return_value = [{'id': 'MA4B66MW5E27U9VBB94', 'bbid': 'AAPL UW'}, {'id': 'MA4B66MW5E27UAL9SUX', 'bbid': 'MSFT UW'}] a_basket = Basket(['AAPL UW', 'MSFT UW'], [0.1, 0.9], RebalFreq.DAILY) expected = pd.Series([21.0, 21.2, 21.25, 21.6, 22.0, 21.0], index=dates) actual = a_basket.average_implied_volatility('6m', VolReference.DELTA_CALL, 50) assert_series_equal(actual, expected) with pytest.raises(NotImplementedError): a_basket.average_implied_volatility('6m', VolReference.DELTA_CALL, 50, real_time=True) mock_data.return_value = [pd.DataFrame(), pd.DataFrame()] expected = pd.Series(dtype=float) actual = a_basket.average_implied_volatility('3m', VolReference.FORWARD, 20) # no data for this assert_series_equal(expected, actual) replace.restore()