Message-ID: <CAJ3qPLA9k6_niZv=4Yk+UQ5nUR9pxsRO7o=eMW78yG9Zn-jsAA@mail.gmail.com>
Date: 2011-09-16T14:26:25Z
From: Alex Bird
Subject: probable error in Omega (PerformanceAnalytics) calculation
In-Reply-To: <1316180959.21435.32.camel@brian-rcg>
I shouldn't use last() + cumsum() but just sum() instead to calculate
the areas over/under CDF for the numerator/denominator.
The difference actually in the areas over which omega is calculated.
The original version calculates it like this (the nominator is taken
over (-Inf,L))
sum(1-f(xcdf$x[xcdf$x<=L]))/sum(f(xcdf$x[xcdf$x<=L]))
while the modified one do it like this (the nominator is taken over (L,+Inf))
sum(1-f(xcdf$x[xcdf$x>L]))/sum(f(xcdf$x[xcdf$x<=L]))
This is all the difference.
Did you find any superior performance measure to the Omega? I am
actually looking for a ways to incorporate all the moments in an asset
selection problem because I am working with far-from-normal
distributions.
Thanks!
Kind regards,
Alex
2011/9/16 Brian G. Peterson <brian at braverock.com>:
> 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
>
>
>