0

这是我在 stackoverflow 上的第一篇文章。基本上我正在研究一些金融模型,我必须为最多样化的投资组合模型(Chuouefaity 2008)创造有效的前沿。该模型是照片中的模型,我确信可以使用 quadprog 解决。特别是我无法处理约束,特别是第二个模型。

重点是我创建了一个实际上不起作用的代码(出于财务和逻辑原因)。我在这里放下它:

`clear all
close all
clc

A=load('weekly_EUROSTOXX50_price_time.txt');

times=A(:,1);
P=A(:,2:end);

RR=diff(P)./P(1:end-1,:);

[T,N]=size(RR);

mu=mean(RR);
Sigma=cov(RR);
H=2*Sigma;
vol=(diag(Sigma).^0.5)';
LB=zeros(1,N); 
UB=[];
Aeq=vol;
beq=1;


[X,var] = quadprog(H,[],[],[],Aeq,beq,[],[]);
eta_min=mu*X;
eta_max=max(mu)*sum(X);
NN=100;
eta=linspace(eta_min,eta_max,NN);

beq_=[1;0];
XX=NaN(N,length(eta));
Den=NaN(1,length(eta));
x0=ones(1,N)./100;
% options=optimoptions('quadprog','Algorithm','interior-point-convex','OptimalityTolerance',1e-3);

for j=1:length(eta)
    Aeq_=[vol;mu-repmat(eta(j),1,N)];
    [x_starr,f_starr] =quadprog(H,[],[],[],Aeq_,beq_,[],[]);
    XX(:,j)=x_starr;
    Den(j)=f_starr;
end

num=(XX'*vol');


DR2=num'./Den;

plot(eta,DR2,'k','LineWidth',2)
xlabel('expected return')
ylabel('DR')
pesi=XX./sum(XX,2);`

有人有什么想法吗?非常感谢您的关注

4

0 回答 0