Title: | Exact Finite-Sample Value-at-Risk Back-Testing |
Version: | 0.1.3 |
Language: | en-US |
Maintainer: | Yujian Chen <yjc4996@gmail.com> |
Description: | Provides fast dynamic-programming algorithms in 'C++'/'Rcpp' (with pure 'R' fallbacks) for the exact finite-sample distributions and p-values of Christoffersen (1998) independence (IND) and conditional-coverage (CC) VaR backtests. For completeness, it also provides the exact unconditional-coverage (UC) test following Kupiec (1995) via a closed-form binomial enumeration. See Christoffersen (1998) <doi:10.2307/2527341> and Kupiec (1995) <doi:10.3905/jod.1995.407942>. |
License: | GPL (≥ 3) |
Depends: | R (≥ 3.5.0) |
Imports: | Rcpp, stats |
LinkingTo: | Rcpp |
Suggests: | bench, dplyr, tidyr, purrr, ggplot2, xts, quantmod, knitr, rmarkdown, testthat (≥ 3.0.0) |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
URL: | https://github.com/YujianCHEN219/ExactVaRTest |
BugReports: | https://github.com/YujianCHEN219/ExactVaRTest/issues |
Acknowledgements: | I greatly appreciate Christian Francq, Christophe Hurlin, and Jean-Michel Zakoian's guidance and support. In particular, Christian Francq generously shared the initial idea; without his help, this package would not exist. |
Config/testthat/edition: | 3 |
VignetteBuilder: | knitr |
NeedsCompilation: | yes |
Packaged: | 2025-08-18 19:43:47 UTC; chenyujian |
Author: | Yujian Chen [aut, cre] |
Repository: | CRAN |
Date/Publication: | 2025-08-22 17:20:02 UTC |
ExactVaRTest – Exact Finite-Sample VaR Back-Testing
Description
Provides fast dynamic‑programming algorithms (C++/Rcpp) – with pure‑R fall‑backs – for the exact finite‑sample distributions and p‑values of Christoffersen’s (1998) VaR back‑tests: Independence (IND) and Conditional Coverage (CC) tests, and the Unconditional Coverage (UC) test via closed‑form binomial enumeration.
Author(s)
Maintainer: Yujian Chen yjc4996@gmail.com
See Also
Useful links:
Report bugs at https://github.com/YujianCHEN219/ExactVaRTest/issues
Exact UC/IND/CC back‑tests in one call
Description
Exact UC/IND/CC back‑tests in one call
Usage
backtest_all(x, alpha = 0.05, sig = 0.05, prune_threshold = 1e-15)
Arguments
x |
0/1 exception series. |
alpha |
Exception probability. |
sig |
Significance level (default |
prune_threshold |
Passed to the dynamic programming engine. |
Value
An object of class "ExactVaRBacktestAll"
(a named list) with components:
uc
, ind
, cc
(each a list with stat
, pval
, reject
),
and scalars sig
(significance level), alpha
(model exception probability),
n
(sample size).
Examples
set.seed(1)
x <- rbinom(300, 1, 0.02)
backtest_all(x, alpha = 0.02)
Exact finite‑sample back‑test for a VaR exception series
Description
Exact finite‑sample back‑test for a VaR exception series
Usage
backtest_lr(
x,
alpha = 0.05,
type = c("uc", "ind", "cc"),
sig = 0.05,
prune_threshold = 1e-15
)
Arguments
x |
0/1 exception series. |
alpha |
Exception probability. |
type |
|
sig |
Significance level (default |
prune_threshold |
Passed to the dynamic‑programming engine. |
Value
An object of class "ExactVaRBacktest"
(a named list) with components:
stat
(numeric LR statistic),
pval
(numeric exact p
-value in [0,1]
),
reject
(logical; TRUE
if p < sig),
type
(character; one of "uc"
, "ind"
, "cc"
),
alpha
(numeric model exception probability),
sig
(numeric significance level),
n
(integer sample size).
Examples
set.seed(123)
x <- rbinom(250, 1, 0.01)
backtest_lr(x, alpha = 0.01, type = "uc")
Exact LR_cc (and LR_uc) distribution (auto‑select engine)
Description
Returns the finite‑sample distribution of Christoffersen’s conditional‑coverage
statistic LR_{\mathrm{cc}}
. The returned list also includes the matching
unconditional‑coverage distribution LR_{\mathrm{uc}}
, produced by the same
dynamic‑programming run.
Usage
lr_cc_dist(n, alpha = 0.05, prune_threshold = 1e-15)
Arguments
n |
Integer sample size ( |
alpha |
Exception probability |
prune_threshold |
Probability below which states are pruned by the dynamic‑programming recursion. |
Value
A named list with elements LR_cc
, prob_cc
, LR_uc
,
prob_uc
. The pairs (LR_cc, prob_cc)
and (LR_uc, prob_uc)
have equal lengths; each probability vector is in [0,1]
and sums to 1.
Examples
lr_cc_dist(8, 0.05)
Christoffersen LR_cc statistic
Description
Christoffersen LR_cc statistic
Usage
lr_cc_stat(x, alpha = 0.05)
Arguments
x |
0/1 exception series. |
alpha |
Exception probability. |
Value
Numeric LR_cc statistic.
Exact LR_ind distribution (auto‑select engine)
Description
Returns the finite‑sample distribution of Christoffersen’s independence
statistic LR_{\mathrm{ind}}
.
Usage
lr_ind_dist(n, alpha = 0.05, prune_threshold = 1e-15)
Arguments
n |
Integer sample size ( |
alpha |
Exception probability |
prune_threshold |
Probability below which states are pruned by the dynamic‑programming recursion. |
Value
A named list with elements LR
and prob
of equal length,
where LR
is the support of the LR statistic and prob
are the
corresponding probabilities in [0,1]
that sum to 1.
Examples
lr_ind_dist(8, 0.05)
Christoffersen LR_ind statistic
Description
Christoffersen LR_ind statistic
Usage
lr_ind_stat(x, alpha = 0.05)
Arguments
x |
0/1 exception series. |
alpha |
Exception probability. |
Value
Numeric LR_ind statistic.
Exact LR_uc distribution (closed‑form binomial)
Description
Exact LR_uc distribution (closed‑form binomial)
Usage
lr_uc_dist(n, alpha = 0.05)
Arguments
n |
Integer sample size ( |
alpha |
Exception probability |
Value
A named list with elements LR
and prob
of equal length,
where LR
is the support of the LR statistic and prob
are the
corresponding probabilities in [0,1]
that sum to 1.
Examples
lr_uc_dist(8, 0.01)
Christoffersen LR_uc statistic
Description
Christoffersen LR_uc statistic
Usage
lr_uc_stat(x, alpha = 0.05)
Arguments
x |
0/1 exception series. |
alpha |
Exception probability. |
Value
Numeric LR_uc statistic.
Print method for ExactVaRBacktest
Description
Print method for ExactVaRBacktest
Usage
## S3 method for class 'ExactVaRBacktest'
print(x, digits = max(3L, getOption("digits") - 3L), ...)
Arguments
x |
An object of class 'ExactVaRBacktest'. |
digits |
Number of digits to print. |
... |
Further arguments passed to or from other methods (ignored). |
Details
Prints the test name, sample size n
, model alpha, significance level,
LR statistic, exact p-value, and the decision at the specified level.
Value
The input object x
, returned invisibly (class ExactVaRBacktest
).
Print method for ExactVaRBacktestAll
Description
Print method for ExactVaRBacktestAll
Usage
## S3 method for class 'ExactVaRBacktestAll'
print(x, digits = max(3L, getOption("digits") - 3L), ...)
Arguments
x |
An object of class 'ExactVaRBacktestAll'. |
digits |
Number of digits to print. |
... |
Further arguments passed to or from other methods (ignored). |
Details
Prints a header with sample size n
, model alpha and significance level,
followed by per-test blocks for UC, IND, and CC: LR statistic, exact p-value,
and the decision at the specified level.
Value
The input object x
, returned invisibly (class ExactVaRBacktestAll
).
Exact p-value for LR_cc
Description
Exact p-value for LR_cc
Usage
pval_lr_cc(lr_obs, n, alpha = 0.05, prune_threshold = 1e-15)
Arguments
lr_obs |
Observed LR_cc statistic. |
n |
Sample size. |
alpha |
Exception probability. |
prune_threshold |
State-pruning threshold for DP engine. |
Value
Numeric exact p
-value in [0,1]
; may be NA_real_
if the
finite-sample distribution is unavailable.
Exact p-value for LR_ind
Description
Exact p-value for LR_ind
Usage
pval_lr_ind(lr_obs, n, alpha = 0.05, prune_threshold = 1e-15)
Arguments
lr_obs |
Observed LR_ind statistic. |
n |
Sample size. |
alpha |
Exception probability. |
prune_threshold |
State-pruning threshold for DP engine. |
Value
Numeric exact p
-value in [0,1]
; may be NA_real_
if the
finite-sample distribution is unavailable.
Exact p-value for LR_uc
Description
Exact p-value for LR_uc
Usage
pval_lr_uc(lr_obs, n, alpha = 0.05)
Arguments
lr_obs |
Observed LR_uc statistic. |
n |
Sample size. |
alpha |
Exception probability. |
Value
Numeric exact p
-value in [0,1]
; may be NA_real_
if the
finite-sample distribution is unavailable.