Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 尝试最小化函数wrt 2变量,以实现稳健的投资组合优化。如何使用fmincon进行此操作?_Matlab_Optimization_Robust - Fatal编程技术网

Matlab 尝试最小化函数wrt 2变量,以实现稳健的投资组合优化。如何使用fmincon进行此操作?

Matlab 尝试最小化函数wrt 2变量,以实现稳健的投资组合优化。如何使用fmincon进行此操作?,matlab,optimization,robust,Matlab,Optimization,Robust,我目前参与了一个集团项目,我们必须进行投资组合选择和优化。此处给出了参考文件:(具体为第5页和第6页,方程式7-10) 我们在使用M-投资组合创建优化问题时遇到困难,如下所示 min(wrt w,m)(1/T)*sum_uo(rho)*(w'*r_ut-m)(很抱歉,我无法使用格式) s、 t.w'e=1(只是表示所有权重加1的条件) 到目前为止,我们一直在尝试: function optPortfolio = portfoliofminconM(returns,theta) % Comp

我目前参与了一个集团项目,我们必须进行投资组合选择和优化。此处给出了参考文件:(具体为第5页和第6页,方程式7-10)

我们在使用M-投资组合创建优化问题时遇到困难,如下所示

min(wrt w,m)(1/T)*sum_uo(rho)*(w'*r_ut-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
函数optPortfolio=portfoliofminom(返回,θ)
%计算平均方差模型的输入
mu=平均值(收益)';
西格玛=cov(收益);
%fmincon功能的输入
T=120;
n=长度(μ);
w=θ(1:n);
m=θ((n+1):(2*n));
c=0.01*个(1,n);
Aeq=一(1,(2*n));
beq=1;
lb=零(2,n);
ub=一(2,n);
x0=一(n,2)/n;%从同等权重的投资组合开始
options=optimset('算法','内点'。。。
“MaxIter”,1E10,“MaxFunEvals”,1E10);
%作为目标函数的嵌套函数
函数objValue=objfunction(w,m)
cRp=(w'*(返回-(一(T,1)*m'));
objValue=0;
对于i=1:T

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

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

objfunction_for_fmincon = @(x) objfunction(x(1:n), x(n+1:2*n));

是的,谢谢这帮助了我的思考!但是我们只对x(1)有一个约束,而对x(2)没有约束),所以当应用Aeq,beq约束来满足权重之和等于1时,它似乎也对x(2)应用了它们,这是不应该发生的。如何限制Aeq和beq约束仅适用于x中的第一个向量列?我希望这是有道理的。非常感谢。