using Convex, ECOS # generate problem data srand(0) n = 50 R = 5*randn(n) A = randn(n, 5) Q = A * A' + diagm(rand(n)) R_target = 5 x_lower = 0 x_upper = 1 x = Variable(length(R)) p = minimize(quadform(x, Q), x' * R >= R_target, sum(x) == 1, x_lower <= x, x <= x_upper ) solve!(p, ECOSSolver(verbose = false)) # the minimal risk p.optval sum(x.value.>1e-4) plot(x=1:n,y=x.value,Geom.bar,Guide.xlabel("Asset Index"),Guide.ylabel("Fraction of Portfolio"))