On Fri, 2011-09-16 at 16:54 +0400, Alex Bird wrote:
Bonjour,
? I am not sure but it seems like there's an error in the calculation
of Omega(..., method='interp') by PerformanceAnalytics package.
? It calculates Omega as
? ? ...
? ? omegafull = cumsum(1 - f(xcdf$x))/cumsum(f(xcdf$x))
? ? g <- approxfun(xcdf$x,omegafull,method="linear",ties="ordered")
? ? omega = g(L)
? ? ...
? while in the original(?) paper of Keating which can be found here
(http://faculty.fuqua.duke.edu/~charvey/Teaching/BA453_2006/Keating_The_omega_function.pdf)
the Omega is defined slightly different. To be more precisely the
numerator and denominator should be taken over (L,b) and (a,L)
respectively while in the current realisition they are taken over the
same region, i.e. over (a,L) and (a,L) respectively. So in my opinion
the omega should be calculated like this (but maybe using approxfun
somehow)
? ? ...
? ? omega = last(cumsum(1-f(xcdf$x[xcdf$x>L&xcdf$x<b])))/last(cumsum(f(xcdf$x[xcdf$x<=L&xcdf$x>a])))
? ? ...
? I have PerformanceAnalytics_1.0.3.3 installed.
Thanks!
Alex,
Thanks for your input.
There are many different definitions of Omega, as Keating and others
have revised their views on how it sould be calculated.
Properly formatted patches *always* welcome, of course.
Won't your suggested modification only uses the end of the cumsum, and
not the entire distribution?
I'll confess that I don't find Omega very useful, and haven't thought
much about that function since we wrote it. ?I haven't read the original
Keating paper in years.
--
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock