Portfolio Optimization with the Omega Ratio
Introduction
Traditional investment performance benchmarks, like the Sharpe Ratio, approximate the returns
distribution with mean and standard deviation. This, however, assumes the distribution is normal. Manymodern investments vehicles, like hedge funds, display fat tails, and skew and kurtosis in the returns
distribution. Hence, they cannot be adequately benchmarked with traditional approaches.
One solution, proposed by Shadwick and Keating in 2002 is the Omega Ratio. This divides the returns
distribution into two halves – the area below a target return, and the above a target return. The OmegaRatio is simply the former divided by the latter. A higher value is better.
For a set of discrete returns, the Omega Ratio is given by
W L =E max R KL, 0
E max L KR, 0

where L is a target return and R is a vector of returns.
This application finds the asset weights that maximize the Omega Ratio of a portfolio of ten investments,
given their simulated monthly returns and a target return.
This is a non-convex problem, and requires global optimizers for a rigorous solution. However, atransformation of the variables (only valid for Omega Ratios of over 1) converts the optimization into alinear program.
This application implements both approaches, the former using Maple's Global Optimization Toolbox, andthe latter using Maple's linear programming features. For the data set provided in this application, bothapproaches give comparible results.

Returns Data and Minimum Acceptable Return> restart :Monthly hedge fund returns

>
12

3

4

56

7

8

1

1.283

0.865

0.654

0.709

2.023

0.813

2.234

-0.311

20.429

0.433

0.601

-0.549

0.669

0.22

-0.291

0.367

3

2.657

2.238

1.592

1.26

3.115

0.328

2.881

3.684

4

1.731

1.4

1.184

1.717

2.112

0.508

1.438

2.818

5

1.899

1.306

-0.322-0.015

2.758

1.304

1.732

3.393

Number of funds> N d LinearAlgebra ColumnDimension data
N := 10
Number of returns for each fund> S d LinearAlgebra RowDimension data
S := 36
Target Return> L d 0.1 :Omega Ratio> OmegaRatio dproc L, returns, weights
local weightedReturns, above, below, N, S :N d LinearAlgebra ColumnDimension returns :S d LinearAlgebra RowDimension returns :weightedReturns d seq add returns i, j $weights j , j = 1 ..N , i = 1 ..S:

below d select x/evalb x ! L , weightedReturns :above d select x/evalb x O L , weightedReturns :add a K L, a in above
add L K a, a in below
end proc:
return"Strawman" portfolio of equal weights at the target return> OmegaRatio L, data, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1
4.00319251000761

Global Optimization> resultsGO := GlobalOptimization GlobalSolve'OmegaRatio' L, data, seq wi, i = 1 ..10

i = 1 ..N = 1 , seq wi = 0 ..1, i = 1 ..N , maximize :, add wi,Optimized Omega Ratio> resultsGO1
6.97971552601530920
Optimized investment weights> weightsGO d resultsGO2weightsGO := w1 = 0., w2 = 0., w3 = 0., w4 = 0.409773987791656, w5 = 0., w6 = 0.219620283939146, w7= 0.333220772149511, w8 = 0., w9 = 0., w10 = 0.0373849561196863

Linear Program
The transformation of the optimization problem into a linear program is described here
> eq1 d seq add datai, j wj, j = 1 ..N Kui Cdi KL t = 0, i = 1 ..S :> eq2 d add wj, j = 1 ..N = t :> eq3 d add> obj d add> cons d seq

diSui
S, i = 1 ..S = 1 :, i = 1 ..S :ui R 0, di R 0, i = 1 ..S , seq

wj R 0, j = 1 ..N :> resultsLP d Optimization LPSolve obj, eq1, eq2, eq3, cons , maximize, assume = nonnegative :Optimized Omega Ratio> resultsLP1
6.97971754550025
Optimized investment weights> assign select has, resultsLP2, t
rhs i, select has, resultsLP2, wt
weightsLP := w1 = 0., w2 = 0., w3 = 0., w4 = 0.409790222161672, w5 = 0., w6 = 0.219617381328148, w7> weightsLP := map i/lhs i == 0.333211183439266, w8 = 0., w9 = 0., w10 = 0.0373812133486924