Example #1
0
    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]'])
Example #2
0
    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')
Example #3
0
    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')
Example #4
0
    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]'])
Example #5
0
    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]"],
        )
Example #6
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)
Example #7
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)
Example #8
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)
Example #9
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)
Example #10
0
    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)
Example #11
0
    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)
Example #12
0
    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]'])
Example #13
0
    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]'])