Learn R Programming

qrmtools (version 0.0-15)

VaR_ES_bounds_analytical: ``Analytical'' Best and Worst Value-at-Risk for Given Marginals

Description

Compute the best and worst Value-at-Risk (VaR) for given marginal distributions with an ``analytical'' method.

Usage

## ``Analytical'' methods
crude_VaR_bounds(level, qF, d = NULL, ...)
VaR_bounds_hom(level, d, method = c("Wang", "Wang.Par", "dual"),
               interval = NULL, tol = NULL, ...)
dual_bound(s, d, pF, tol = .Machine$double.eps^0.25, ...)

Value

crude_VaR_bounds() returns crude lower and upper bounds for VaR at confidence level \(\alpha\) for any

\(d\)-dimensional model with marginal quantile functions specified by qF.

VaR_bounds_hom() returns the best and worst VaR at confidence level \(\alpha\) for \(d\) risks with equal distribution function specified by the ellipsis ....

dual_bound() returns the value of the dual bound \(D(s)\) as given in Embrechts, Puccetti, Rüschendorf

(2013, Eq. (12)).

Arguments

level

confidence level \(\alpha\) for VaR and ES (e.g., 0.99).

qF

d-list containing the marginal quantile functions. In the homogeneous case, qF can also be a single function.

d

dimension (number of risk factors; \(\ge 2\)). For crude_VaR_bounds(), d only needs to be given in the homogeneous case in which qF is a function.

method

character string. method = "Wang" and method = "Wang.Par" apply the approach of McNeil et al. (2015, Proposition 8.32) for computing best (i.e., smallest) and worst (i.e., largest) VaR. The latter method assumes Pareto margins and thus does not require numerical integration. method = "dual" applies the dual bound approach as in Embrechts et al. (2013, Proposition 4) for computing worst VaR (no value for the best VaR can be obtained with this approach and thus NA is returned for the best VaR).

interval

initial interval (a numeric(2)) for computing worst VaR. If not provided, these are the defaults chosen:

method = "Wang":

initial interval is \([0,(1-\alpha)/d]\).

method = "Wang.Par":

initial interval is \([c_l,c_u]\), where \(c_l\) and \(c_u\) are chosen as in Hofert et al. (2015).

method = "dual":

in this case, no good defaults are known. Note that the lower endpoint of the initial interval has to be sufficiently large in order for the the inner root-finding algorithm to find a root; see Details.

tol

tolerance for uniroot() for computing worst VaR. This defaults (for tol = NULL) to \(2.2204*10^{-16}\) for method = "Wang" or method = "Wang.Par" (where a smaller tolerance is crucial) and to uniroot()'s default .Machine$double.eps^0.25 otherwise. Note that for method = "dual", tol is used for both the outer and the inner root-finding procedure.

s

dual bound evaluation point.

pF

marginal loss distribution function (homogeneous case only).

...

crude_VaR_bounds():

ellipsis argument passed to (all provided) quantile functions.

VaR_bounds_hom():

case method = "Wang" requires the quantile function qF() to be provided and additional arguments passed via the ellipsis argument are passed on to the underlying integrate(). For method = "Wang.Par" the ellipsis argument must contain the parameter shape (the shape parameter \(\theta>0\) of the Pareto distribution). For method = "dual", the ellipsis argument must contain the distribution function pF() and the initial interval interval for the outer root finding procedure (not for d = 2); additional arguments are passed on to the underlying integrate() for computing the dual bound \(D(s)\).

dual_bound():

ellipsis argument is passed to the underlying integrate().

Author

Marius Hofert

Details

For d = 2, VaR_bounds_hom() uses the method of Embrechts et al. (2013, Proposition 2). For method = "Wang" and method = "Wang.Par" the method presented in McNeil et al. (2015, Prop. 8.32) is implemented; this goes back to Embrechts et al. (2014, Prop. 3.1; note that the published version of this paper contains typos for both bounds). This requires one uniroot() and, for the generic method = "Wang", one integrate(). The critical part for the generic method = "Wang" is the lower endpoint of the initial interval for uniroot(). If the (marginal) distribution function has finite first moment, this can be taken as 0. However, if it has infinite first moment, the lower endpoint has to be positive (but must lie below the unknown root). Note that the upper endpoint \((1-\alpha)/d\) also happens to be a root and thus one needs a proper initional interval containing the root and being stricticly contained in \((0,(1-\alpha)/d\). In the case of Pareto margins, Hofert et al. (2015) have derived such an initial (which is used by method = "Wang.Par"). Also note that the chosen smaller default tolerances for uniroot() in case of method = "Wang" and method = "Wang.Par" are crucial for obtaining reliable VaR values; see Hofert et al. (2015).

For method = "dual" for computing worst VaR, the method presented of Embrechts et al. (2013, Proposition 4) is implemented. This requires two (nested) uniroot(), and an integrate(). For the inner root-finding procedure to find a root, the lower endpoint of the provided initial interval has to be “sufficiently large”.

Note that these approaches for computing the VaR bounds in the homogeneous case are numerically non-trivial; see the source code and vignette("VaR_bounds", package = "qrmtools") for more details. As a rule of thumb, use method = "Wang" if you have to (i.e., if the margins are not Pareto) and method = "Wang.Par" if you can (i.e., if the margins are Pareto). It is not recommended to use (the numerically even more challenging) method = "dual".

References

Embrechts, P., Puccetti, G., Rüschendorf, L., Wang, R. and Beleraj, A. (2014). An Academic Response to Basel 3.5. Risks 2(1), 25--48.

Embrechts, P., Puccetti, G. and Rüschendorf, L. (2013). Model uncertainty and VaR aggregation. Journal of Banking & Finance 37, 2750--2764.

McNeil, A. J., Frey, R. and Embrechts, P. (2015). Quantitative Risk Management: Concepts, Techniques, Tools. Princeton University Press.

Hofert, M., Memartoluie, A., Saunders, D. and Wirjanto, T. (2017). Improved Algorithms for Computing Worst Value-at-Risk. Statistics & Risk Modeling or, for an earlier version, https://arxiv.org/abs/1505.02281.

See Also

RA(), ARA(), ABRA() for empirical solutions in the inhomogeneous case.

vignette("VaR_bounds", package = "qrmtools") for more example calls, numerical challenges encoutered and a comparison of the different methods for computing the worst (i.e., largest) Value-at-Risk.

Examples

Run this code
## See ?rearrange

Run the code above in your browser using DataLab