tests/testthat/test-forecasting.R

window.zoo <- get("window.zoo", envir = asNamespace("zoo"))
rt <- window.zoo(SP500, end = "2002-12-31")

test_that("fEGarch forecast in mean works as intended", {

    # Parametric models with mean

    expect_equal({
      est <- loggarch_spec() %>%
        fEGarch(rt, n_test = 250)
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      est <- loggarch_spec() %>%
        fEGarch(rt, n_test = 250)
      rep(est@pars[["mu"]], 250)
    })


    expect_equal({
      est <- egarch_spec() %>%
        fEGarch(rt, n_test = 250)
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      est <- egarch_spec() %>%
        fEGarch(rt, n_test = 250)
      rep(est@pars[["mu"]], 250)
    })

    expect_equal({
      est <- suppressWarnings(aparch(rt, n_test = 250))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      est <- suppressWarnings(aparch(rt, n_test = 250))
      rep(est@pars[["mu"]], 250)
    })

    expect_equal({
      est <- suppressWarnings(fiaparch(rt, n_test = 250))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      est <- suppressWarnings(fiaparch(rt, n_test = 250))
      rep(est@pars[["mu"]], 250)
    })

    # Parametric models without mean

    expect_equal({
      est <- loggarch_spec() %>%
        fEGarch(rt, n_test = 250, meanspec = mean_spec(include_mean = FALSE))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(0, 250)
    })


    expect_equal({
      est <- egarch_spec() %>%
        fEGarch(rt, n_test = 250, meanspec = mean_spec(include_mean = FALSE))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(0, 250)
    })

    expect_equal({
      est <- suppressWarnings(aparch(rt, n_test = 250, meanspec = mean_spec(include_mean = FALSE)))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(0, 250)
    })

    expect_equal({
      est <- suppressWarnings(fiaparch(rt, n_test = 250, meanspec = mean_spec(include_mean = FALSE)))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(0, 250)
    })

    # Semiparametric models

    expect_equal({
      est <- loggarch_spec() %>%
        fEGarch(rt, n_test = 250, use_nonpar = TRUE)
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(mean(utils::head(rt, -250)), 250)
    })


    expect_equal({
      est <- egarch_spec() %>%
        fEGarch(rt, n_test = 250, use_nonpar = TRUE)
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(mean(utils::head(rt, -250)), 250)
    })

    expect_equal({
      est <- suppressWarnings(aparch(rt, n_test = 250, use_nonpar = TRUE))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(mean(utils::head(rt, -250)), 250)
    })

    expect_equal({
      est <- suppressWarnings(fiaparch(rt, n_test = 250, use_nonpar = TRUE))
      fcast <- predict_roll(est)
      zoo::coredata(fcast@cmeans)
    }, {
      rep(mean(utils::head(rt, -250)), 250)
    })

})

Try the fEGarch package in your browser

Any scripts or data that you put into this service are public.

fEGarch documentation built on Sept. 11, 2025, 5:11 p.m.