Learn R Programming

PerformanceAnalytics (version 2.0.4)

Omega: calculate Omega for a return series

Description

Keating and Shadwick (2002) proposed Omega (referred to as Gamma in their original paper) as a way to capture all of the higher moments of the returns distribution.

Usage

Omega(
  R,
  L = 0,
  method = c("simple", "interp", "binomial", "blackscholes"),
  output = c("point", "full"),
  Rf = 0,
  SE = FALSE,
  SE.control = NULL,
  ...
)

Arguments

R

an xts, vector, matrix, data frame, timeSeries or zoo object of asset returns

L

L is the loss threshold that can be specified as zero, return from a benchmark index, or an absolute rate of return - any specified level

method

one of: simple, interp, binomial, blackscholes

output

one of: point (in time), or full (distribution of Omega)

Rf

risk free rate, as a single number

SE

TRUE/FALSE whether to ouput the standard errors of the estimates of the risk measures, default FALSE.

SE.control

Control parameters for the computation of standard errors. Should be done using the RPESE.control function.

any other passthru parameters

Details

Mathematically, Omega is: integral[L to b](1 - F(r))dr / integral[a to L](F(r))dr

where the cumulative distribution F is defined on the interval (a,b). L is the loss threshold that can be specified as zero, return from a benchmark index, or an absolute rate of return - any specified level. When comparing alternatives using Omega, L should be common.

Input data can be transformed prior to calculation, which may be useful for introducing risk aversion.

This function returns a vector of Omega, useful for plotting. The steeper, the less risky. Above it's mean, a steeply sloped Omega also implies a very limited potential for further gain.

Omega has a value of 1 at the mean of the distribution.

Omega is sub-additive. The ratio is dimensionless.

Kazemi, Schneeweis, and Gupta (2003), in "Omega as a Performance Measure" show that Omega can be written as: Omega(L) = C(L)/P(L) where C(L) is essentially the price of a European call option written on the investment and P(L) is essentially the price of a European put option written on the investment. The maturity for both options is one period (e.g., one month) and L is the strike price of both options.

The numerator and the denominator can be expressed as: exp(-Rf=0) * E[max(x - L, 0)] exp(-Rf=0) * E[max(L - x, 0)] with exp(-Rf=0) calculating the present values of the two, where rf is the per-period riskless rate.

The first three methods implemented here focus on that observation. The first method takes the simplification described above. The second uses the Black-Scholes option pricing as implemented in fOptions. The third uses the binomial pricing model from fOptions. The second and third methods are not implemented here.

The fourth method, "interp", creates a linear interpolation of the cdf of returns, calculates Omega as a vector, and finally interpolates a function for Omega as a function of L. This method requires library Hmisc, which can be found on CRAN.

References

Keating, J. and Shadwick, W.F. The Omega Function. working paper. Finance Development Center, London. 2002. Kazemi, Schneeweis, and Gupta. Omega as a Performance Measure. 2003.

See Also

Ecdf

Examples

Run this code
# NOT RUN {
    data(edhec)
    Omega(edhec)
    Omega(edhec[,13],method="interp",output="point")
    Omega(edhec[,13],method="interp",output="full")

# }

Run the code above in your browser using DataLab