Just adding to the answers above, untangling the notation bit to put it in standard robust optimization format.
You have $r_p = \alpha + rU $ where the uncertainty $U$ is known to satisfy $U^TU \leq 1$ and your radius happen to be parametrized as $\kappa \left|\alpha\right|$.
After performing the minimization over the uncertainty, i.e, eliminating the for-all operator in the uncertain constraint, it boils down to a standard quadratic problem with a convex norm-constraint. Although fmincon most likely will work, it is not really the best tool for the task, since this is a very particular problem class for which there are dedicated extremly efficient solvers.
It could also be interesting to know that the problem easily generalizes to other norm-balls on the uncertainty.
For fun, here is some experimental code in the MATLAB Toolbox YALMIP
To begin with, solve the problem as manually derived above. If you have an efficient second-order cone programming solver installed, it will use that. Otherwise, it will probably use fmincon
n = 10;
alpha = randn(10,1);
S = randn(10);S = S'*S;
kappa = 0.01;
r0 = .01;
w = sdpvar(n,1);
Objective = w'*S*w;
Budget = [w >= 0, sum(w)==1];
Robust = [w'*alpha - kappa*norm(alpha)*norm(w) >= r0];
solvesdp([Budget,Robust], Objective)
double(w)
Actually, YALMIP has a built-in framework for deriving these kind of robust models automagically. Hence, the following problem derives the result in the paper and solves the problem
w = sdpvar(n,1);
U = sdpvar(n,1);
rp = alpha + kappa*norm(alpha)*U;
Objective = w'*S*w;
Budget = [w >= 0, sum(w)==1];
Uncertainty = [rp'*w >= r0, uncertain(U), U'*U <= 1];
solvesdp([Budget,Uncertainty], Objective)
This allows us to try alternative models, for instance a box-constrained uncertainty (this leads to a simple quadratic program, so fmincon is absolutely not the way to go)
w = sdpvar(n,1);
U = sdpvar(n,1);
rp = alpha + kappa*norm(alpha)*U;
Objective = w'*S*w;
Budget = [w >= 0, sum(w)==1];
Uncertainty = [rp'*w >= r0, uncertain(U), -1 <= U <= 1];
solvesdp([Budget,Uncertainty], Objective)
If you have an efficient mixed-integer SOCP solver installed (such as gurobi, cplex or mosek), you can for instance add combinatorial structures, such as a cardinality constraint on your positions
solvesdp([Budget,Uncertainty,nnz(w)<=3], Objective)
So, by looking at the problem a bit broader, I hope you realize there is a lot more fun that can be done, than simply throwing a general purpose nonlinear solver at a particular problem definition.
fmincon
? Based on the structure of the problem - which is not yet clear from the information you give - there could be better solvers available from Matlab. $\endgroup$