def test_arch_arx(self): np.random.seed(12345) x = np.random.randn(500, 3) y = x.sum(1) + 3 * np.random.randn(500) am = ARX(y=y, x=x) am.fit(disp=DISPLAY).summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert isinstance(results.pvalues, pd.Series), True assert_equal(list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]']) am = ARX(y=y, lags=2, x=x) am.fit(disp=DISPLAY).summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert isinstance(results.pvalues, pd.Series) assert_equal(list(results.pvalues.index), ['Const', 'y[1]', 'y[2]', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]']) x = pd.DataFrame(x, columns=['x0', 'x1', 'x2']) y = pd.Series(y, name='y') am = ARX(y=y, x=x) am.fit(disp=DISPLAY).summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert isinstance(results.pvalues, pd.Series) assert_equal(list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]'])
def test_errors(self): with pytest.raises(ValueError): ARX(self.y, lags=np.array([[1, 2], [3, 4]])) x = self.rng.randn(self.y.shape[0] + 1, 1) with pytest.raises(ValueError): ARX(self.y, x=x) with pytest.raises(ValueError): HARX(self.y, lags=np.eye(3)) with pytest.raises(ValueError): ARX(self.y, lags=-1) with pytest.raises(ValueError): ARX(self.y, x=self.rng.randn(1, 1), lags=-1) ar = ARX(self.y, lags=1) with self.assertRaises(ValueError): d = Normal() ar.volatility = d with self.assertRaises(ValueError): v = GARCH() ar.distribution = v x = self.rng.randn(1000, 1) with pytest.raises(ValueError): ar.simulate(np.ones(5), 100, x=x) with pytest.raises(ValueError): ar.simulate(np.ones(5), 100) with pytest.raises(ValueError): ar.simulate(np.ones(3), 100, initial_value=self.rng.randn(10)) with self.assertRaises(ValueError): ar.volatility = ConstantVariance() ar.fit(cov_type='unknown')
def test_errors(self): with pytest.raises(ValueError): ARX(self.y, lags=np.array([[1, 2], [3, 4]])) x = randn(self.y.shape[0] + 1, 1) with pytest.raises(ValueError): ARX(self.y, x=x) with pytest.raises(ValueError): HARX(self.y, lags=np.eye(3)) with pytest.raises(ValueError): ARX(self.y, lags=-1) with pytest.raises(ValueError): ARX(self.y, x=randn(1, 1), lags=-1) ar = ARX(self.y, lags=1) with self.assertRaises(ValueError): d = Normal() ar.volatility = d with self.assertRaises(ValueError): v = GARCH() ar.distribution = v x = randn(1000, 1) with pytest.raises(ValueError): ar.simulate(np.ones(5), 100, x=x) with pytest.raises(ValueError): ar.simulate(np.ones(5), 100) with pytest.raises(ValueError): ar.simulate(np.ones(3), 100, initial_value=randn(10)) with self.assertRaises(ValueError): ar.volatility = ConstantVariance() ar.fit(cov_type='unknown')
def test_arch_arx(self): np.random.seed(12345) x = np.random.randn(500, 3) y = x.sum(1) + 3 * np.random.randn(500) am = ARX(y=y, x=x) am.fit().summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert_true(isinstance(results.pvalues, pd.Series), True) assert_equal(list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]']) am = ARX(y=y, lags=2, x=x) am.fit().summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert_true(isinstance(results.pvalues, pd.Series), True) assert_equal(list(results.pvalues.index), ['Const', 'y[1]', 'y[2]', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]']) x = pd.DataFrame(x, columns=['x0', 'x1', 'x2']) y = pd.Series(y, name='y') am = ARX(y=y, x=x) am.fit().summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert_true(isinstance(results.pvalues, pd.Series), True) assert_equal(list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]'])
def test_arch_arx(self): self.rng.seed(12345) x = self.rng.randn(500, 3) y = x.sum(1) + 3 * self.rng.standard_normal(500) am = ARX(y=y, x=x) res = am.fit(disp=DISPLAY) res.summary() assert isinstance(res.optimization_result, OptimizeResult) am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp=DISPLAY) assert isinstance(results.pvalues, pd.Series) assert_equal( list(results.pvalues.index), ["Const", "x0", "x1", "x2", "omega", "alpha[1]", "alpha[2]"], ) am = ARX(y=y, lags=2, x=x) res = am.fit(disp=DISPLAY) summ = res.summary().as_text() res_repr = res.__repr__() assert str(hex(id(res))) in res_repr assert summ[:10] == res_repr[:10] am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp=DISPLAY) assert isinstance(results.pvalues, pd.Series) assert_equal( list(results.pvalues.index), [ "Const", "y[1]", "y[2]", "x0", "x1", "x2", "omega", "alpha[1]", "alpha[2]", ], ) x = pd.DataFrame(x, columns=["x0", "x1", "x2"]) y = pd.Series(y, name="y") am = ARX(y=y, x=x) am.fit(disp=DISPLAY).summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp=DISPLAY) assert isinstance(results.pvalues, pd.Series) assert_equal( list(results.pvalues.index), ["Const", "x0", "x1", "x2", "omega", "alpha[1]", "alpha[2]"], )
def test_no_param_volatility(self): cm = ConstantMean(self.y) cm.volatility = EWMAVariance() cm.fit(update_freq=0) cm.volatility = RiskMetrics2006() cm.fit(update_freq=0) ar = ARX(self.y, lags=5) ar.volatility = EWMAVariance() ar.fit(update_freq=0) ar.volatility = RiskMetrics2006() ar.fit(update_freq=0)
def test_no_param_volatility(self): cm = ConstantMean(self.y) cm.volatility = EWMAVariance() cm.fit(update_freq=0) cm.volatility = RiskMetrics2006() cm.fit(update_freq=0) ar = ARX(self.y, lags=5) ar.volatility = EWMAVariance() ar.fit(update_freq=0) ar.volatility = RiskMetrics2006() ar.fit(update_freq=0)
def test_no_param_volatility(self): cm = ConstantMean(self.y) cm.volatility = EWMAVariance() cm.fit(update_freq=0, disp=DISPLAY) cm.volatility = RiskMetrics2006() cm.fit(update_freq=0, disp=DISPLAY) ar = ARX(self.y, lags=5) ar.volatility = EWMAVariance() ar.fit(update_freq=0, disp=DISPLAY) ar.volatility = RiskMetrics2006() ar.fit(update_freq=0, disp=DISPLAY) assert 'tau0' in str(ar.volatility) assert 'tau1' in str(ar.volatility) assert 'kmax' in str(ar.volatility)
def test_no_param_volatility(self): cm = ConstantMean(self.y) cm.volatility = EWMAVariance() cm.fit(update_freq=0, disp=DISPLAY) cm.volatility = RiskMetrics2006() cm.fit(update_freq=0, disp=DISPLAY) ar = ARX(self.y, lags=5) ar.volatility = EWMAVariance() ar.fit(update_freq=0, disp=DISPLAY) ar.volatility = RiskMetrics2006() ar.fit(update_freq=0, disp=DISPLAY) assert 'tau0' in str(ar.volatility) assert 'tau1' in str(ar.volatility) assert 'kmax' in str(ar.volatility)
def test_first_last_obs(self): ar = ARX(self.y, lags=5, hold_back=100) res = ar.fit(update_freq=0, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:100] = np.nan assert_equal(resids, resid_copy) ar.volatility = GARCH() res = ar.fit(update_freq=0, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:100] = np.nan assert_equal(resids, resid_copy) ar = ARX(self.y, lags=5) ar.volatility = GARCH() res = ar.fit(update_freq=0, last_obs=500, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[500:] = np.nan assert_equal(resids, resid_copy) ar = ARX(self.y, lags=5, hold_back=100) ar.volatility = GARCH() res = ar.fit(update_freq=0, last_obs=500, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:100] = np.nan resid_copy[500:] = np.nan assert_equal(resids, resid_copy) vol = res.conditional_volatility vol_copy = vol.copy() vol_copy[:100] = np.nan vol_copy[500:] = np.nan assert_equal(vol, vol_copy) assert_equal(self.y.shape[0], vol.shape[0]) ar = ARX(self.y, lags=5) ar.volatility = GARCH() res = ar.fit(update_freq=0, last_obs=500, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:5] = np.nan resid_copy[500:] = np.nan assert_equal(resids, resid_copy)
def test_first_last_obs(self): ar = ARX(self.y, lags=5, hold_back=100) res = ar.fit(update_freq=0, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:100] = np.nan assert_equal(resids, resid_copy) ar.volatility = GARCH() res = ar.fit(update_freq=0, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:100] = np.nan assert_equal(resids, resid_copy) ar = ARX(self.y, lags=5) ar.volatility = GARCH() res = ar.fit(update_freq=0, last_obs=500, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[500:] = np.nan assert_equal(resids, resid_copy) ar = ARX(self.y, lags=5, hold_back=100) ar.volatility = GARCH() res = ar.fit(update_freq=0, last_obs=500, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:100] = np.nan resid_copy[500:] = np.nan assert_equal(resids, resid_copy) vol = res.conditional_volatility vol_copy = vol.copy() vol_copy[:100] = np.nan vol_copy[500:] = np.nan assert_equal(vol, vol_copy) assert_equal(self.y.shape[0], vol.shape[0]) ar = ARX(self.y, lags=5) ar.volatility = GARCH() res = ar.fit(update_freq=0, last_obs=500, disp=DISPLAY) resids = res.resid resid_copy = resids.copy() resid_copy[:5] = np.nan resid_copy[500:] = np.nan assert_equal(resids, resid_copy)
def test_arch_arx(self): self.rng.seed(12345) x = self.rng.randn(500, 3) y = x.sum(1) + 3 * self.rng.randn(500) am = ARX(y=y, x=x) res = am.fit(disp=DISPLAY) res.summary() assert isinstance(res.optimization_result, OptimizeResult) am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp=DISPLAY) assert isinstance(results.pvalues, pd.Series) assert_equal( list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]']) am = ARX(y=y, lags=2, x=x) res = am.fit(disp=DISPLAY) summ = res.summary().as_text() repr = res.__repr__() assert str(hex(id(res))) in repr assert summ[:10] == repr[:10] am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp=DISPLAY) assert isinstance(results.pvalues, pd.Series) assert_equal(list(results.pvalues.index), [ 'Const', 'y[1]', 'y[2]', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]' ]) x = pd.DataFrame(x, columns=['x0', 'x1', 'x2']) y = pd.Series(y, name='y') am = ARX(y=y, x=x) am.fit(disp=DISPLAY).summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp=DISPLAY) assert isinstance(results.pvalues, pd.Series) assert_equal( list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]'])
def test_arch_arx(self): np.random.seed(12345) x = np.random.randn(500, 3) y = x.sum(1) + 3 * np.random.randn(500) am = ARX(y=y, x=x) am.fit(disp=DISPLAY).summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert isinstance(results.pvalues, pd.Series), True assert_equal(list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]']) am = ARX(y=y, lags=2, x=x) res = am.fit(disp=DISPLAY) summ = res.summary().as_text() repr = res.__repr__() assert str(hex(id(res))) in repr assert summ[:10] == repr[:10] am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert isinstance(results.pvalues, pd.Series) assert_equal(list(results.pvalues.index), ['Const', 'y[1]', 'y[2]', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]']) x = pd.DataFrame(x, columns=['x0', 'x1', 'x2']) y = pd.Series(y, name='y') am = ARX(y=y, x=x) am.fit(disp=DISPLAY).summary() am.volatility = ARCH(p=2) results = am.fit(update_freq=0, disp='off') assert isinstance(results.pvalues, pd.Series) assert_equal(list(results.pvalues.index), ['Const', 'x0', 'x1', 'x2', 'omega', 'alpha[1]', 'alpha[2]'])