ghyp-distribution {ghyp}R Documentation

The Generalized Hyperbolic Distribution

Description

Density, distribution function, quantile function, expected shortfall and random generation for the univariate and multivariate generalized hyperbolic distribution and its special cases.

Usage

dghyp(x, object = ghyp(), logvalue = F)

pghyp(q, object = ghyp(), n.sim = 10000, subdivisions = 200, 
      rel.tol = .Machine$double.eps^0.5, abs.tol = rel.tol)

qghyp(p, object = ghyp(), method = c("integration", "splines"), 
      spline.points = 200, subdivisions = 200, 
      root.tol = .Machine$double.eps^0.5, 
      rel.tol = root.tol^1.5, abs.tol = rel.tol)

rghyp(n, object = ghyp())

ESghyp(p, object = ghyp(), ...)

Arguments

p A vector of probabilities.
x A vector, matrix or data.frame of quantiles.
q A vector, matrix or data.frame of quantiles.
n Number of observations.
object An object inheriting from class ghyp.
logvalue If TRUE the logarithm of the density will be returned.
n.sim The number of simulations when computing pghyp of a multivariate generalized hyperbolic distribution.
subdivisions The number of subdivisions passed to integrate when computing the distribution function pghyp of a univariate generalized hyperbolic distribution.
rel.tol The relative accuracy requested from integrate.
abs.tol The absolute accuracy requested from integrate.
method The method how quantiles are computed (see Details) .
spline.points The number of support points when computing the quantiles with the method “splines” instead of “integration”.
root.tol The tolerance of uniroot.
... Arguments passed from ESghyp to qghyp.

Details

qghyp and ESghyp only work for univariate generalized hyperbolic distributions.

pghyp just integrates the density in the univariate case. The multivariate cumulative distribution is computed by means of monte carlo simulation.

qghyp computes the quantiles either by using the “integration” method where the root of the distribution function is solved or via “splines” which interpolates the distribution function and solves it with uniroot afterwards. The “integration” method is recommended when only few quantiles are required. If more than approximately 20 quantiles are needed to be calculated the “splines” method becomes faster. The accuracy can be controlled with an adequate setting of the parameters rel.tol, abs.tol, root.tol and spline.points.

rghyp uses the random generator for generalized inverse gaussian distributed random variates from the S-Plus library QRMlib (see http://www.math.ethz.ch/~mcneil/book/QRMlib.html).

Value

dghyp gives the density,
pghyp gives the distribution function,
qghyp gives the quantile function,
ESghyp gives the expected shortfall and
rghyp generates random deviates.

Note

Objects generated with hyp, NIG, VG and student.t have to use Xghyp as well. E.g. dNIG(0, NIG()) does not work but dghyp(0, NIG()).

When the skewness becomes very large the functions using qghyp may fail. The functions ESghyp, qqghyp, pairs and portfolio.optimize are based on qghyp.

Author(s)

David Lüthi

References

Quantitative Risk Management: Concepts, Techniques and Tools by Alexander J. McNeil, Rüdiger Frey and Paul Embrechts
Princeton Press, 2005

See Also

ghyp-class definition, ghyp constructors, fitting routines fit.ghypuv and fit.ghypmv, integrate, spline.

Examples

  ## Univariate generalized hyperbolic distribution
  univariate.ghyp <- ghyp()
  
  par(mfrow=c(5, 1))
  
  quantiles <- seq(-4, 4, length = 500)
  plot(quantiles, dghyp(quantiles, univariate.ghyp))
  plot(quantiles, pghyp(quantiles, univariate.ghyp))
  
  probabilities <- seq(1e-4, 1-1e-4, length = 500)
  plot(probabilities, qghyp(probabilities, univariate.ghyp, method = "splines"))
  plot(probabilities, ESghyp(probabilities, univariate.ghyp, method = "splines"))
  
  hist(rghyp(n=10000,univariate.ghyp),nclass=100)
  
  ## Mutivariate generalized hyperbolic distribution
  multivariate.ghyp <- ghyp(sigma=var(matrix(rnorm(10),ncol=2)),mu=1:2,gamma=-(2:1))
  
  par(mfrow=c(2, 1))
  
  quantiles <- outer(seq(-4, 4, length = 50), c(1, 1))
  plot(quantiles[, 1], dghyp(quantiles, multivariate.ghyp))
  plot(quantiles[, 1], pghyp(quantiles, multivariate.ghyp, n.sim = 1000))
  
  rghyp(n = 10, multivariate.ghyp)

[Package ghyp version 1.0.0 Index]