尝试将2个变量的函数最小化,以实现稳健的投资组合优化。如何用fmincon做到这一点?

时间:2016-04-07 10:07:15

标签: matlab optimization robust

我目前正参与一个小组项目,我们必须进行投资组合选择和优化。这里引用的论文如下:(具体见第5和6页,等式7-10)

http://faculty.london.edu/avmiguel/DeMiguel-Nogales-OR.pdf

我们无法使用M-Portfolios创建优化问题,如下所示

min(wrt w,m)(1 / T)* sum_(rho)*(w' * r_t - m)(抱歉,我无法使格式化工作)

s.t。 w' e = 1(只是说所有权重加1的条件)

到目前为止,这是我们的尝试:

function optPortfolio =  portfoliofminconM(returns,theta)

% Compute the inputs of the mean-variance model
mu = mean(returns)';
sigma = cov(returns);

 % Inputs for the fmincon function
T = 120;
n = length(mu);
w = theta(1:n);
m = theta((n+1):(2*n));
c = 0.01*ones(1,n);
Aeq = ones(1,(2*n));
beq = 1;
lb = zeros(2,n);
ub = ones(2,n);
x0 = ones(n,2) / n; % Start with the equally-weighted portfolio
options = optimset('Algorithm', 'interior-point', ...
    'MaxIter', 1E10, 'MaxFunEvals', 1E10);

% Nested function which is used as the objective function
function objValue = objfunction(w,m)
    cRp = (w'*(returns - (ones(T,1)*m'))';
    objValue = 0;
    for i = 1:T
        if abs(cRp(i)) <= c;
            objValue = objValue + (((cRp(i))^2)/2);
        else
            objValue = objValue + (c*(abs(cRp(i))-(c/2)));
        end
    end

问题始于我们对theta被用作w和m的向量的定义。我们不知道如何在目标函数中正确使用fmincon和2个变量。此外,目标函数的值取决于另一个值(如文中所示),这需要在120个月的滚动时间窗口内完成,总共264个月。(因此for循环和的if-else)

如果需要更多信息,我很乐意提供!

如果您还可以提供一个处理类似问题的示例,请与我们联系。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

使用fmincon最小化两个标量函数的方法是将目标函数编写为单个二维向量的函数。例如,您可以将unSelectedImage写为f(x,y) = x.^2 + 2*x*y + y.^2

更一般地说,您可以将两个向量的函数编写为单个大向量的函数。在你的情况下,你可以重写你的objfunction或快速破解:

f(x) = x(1)^2 + 2*x(1)*x(2) + x(2)^2