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.
Omega(R, L = 0, method = c("simple", "interp", "binomial", "blackscholes"), output = c("point", "full"), Rf = 0, ...)
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 |
… | any other passthru parameters |
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.
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.
Ecdf
data(edhec) Omega(edhec)#> Convertible Arbitrage CTA Global Distressed Securities #> Omega (L = 0%) 2.602138 1.936841 3.230443 #> Emerging Markets Equity Market Neutral Event Driven #> Omega (L = 0%) 1.765435 6.213714 2.999655 #> Fixed Income Arbitrage Global Macro Long/Short Equity #> Omega (L = 0%) 2.585943 3.516616 2.438064 #> Merger Arbitrage Relative Value Short Selling Funds of Funds #> Omega (L = 0%) 4.595886 3.815368 1.228785 2.460153Omega(edhec[,13],method="interp",output="point")#> Error: requireNamespace("Hmisc", quietly = TRUE) is not TRUEOmega(edhec[,13],method="interp",output="full")#> Error: requireNamespace("Hmisc", quietly = TRUE) is not TRUE