0

我目前参与一个小组项目,我们必须进行投资组合选择和优化。这里给出了被引用的论文:(特别是第 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) (对不起,我无法使格式正常工作)

st 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 的向量。我们不知道如何在目标函数中正确使用带有 2 个变量的 fmincon。此外,目标函数的值取决于另一个值(如论文所示),这需要在 120 个月的滚动时间窗口内完成,总共 264 个月。(因此 for 循环和如果别的)

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

如果您可以另外提供一个处理类似问题的示例,您能否将我们链接到它。

先感谢您。

4

1 回答 1

0

使用 fmincon 最小化两个标量函数的方法是将目标函数编写为单个二维向量的函数。例如,您可以写f(x,y) = x.^2 + 2*x*y + y.^2f(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));
于 2016-04-07T12:05:43.940 回答