def test_harch(self): T, resids, = self.T, self.resids sigma2, backcast = self.sigma2, self.backcast parameters = np.array([.1, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) recpy.harch_recursion_python(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() recpy.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) sigma2_numba = sigma2.copy() rec.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) assert_almost_equal(sigma2_numba, sigma2) assert_almost_equal(sigma2_python, sigma2) parameters = np.array([-.1, -.4, .3, .2]) recpy.harch_recursion_python(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([.1, 4e8, 3, 2]) recpy.harch_recursion_python(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1])
def test_harch_performance(self): harch_setup = """ parameters = np.array([.1, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) """ harch_first = """ recpy.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, var_bounds) """ harch_second = """ rec.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, var_bounds) """ timer = Timer( harch_first, "Numba", harch_second, "Cython", "HARCH", self.timer_setup + harch_setup, ) timer.display() assert timer.ratio < 10.0 if not (missing_numba or CYTHON_COVERAGE): assert 0.1 < timer.ratio
def test_harch(self): T, resids, = self.T, self.resids sigma2, backcast = self.sigma2, self.backcast parameters = np.array([.1, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) recpy.harch_recursion_python(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() recpy.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) sigma2_numba = sigma2.copy() rec.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) assert_almost_equal(sigma2_numba, sigma2) assert_almost_equal(sigma2_python, sigma2)
def test_harch(self): nobs, resids = self.nobs, self.resids sigma2, backcast = self.sigma2, self.backcast parameters = np.array([0.1, 0.4, 0.3, 0.2]) lags = np.array([1, 5, 22], dtype=np.int32) recpy.harch_recursion_python( parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds ) sigma2_python = sigma2.copy() recpy.harch_recursion( parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds ) sigma2_numba = sigma2.copy() rec.harch_recursion( parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds ) assert_almost_equal(sigma2_numba, sigma2) assert_almost_equal(sigma2_python, sigma2) parameters = np.array([-0.1, -0.4, 0.3, 0.2]) recpy.harch_recursion_python( parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds ) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([0.1, 4e8, 3, 2]) recpy.harch_recursion_python( parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds ) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([0.1, 4e8, 3, 2]) mod_resids = resids.copy() mod_resids[:10] = np.inf recpy.harch_recursion_python( parameters, mod_resids, sigma2, lags, nobs, backcast, self.var_bounds ) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) rec.harch_recursion( parameters, mod_resids, sigma2, lags, nobs, backcast, self.var_bounds ) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1])
def test_harch(self): nobs, resids, = self.nobs, self.resids sigma2, backcast = self.sigma2, self.backcast parameters = np.array([.1, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) recpy.harch_recursion_python(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) sigma2_python = sigma2.copy() recpy.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) sigma2_numba = sigma2.copy() rec.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) assert_almost_equal(sigma2_numba, sigma2) assert_almost_equal(sigma2_python, sigma2) parameters = np.array([-.1, -.4, .3, .2]) recpy.harch_recursion_python(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([.1, 4e8, 3, 2]) recpy.harch_recursion_python(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([.1, 4e8, 3, 2]) mod_resids = resids.copy() mod_resids[:10] = np.inf recpy.harch_recursion_python(parameters, mod_resids, sigma2, lags, nobs, backcast, self.var_bounds) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) rec.harch_recursion(parameters, mod_resids, sigma2, lags, nobs, backcast, self.var_bounds) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1])
def test_harch_performance(self): harch_setup = """ parameters = np.array([.1, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) """ harch_first = """ recpy.harch_recursion(parameters, resids, sigma2, lags, T, backcast, var_bounds) """ harch_second = """ rec.harch_recursion(parameters, resids, sigma2, lags, T, backcast, var_bounds) """ timer = Timer(harch_first, 'Numba', harch_second, 'Cython', 'HARCH', self.timer_setup + harch_setup) timer.display() assert timer.ratio < 10.0
def test_harch_performance(self): harch_setup = """ parameters = np.array([.1, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) """ harch_first = """ recpy.harch_recursion(parameters, resids, sigma2, lags, T, backcast, var_bounds) """ harch_second = """ rec.harch_recursion(parameters, resids, sigma2, lags, T, backcast, var_bounds) """ timer = Timer(harch_first, 'Numba', harch_second, 'Cython', 'HARCH', self.timer_setup + harch_setup) timer.display() assert_true(timer.ratio < 10.0)
def test_harch_performance(self): harch_setup = """ parameters = np.array([.1, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) """ harch_first = """ recpy.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, var_bounds) """ harch_second = """ rec.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, var_bounds) """ timer = Timer(harch_first, 'Numba', harch_second, 'Cython', 'HARCH', self.timer_setup + harch_setup) timer.display() assert timer.ratio < 10.0 if not (missing_numba or CYTHON_COVERAGE): assert 0.1 < timer.ratio
def test_bounds(self): nobs, resids, = self.nobs, self.resids sigma2, backcast = self.sigma2, self.backcast parameters = np.array([1e100, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) recpy.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([-1e100, .4, .3, .2]) recpy.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.harch_recursion(parameters, resids, sigma2, lags, nobs, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_almost_equal(sigma2, self.var_bounds[:, 0]) parameters = np.array([1e100, .4, .3, .2]) fresids = resids**2.0 sresids = np.sign(resids) recpy.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, nobs, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, nobs, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([-1e100, .4, .3, .2]) recpy.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, nobs, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, nobs, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_almost_equal(sigma2, self.var_bounds[:, 0]) parameters = np.array([1e100, .4, .3, .2]) recpy.arch_recursion(parameters, resids, sigma2, 3, nobs, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.arch_recursion(parameters, resids, sigma2, 3, nobs, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert np.all(sigma2 >= self.var_bounds[:, 0]) assert np.all(sigma2 <= 2 * self.var_bounds[:, 1]) parameters = np.array([-1e100, .4, .3, .2]) recpy.arch_recursion(parameters, resids, sigma2, 3, nobs, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.arch_recursion(parameters, resids, sigma2, 3, nobs, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_almost_equal(sigma2, self.var_bounds[:, 0])
def test_bounds(self): T, resids, = self.T, self.resids sigma2, backcast = self.sigma2, self.backcast parameters = np.array([1e100, .4, .3, .2]) lags = np.array([1, 5, 22], dtype=np.int32) recpy.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_true((sigma2 >= self.var_bounds[:, 1]).all()) parameters = np.array([-1e100, .4, .3, .2]) recpy.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.harch_recursion(parameters, resids, sigma2, lags, T, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_almost_equal(sigma2, self.var_bounds[:, 0]) parameters = np.array([1e100, .4, .3, .2]) fresids = resids ** 2.0 sresids = np.sign(resids) recpy.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, T, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_true((sigma2 >= self.var_bounds[:, 1]).all()) parameters = np.array([-1e100, .4, .3, .2]) recpy.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.garch_recursion(parameters, fresids, sresids, sigma2, 1, 1, 1, T, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_almost_equal(sigma2, self.var_bounds[:, 0]) parameters = np.array([1e100, .4, .3, .2]) recpy.arch_recursion(parameters, resids, sigma2, 3, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.arch_recursion(parameters, resids, sigma2, 3, T, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_true((sigma2 >= self.var_bounds[:, 1]).all()) parameters = np.array([-1e100, .4, .3, .2]) recpy.arch_recursion(parameters, resids, sigma2, 3, T, backcast, self.var_bounds) sigma2_python = sigma2.copy() rec.arch_recursion(parameters, resids, sigma2, 3, T, backcast, self.var_bounds) assert_almost_equal(sigma2_python, sigma2) assert_almost_equal(sigma2, self.var_bounds[:, 0])