Skip to content

Commit 2641b26

Browse files
committed
Expand FIAPARCH updater tests and add reduce/setstate coverage
Made-with: Cursor
1 parent 08a4b4f commit 2641b26

File tree

1 file changed

+39
-3
lines changed

1 file changed

+39
-3
lines changed

arch/tests/univariate/test_volatility.py

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1947,11 +1947,18 @@ def test_fiaparch(setup):
19471947
assert_equal(fiaparch.truncation, trunc_lag)
19481948

19491949

1950+
@pytest.mark.parametrize("p", [0, 1])
19501951
@pytest.mark.parametrize("o", [0, 1])
1952+
@pytest.mark.parametrize("q", [0, 1])
19511953
@pytest.mark.parametrize("delta", [None, 1.5])
1952-
def test_fiaparch_updater_matches_recursion(setup, o, delta):
1953-
fiaparch = FIAPARCH(truncation=300, o=o, delta=delta)
1954-
params = [0.1, 0.2, 0.4, 0.2]
1954+
def test_fiaparch_updater_matches_recursion(setup, p, o, q, delta):
1955+
fiaparch = FIAPARCH(p=p, o=o, q=q, truncation=300, delta=delta)
1956+
params = [0.1]
1957+
if p:
1958+
params.append(0.2)
1959+
params.append(0.4)
1960+
if q:
1961+
params.append(0.2)
19551962
if o:
19561963
params.append(0.8)
19571964
if delta is None:
@@ -2319,3 +2326,32 @@ def test_fiaparch_str(setup, p, o, q):
23192326
assert f"p: {p}" in s
23202327
assert f"o: {o}" in s
23212328
assert "delta:" not in s
2329+
2330+
2331+
@pytest.mark.parametrize("delta", [None, 1.5])
2332+
def test_fiaparch_updater_reduce_setstate(setup, delta):
2333+
fiaparch = FIAPARCH(truncation=300, delta=delta)
2334+
params = [0.1, 0.2, 0.4, 0.2, -0.3]
2335+
if delta is None:
2336+
params.append(1.5)
2337+
parameters = np.array(params)
2338+
backcast = fiaparch.backcast(setup.resids)
2339+
var_bounds = fiaparch.variance_bounds(setup.resids)
2340+
2341+
sigma2 = np.zeros_like(setup.sigma2)
2342+
fiaparch.compute_variance(parameters, setup.resids, sigma2, backcast, var_bounds)
2343+
2344+
updater = fiaparch.volatility_updater
2345+
updater.initialize_update(parameters, backcast, setup.t)
2346+
sigma2_pre = np.zeros_like(setup.sigma2)
2347+
for t in range(setup.t):
2348+
updater._update_tester(t, parameters, setup.resids, sigma2_pre, var_bounds)
2349+
2350+
cls, init_args, state = updater.__reduce__()
2351+
restored = cls(*init_args)
2352+
restored.__setstate__(state)
2353+
sigma2_post = np.zeros_like(setup.sigma2)
2354+
for t in range(setup.t):
2355+
restored._update_tester(t, parameters, setup.resids, sigma2_post, var_bounds)
2356+
2357+
assert_allclose(sigma2_post, sigma2_pre)

0 commit comments

Comments
 (0)