VaR_ES_bounds_analytical | R Documentation |
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, ...)
level |
confidence level |
qF |
|
d |
dimension (number of risk factors; |
method |
|
interval |
initial interval (a
|
tol |
tolerance for
|
s |
dual bound evaluation point. |
pF |
marginal loss distribution function (homogeneous case only). |
... |
|
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"
.
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)).
Marius Hofert
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.
## See ?rearrange
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.