Exemple #1
0
def test_limited_redundancy():
    data = generate_data(0,
                         datatype="numpy",
                         const=False,
                         other_effects=1,
                         ntk=(25, 200, 5))
    for i in range(0, data.x.shape[1], 7):
        data.x[1, i, :] = data.x[0, i, :]
    mod = FamaMacBeth(data.y, data.x)
    res = mod.fit()
    assert np.any(np.isnan(res.all_params))
def test_block_size_warnings():
    y = np.arange(12.0)[:, None]
    x = np.ones((12, 3))
    x[:, 1] = np.arange(12.0)
    x[:, 2] = np.arange(12.0)**2
    idx = pd.MultiIndex.from_product([["a", "b", "c"],
                                      pd.date_range("2000-1-1", periods=4)])
    y = pd.DataFrame(y, index=idx, columns=["y"])
    x = pd.DataFrame(x, index=idx, columns=["x1", "x2", "x3"])
    with pytest.warns(MissingValueWarning):
        FamaMacBeth(y.iloc[:11], x.iloc[:11])
    with pytest.warns(InferenceUnavailableWarning):
        FamaMacBeth(y.iloc[::4], x.iloc[::4])
def test_block_size_warnings():
    y = np.arange(12.0)[:, None]
    x = np.ones((12, 3))
    x[:, 1] = np.arange(12.0)
    x[:, 2] = np.arange(12.0)**2
    idx = pd.MultiIndex.from_product([['a', 'b', 'c'],
                                      pd.date_range('2000-1-1', periods=4)])
    y = pd.DataFrame(y, index=idx, columns=['y'])
    x = pd.DataFrame(x, index=idx, columns=['x1', 'x2', 'x3'])
    with pytest.warns(MissingValueWarning):
        FamaMacBeth(y.iloc[:11], x.iloc[:11])
    with pytest.warns(InferenceUnavailableWarning):
        FamaMacBeth(y.iloc[::4], x.iloc[::4])
def test_fama_macbeth(data):
    res = FamaMacBeth(data.y, data.x).fit(debiased=True)
    y = PanelData(data.y)
    x = PanelData(data.x)
    missing = y.isnull | x.isnull
    y.drop(missing)
    x.drop(missing)
    y = y.dataframe
    x = x.dataframe
    times = y.index.levels[1]
    params = []
    for t in times:
        _y = y.xs(t, level=1)
        _x = x.xs(t, level=1)
        if _x.shape[0] < _x.shape[1]:
            continue
        _x = _x.loc[_y.index]
        params.append(np.linalg.lstsq(_x.values, _y.values)[0])
    params = np.array(params).squeeze()
    all_params = params
    params = params.mean(0)
    assert_allclose(params.squeeze(), res.params)
    e_params = all_params - params[None, :]
    ntime = e_params.shape[0]
    cov = e_params.T @ e_params / ntime / (ntime - 1)
    assert_allclose(cov, res.cov.values)

    d = dir(res)
    for key in d:
        if not key.startswith('_'):
            val = getattr(res, key)
            if callable(val):
                val()
def test_fama_macbeth(data):
    res = FamaMacBeth(data.y, data.x).fit(debiased=True)
    y = PanelData(data.y)
    x = PanelData(data.x)
    missing = y.isnull | x.isnull
    y.drop(missing)
    x.drop(missing)
    y = y.dataframe
    x = x.dataframe
    times = y.index.levels[1]
    params = []
    for t in times:
        _y = y.xs(t, level=1)
        _x = x.xs(t, level=1)
        if _x.shape[0] < _x.shape[1]:
            continue
        _x = _x.loc[_y.index]
        params.append(lstsq(_x.values, _y.values, rcond=None)[0])
    params = np.array(params).squeeze()
    all_params = params
    params = params.mean(0)
    assert_allclose(params.squeeze(), res.params)
    assert_allclose(all_params, res.all_params.dropna(how="all"))
    e_params = all_params - params[None, :]
    ntime = e_params.shape[0]
    cov = e_params.T @ e_params / ntime / (ntime - 1)
    assert_allclose(cov, np.asarray(res.cov))
    access_attributes(res)
def test_fama_macbeth_kernel_smoke(data):
    FamaMacBeth(data.y, data.x).fit(cov_type="kernel")
    FamaMacBeth(data.y, data.x).fit(cov_type="kernel", kernel="bartlett")
    FamaMacBeth(data.y, data.x).fit(cov_type="kernel", kernel="newey-west")
    FamaMacBeth(data.y, data.x).fit(cov_type="kernel", kernel="parzen")
    FamaMacBeth(data.y, data.x).fit(cov_type="kernel", kernel="qs")
    FamaMacBeth(data.y, data.x).fit(cov_type="kernel", bandwidth=3)
    res = FamaMacBeth(data.y, data.x).fit(cov_type="kernel", kernel="andrews")
    access_attributes(res)
Exemple #7
0
def test_fama_macbeth_kernel_smoke(data):
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='bartlett')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='newey-west')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='parzen')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='qs')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', bandwidth=3)
    res = FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='andrews')
    access_attributes(res)
def test_fitted_effects_residuals(data):
    mod = FamaMacBeth(data.y, data.x)
    res = mod.fit()

    expected = mod.exog.values2d @ res.params.values
    expected = pd.DataFrame(expected,
                            index=mod.exog.index,
                            columns=['fitted_values'])
    assert_allclose(res.fitted_values, expected)
    assert_frame_similar(res.fitted_values, expected)

    expected.iloc[:, 0] = mod.dependent.values2d - expected.values
    expected.columns = ['idiosyncratic']
    assert_allclose(res.idiosyncratic, expected)
    assert_frame_similar(res.idiosyncratic, expected)

    expected.iloc[:, 0] = np.nan
    expected.columns = ['estimated_effects']
    assert_allclose(res.estimated_effects, expected)
    assert_frame_similar(res.estimated_effects, expected)
def test_block_size_error():
    y = np.arange(12.0)[:, None]
    x = np.ones((12, 2))
    x[1::4, 1] = 2
    x[2::4, 1] = 3
    idx = pd.MultiIndex.from_product([["a", "b", "c"],
                                      pd.date_range("2000-1-1", periods=4)])
    y = pd.DataFrame(y, index=idx, columns=["y"])
    x = pd.DataFrame(x, index=idx, columns=["x1", "x2"])
    with pytest.raises(ValueError):
        FamaMacBeth(y, x)
def test_block_size_error():
    y = np.arange(12.0)[:, None]
    x = np.ones((12, 2))
    x[1::4, 1] = 2
    x[2::4, 1] = 3
    idx = pd.MultiIndex.from_product([['a', 'b', 'c'],
                                      pd.date_range('2000-1-1', periods=4)])
    y = pd.DataFrame(y, index=idx, columns=['y'])
    x = pd.DataFrame(x, index=idx, columns=['x1', 'x2'])
    with pytest.raises(ValueError):
        FamaMacBeth(y, x)
def test_fama_macbeth_kernel_smoke(data):
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='bartlett')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='newey-west')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='parzen')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='qs')
    FamaMacBeth(data.y, data.x).fit(cov_type='kernel', bandwidth=3)
    res = FamaMacBeth(data.y, data.x).fit(cov_type='kernel', kernel='andrews')

    d = dir(res)
    for key in d:
        if not key.startswith('_'):
            val = getattr(res, key)
            if callable(val):
                val()
def test_unknown_cov_type(data):
    with pytest.raises(ValueError):
        FamaMacBeth(data.y, data.x).fit(cov_type='unknown')