Compute the best and worst Value-at-Risk (VaR) for given marginal distributions with an ``analytical'' method.
## ``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, ...)
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)).
confidence level \(\alpha\) for VaR and ES (e.g., 0.99).
d
-list containing the marginal quantile functions.
In the homogeneous case, qF
can also be a single function.
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
.
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).
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.
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.
dual bound evaluation point.
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()
.
Marius Hofert
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"
.
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.
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.