def test_tol_memory(d, tol_memory): fracdiff = Fracdiff(d, window=None, tol_memory=tol_memory) try: fracdiff.transform(X) window = fracdiff.window_ if d > 1: d -= floor(d) assert abs(lost_memory(d, window)) < abs(tol_memory) except RuntimeWarning: # saturation pass
def test_tol_coef(d, tol_coef): fracdiff = Fracdiff(d, window=None, tol_coef=tol_coef) try: fracdiff.transform(X) window = fracdiff.window_ if d.is_integer(): assert window == d + 1 else: if d > 1: d -= floor(d) assert abs(last_coef(d, window)) < abs(tol_coef) except RuntimeWarning: # saturation pass
def test_change_d(d, window, n_blanks_1, n_blanks_2, n_terms, n_series): """ Test the correctness of coefficients. """ X = make_X(window, n_blanks_1, n_blanks_2, n_terms, n_series) fracdiff = Fracdiff(0.42, window=window) _ = fracdiff.transform(X) fracdiff.d = d Xd = fracdiff.transform(X) Xd_expected = Fracdiff(d, window=window).transform(X) assert np.allclose(Xd, Xd_expected, equal_nan=True)
def howto_spx(): spx = fetch_price('^GSPC') window = 100 fracdiff = Fracdiff(0.5, window=window) spx_diff = fracdiff.transform(spx.values.reshape(-1, 1)) spxd = pd.Series(spx_diff[:, 0], index=spx.index) plot_spx(spx[window:], spxd[window:])
def test_transform_twice(d, window, n_blanks_1, n_blanks_2, n_terms, n_series): """ Test the correctness of coefficients. """ X = make_X(window, n_blanks_1, n_blanks_2, n_terms, n_series) fracdiff = Fracdiff(d, window=window) Xd1 = fracdiff.transform(X) Xd2 = fracdiff.transform(X) assert np.allclose(Xd1, Xd2, equal_nan=True)
def test_coef(d, window, n_blanks_1, n_blanks_2, n_terms, n_series): """ Test the correctness of coefficients. """ X = make_X(window, n_blanks_1, n_blanks_2, n_terms, n_series) fracdiff = Fracdiff(d, window=window) Xd = fracdiff.transform(X) coef_expected = fracdiff.coef_ for i in range(n_series): coef = Xd[window + n_blanks_1:, i][:n_terms] assert np.allclose(coef, coef_expected)
def test_small_n_samples(): fracdiff = Fracdiff(window=100) with pytest.raises(ValueError): fracdiff.transform(np.zeros((10, 2)))
def test_saturation(): small_tolerance = 2**(-20) fracdiff = Fracdiff(0.5, window=None, tol_memory=small_tolerance) with pytest.raises(RuntimeWarning): fracdiff.transform(X)
def test_fracdiff_tol_coef(tol_coef): with pytest.raises(ValueError): fracdiff = Fracdiff(tol_coef=tol_coef) fracdiff.transform(X)
def test_fracdiff_tol_memory(tol_memory): with pytest.raises(ValueError): fracdiff = Fracdiff(tol_memory=tol_memory) fracdiff.transform(X)
def test_fracdiff_noparams(): with pytest.raises(ValueError): fracdiff = Fracdiff(window=None, tol_coef=None, tol_memory=None) fracdiff.transform(X)