N = 10;M = 11;
z = sdpvar(N,1);d = binvar(N,1);
r = rand(N,1)
Sharpe = [0 <= z, z'*(r) == 1]
T = binvar(N,M,'full');levels = linspace(0,1,M);Sharpe = [Sharpe, implies(T,repmat(z,1,M) == sum(z)*repmat(levels,N,1))];Sharpe = [Sharpe, sum(T,2)==1]Q = randn(N);Q=Q*Q';optimize(Sharpe,z'*Q*z)value(z)/value(sum(z))