Risk and Performance Measures
Functions to compute the risk measure Expected Shortfall and the performance measure Omega based on univariate generalized hyperbolic distributions.
ESghyp(alpha, object = ghyp(), distr = c("return", "loss"), ...) ghyp.omega(L, object = ghyp(), ...)
alpha |
A vector of confidence levels. |
L |
A vector of threshold levels. |
object |
A univarite generalized hyperbolic distribution object inheriting from class |
distr |
Whether the ghyp-object specifies a return or a loss-distribution (see Details). |
... |
Arguments passed from |
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 ES_alpha := E(X | X <= F^-1(alpha))
while in case of a loss distribution it is defined on a confidence
level alpha as ES_alpha := E(X | X > F^-1(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) = C(L)/P(L).
ESghyp
gives the expected shortfall and ghyp.omega
gives the performance measure Omega.
David Luethi
Omega as a Performance Measure by Hossein Kazemi, Thomas
Schneeweis and Raj Gupta
University of Massachusetts, 2003
ghyp-class
definition, ghyp
constructors,
univariate fitting routines, fit.ghypuv
,
portfolio.optimize
for portfolio optimization
with respect to alternative risk measures,
integrate
.
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)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.