Learn R Programming

ghyp (version 1.5.9)

ghyp-risk-performance: Risk and Performance Measures

Description

Functions to compute the risk measure Expected Shortfall and the performance measure Omega based on univariate generalized hyperbolic distributions.

Usage

ESghyp(alpha, object = ghyp(), distr = c("return", "loss"), ...)

ghyp.omega(L, object = ghyp(), ...)

Arguments

alpha

A vector of confidence levels.

L

A vector of threshold levels.

object

A univarite generalized hyperbolic distribution object inheriting from class ghyp.

distr

Whether the ghyp-object specifies a return or a loss-distribution (see Details).

Arguments passed from ESghyp to qghyp and from ghyp.omega integrate.

Value

ESghyp gives the expected shortfall and ghyp.omega gives the performance measure Omega.

Details

The parameter distr specifies whether the ghyp-object describes a return or a loss-distribution. In case of a return distribution the expected-shortfall on a confidence level \(\alpha\) is defined as \(\hbox{ES}_\alpha := \hbox{E}(X | X \leq F^{-1}_X(\alpha))\) while in case of a loss distribution it is defined on a confidence level \(\alpha\) as \(\hbox{ES}_\alpha := \hbox{E}(X | X > F^{-1}_X(\alpha))\).

Omega is defined as the ratio of a European call-option price divided by a put-option price with strike price L (see References): \(\Omega(L) := \frac{C(L)}{P(L)}\).

References

Omega as a Performance Measure by Hossein Kazemi, Thomas Schneeweis and Raj Gupta University of Massachusetts, 2003

See Also

ghyp-class definition, ghyp constructors, univariate fitting routines, fit.ghypuv, portfolio.optimize for portfolio optimization with respect to alternative risk measures, integrate.

Examples

Run this code
# NOT RUN {
  data(smi.stocks)

  ## Fit a NIG model to Credit Suisse and Swiss Re log-returns
  cs.fit <- fit.NIGuv(smi.stocks[, "CS"], silent = TRUE)
  swiss.re.fit <- fit.NIGuv(smi.stocks[, "Swiss.Re"], silent = TRUE)

  ## Confidence levels for expected shortfalls
  es.levels <- c(0.001, 0.01, 0.05, 0.1)

  cs.es <- ESghyp(es.levels, cs.fit)
  swiss.re.es <- ESghyp(es.levels, swiss.re.fit)

  ## Threshold levels for Omega
  threshold.levels <- c(0, 0.01, 0.02, 0.05)

  cs.omega <- ghyp.omega(threshold.levels, cs.fit)
  swiss.re.omega <- ghyp.omega(threshold.levels, swiss.re.fit)

  par(mfrow = c(2, 1))

  barplot(rbind(CS = cs.es, Swiss.Re = swiss.re.es), beside = TRUE,
          names.arg = paste(100 * es.levels, "percent"), col = c("gray40", "gray80"),
          ylab = "Expected Shortfalls (return distribution)", xlab = "Level")

  legend("bottomright", legend = c("CS", "Swiss.Re"), fill = c("gray40", "gray80"))

  barplot(rbind(CS = cs.omega, Swiss.Re = swiss.re.omega), beside = TRUE,
          names.arg = threshold.levels, col = c("gray40", "gray80"),
          ylab = "Omega", xlab = "Threshold level")
  legend("topright", legend = c("CS", "Swiss.Re"), fill = c("gray40", "gray80"))

  ## => the higher the performance, the higher the risk (as it should be)
# }

Run the code above in your browser using DataLab