cvgtest | R Documentation |
The conditional (Kupiec, 1995), the unconditional coverage test (Christoffersen, 1998) and the independence test (Christoffersen, 1998) of the Value-at-Risk (VaR) are applied.
cvgtest(obj = list(loss = NULL, VaR = NULL, p = NULL), conflvl = 0.95)
obj |
a list that contains the following elements:
|
conflvl |
a numeric vector with one element; the significance
level at which the null hypotheses are evaluated; is set to |
With this function, the conditional and the unconditional coverage tests introduced by Kupiec (1995) and Christoffersen (1998) can be applied. Given a return series r_t with n observations, divide the series into n-K in-sample and K out-of-sample observations, fit a model to the in-sample data and obtain rolling one-step forecasts of the VaR for the out-of-sample time points.
Define
I_t = 1,
if -r_t > \widehat{VaR}_t (α) or
I_t = 0,
otherwise,
for t = n + 1, n + 2, ..., n + K as the hit sequence, where α is the confidence level for the VaR (often α = 0.95 or α = 0.99). Furthermore, denote p = α and let w be the actual covered proportion of losses in the data.
1. Unconditional coverage test:
H_{0, uc}: p = w
Let K_1 be the number of ones in I_t and analogously K_0 the number of zeros (all conditional on the first observation). Also calculate \hat{w} = K_0 / (K - 1). Obtain
L(I_t, p) = p^{K_0}(1 - p)^{K_1}
and
L(I_t, \hat{w}) = \hat{w}^{K_0}(1 - \hat{w})^{K_1}
and subsequently the test statistic
LR_{uc} = -2 * \ln \{L(I_t, p) / L(I_t, \hat{w})\}.
LR_{uc} now asymptotically follows a chi-square-distribution with one degree of freedom.
2. Conditional coverage test:
The conditional coverage test combines the unconditional coverage test with a test on independence. Denote by w_{ij} the probability of an i on day t-1 being followed by a j on day t, where i and j correspond to the value of I_t on the respective day.
H_{0, cc}: w_{00} = w{10} = p
with i = 0, 1 and j = 0, 1.
Let K_{ij} be the number of observations, where the values on two following days follow the pattern ij. Calculate
L(I_t, \hat{w}_{00}, \hat{w}_{10}) = \hat{w}_{00}^{K_{00}}(1 - \hat{w}_{00})^{K_{01}} * \hat{w}_{10})^{K_{10}}(1 - \hat{w}_{10})^{K_{11}},
where \hat{w}_{00} = K_{00} / K_0 and \hat{w}_{10} = K_{10} / K_1. The test statistic is then given by
LR_{cc} = -2 * \ln \{ L(I_t, p) / L(I_t, \hat{w}_{00}, \hat{w}_{10}) \},
which asymptotically follows a chi-square-distribution with two degrees of freedom.
3. Independence test:
H_{0,ind}: w_{00} = w_{10}
The asymptotically chi-square-distributed test statistic (one degree of freedom) is given by
LR_{ind} = -2 * \ln \{L(I_t, \hat{w}_{00}, \hat{w}_{10}) / L(I_t, \hat{w})\}.
—————————————————————————–
The function needs four inputs: the out-of-sample loss series obj$loss
, the
corresponding estimated VaR series obj$VaR
, the coverage level obj$p
,
for which the VaR has been calculated and the significance level conflvl
,
at which the null hypotheses are evaluated. If an object returned by this
function is entered into the R console, a detailed overview of the test results
is printed.
A list of class quarks
with the following four elements:
probability p stated in the null hypotheses of the coverage tests
the p-value of the unconditional coverage test
the p-value of the conditional coverage test
the p-value of the independence test
the significance level at which the null hypotheses are evaluated
selected model for estimation; only available if a list
returned by the rollcast
function is passed to cvgtest
selected method for estimation; only available if a list
returned by the rollcast
) function is passed to cvgtest
Christoffersen, P. F. (1998). Evaluating interval forecasts. International economic review, pp. 841-862.
Kupiec, P. (1995). Techniques for verifying the accuracy of risk measurement models. The J. of Derivatives, 3(2).
prices <- DAX$price.close returns <- diff(log(prices)) n <- length(returns) nout <- 250 # number of obs. for out-of-sample forecasting nwin <- 500 # window size for rolling forecasts results <- rollcast(x = returns, p = 0.975, method = 'age', nout = nout, nwin = nwin) cvgtest(results)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.