If I run the below code which finds the optimal portfolio weights given a portfolio
target return G then I get a nice solution:
restart:
with(Optimization):
with(LinearAlgebra):
n := 4:
C := 10000:
G := .1*C:
X := Vector[column]([seq(x[i], i = 1 .. n)]):
ER := Vector[column]([0.5e-1, -.20, .15, .30]):
Q := Matrix([[0.8e-1, -0.5e-1, -0.5e-1, -0.5e-1], [-0.5e-1, .16, -0.2e-1, -0.2e-1], [-0.5e-1, -0.2e-1, .35, 0.6e-1], [-0.5e-1, -0.2e-1, 0.6e-1, .35]]):