Toto je starší verze dokumentu!
Ke spolecnemu vypracovani:
clc; clear; close all; %% Markowitzùv model % 1 Nacteni dat load akcie.mat; % init [T,I] = size(AkcieOdhad); % vynosy akcii za cas r = zeros(I,T); vyberR = zeros(I,1); p = 1/(T-1); p2 = 1/(T-2); for i=1:I for t=2:T r(i,t)= (AkcieOdhad(t,i) - AkcieOdhad(t-1,i))/(AkcieOdhad(t-1,i)); end; vyberR(i) = p*sum(r(i,[2:T])); end; V = zeros (I); for i=1:I for j=1:I V(i,j) = p2 * ( r(i,:) - vyberR(i) )*(( r(j,:) - vyberR(j) )'); end; end; %% 3 % Interpretujte význam omezujících podmínek problému % % sum(X(i))=1 ... X(i) ~ vahy akcii i = jaky objem z celkove sumy investovat % do akcie i % ... mame predem danou sumu - tu pak delime podle x, takze % cela suma je 1*SUMA = SUMA, rozdeleni na 2 je pak X(1)*SUMA % + X(2)*SUMA = SUMA ... analogicky pro N % % X(i) >= 0 ... nelze nakoupit zaporny objem akcii... % % sum( X(i) * R(i) ) >= Rp ... Rp je pozadovany minimalni vynos, soucet % vynosu z jednotlivych akcii musi dat minimalne Rp % %% 4 % Jak by se zmenila formulace problemu (1), pokud bychom chteli investovat do % kazde akcie maximálne 30% z celkove hodnoty portfolia ? % % pribyla by jeste podminka X(i) <= 0.3 % %% 5 MinRp = min(vyberR); MaxRp = max(vyberR); r_p = [MinRp : (MaxRp-MinRp)/50 : MaxRp ]; cnt = size(r_p); rp = 0.02; riziko = zeros(cnt); vynos = zeros(cnt); H = V; f = zeros (I,1); A = -vyberR'; Aeq = ones(1,I); beq = 1; lb = zeros(1,I); ub = ones(1,I); for i=1:cnt(2) rp = r_p(i); b = -rp; [x,fval] = quadprog(H,f,A,b,Aeq,beq,lb,ub); vynos(i) = x'*vyberR; riziko(i) = 2*fval; end plot(riziko, vynos);
Neni to jeste spravne… Prosim editujte a komentujte…