``Analytical'' Best and Worst Value-at-Risk for Given Marginals
``Analytical'' Best and Worst Value-at-Risk for Given Marginals
Compute the best and worst Value-at-Risk (VaR) for given marginal distributions with an ``analytical'' method.
## ``Analytical'' methodscrude_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,...)
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; >=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 [cl,cu], where cl and cu
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).
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().
Returns
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,
(2013, Eq. (12)).
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 (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".
Author(s)
Marius Hofert
References
Embrechts, P., Puccetti, G., , L., Wang, R. and Beleraj, A. (2014). An Academic Response to Basel 3.5. Risks 2 (1), 25--48.
Embrechts, P., Puccetti, G. and , 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
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.