function primjer_sustav_portfelj
%Primjer racunanja tezina portfelja sa najmanjom varijancom i sa 
%ocekivanim povratom.

%Zadani ocekivani povrati vrijednosnica i matrica kovarijance C.
mu=[0.08;0.03;0.05];
C=[0.3 0.02 0.01; 0.02 0.15 0.03; 0.01 0.03 0.18];
e=ones(3,1);

%Inverz matrice C.
iC=inv(C);

%Parametri za racunanje tezina.
a=e'*iC*e;
b=e'*iC*mu;
c=mu'*iC*mu;
d=a*c-b^2;
g=(c*iC*e-b*iC*mu)/d;
h=(a*iC*mu-b*iC*e)/d;

%Tezine se racunaju za 51 razlicite vrijednosti ocekivanja povrata,
%zajedno sa standardnim devijacijama portfelja.
omegaP=zeros(3,51);
sigmaP=zeros(1,51);
min_muP=min(mu);
max_muP=max(mu);
korak=(max_muP-min_muP)/50;
muP=min_muP:korak:max_muP;
for i=1:51
    omegaP(:,i)=g+muP(i)*h;
    sigmaP(i)=sqrt(omegaP(:,i)'*C*omegaP(:,i));
end

%Tezina, ocekivani povrat i standardna devijacija portfelja sa najmanjom
%varijancom.
omegamin=iC*e/(e'*iC*e);
mumin=mu'*omegamin;
sigmamin=sqrt(omegamin'*C*omegamin);
ind1=(muP<mumin);
ind2=(muP>mumin);

%Crtanje prvog grafa.
plot(muP(ind1),sigmaP(ind1),'r-',muP(ind2),sigmaP(ind2),'g-',mumin,sigmamin,'b*');
xlabel('\mu_P');
ylabel('\sigma_{\mu_P}');
legend('neefikasni portfelj','efikasni portfelj','minimalna varijanca','Location','North');
grid on;
pause

%Crtanje drugog grafa.
plot(muP(ind2),omegaP(1,ind2),'r-',muP(ind2),omegaP(2,ind2),'g-',muP(ind2),omegaP(3,ind2),'b-');
xlabel('\mu_P');
ylabel('(\omega_\mu_P)_i');
legend('(\omega_\mu_P)_1','(\omega_\mu_P)_2','(\omega_\mu_P)_3','Location','North');
grid on;
