Beispiel #1
0
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()
Beispiel #2
0
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()