Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

courses:a4b33opt:cviceni10 [2009/11/26 08:33]
kucerad1
courses:a4b33opt:cviceni10 [2025/01/03 18:28] (aktuální)
Řádek 1: Řádek 1:
-===== Cvičení ​=====+===== Cvičení ​10 =====
  
 [[https://​cw.felk.cvut.cz/​lib/​exe/​fetch.php/​courses/​a4b33opt/​cviceni/​markowitz.pdf?​id=courses%3Aa4b33opt%3Acviceni%3Astart&​cache=cache|Zadání (Markowitzův model)]] [[https://​cw.felk.cvut.cz/​lib/​exe/​fetch.php/​courses/​a4b33opt/​cviceni/​markowitz.pdf?​id=courses%3Aa4b33opt%3Acviceni%3Astart&​cache=cache|Zadání (Markowitzův model)]]
Řádek 6: Řádek 6:
  
 Ke spolecnemu vypracovani:​ Ke spolecnemu vypracovani:​
-<​code>​+<​code ​matlab>
 clc; clc;
 clear; clear;
Řádek 83: Řádek 83:
 </​code>​ </​code>​
 Prosim editujte a komentujte... Prosim editujte a komentujte...
 +
 +Tak moje řešení včetně šestky. Ale ta se asi počítá poněkud špatně. Každopádně u nás na cviku to prošlo. Zřejmě je tam naopak to rovnoměrné rozložení a váhové rozložení,​ které by mělo být úplně nahoře (nejlepší výsledky). --- //​[[[email protected]|Martin Zachar]] 2009/11/26 18:38//
 +<code matlab>
 +clear vars;
 +close all;
 +clear all;
 +clc;
 +load akcie.mat;
 +
 +%% 1 Vypocet parametru Markowitzova modelu
 +
 +[aoH, aoW] = size(AkcieOdhad);​
 +
 +r = (AkcieOdhad((aoH - 1) : -1: 1, :) - AkcieOdhad(aoH : -1 : 2, :)) ./ AkcieOdhad(aoH : -1 : 2, :);
 +rprum = 1 / (aoH - 1) * sum (r);
 +
 +r = r';
 +rprum = rprum';​
 +
 +V = zeros(aoW);
 +
 +for i = 1 : aoW
 +    for j = 1 : aoW        ​
 +        V(i,j) = 1 / (aoH - 2) * sum ((r(i, :) - rprum(i)) * (r(j,:) - rprum(j))'​); ​       ​
 +    end;
 +end;
 +
 +%% 5 Vypocet, kolik koupit akcii od ktere spolecnosti
 +
 +r_p = min(rprum) : (max(rprum) - min(rprum)) / 50 : max(rprum);
 +
 +Aeq = ones(1, aoW);
 +beq = 1;
 +
 +lb = zeros(1, aoW);
 +A = -rprum';​
 +b = - r_p;
 +f = zeros(1, aoW);
 +
 +rx = zeros(size(r_p));​
 +sigma = zeros(size(r_p));​
 +
 +for i = 1 : size(r_p,2)
 +    [x, fval] = quadprog(V, f, A, b(1,i), Aeq, beq, lb, []);
 +    rx(i) = x' * rprum;
 +    sigma(i) = 2*fval;
 +end;
 +
 +
 +figure;
 +hold on;
 +title('​Zavislost r(x) na sigma'​);​
 +xlabel('​risk \sigma^2(x)'​);​
 +ylabel('​r(x)'​);​
 +plot(sigma, rx, '​-'​);​
 +hold off;
 +
 +
 +%% 6 a) Od kazde spolecnosti nakoupim stejne akcii
 +clc; %close all;
 +x = ones(1,aoW) / aoW;
 +vklad = AkcieOdhad(1,​ :) .* x;
 +
 +vynos = zeros(size(AkcieTest));​
 +
 +for i = size(AkcieTest,​1) : -1 : 1
 +    vynos(i, :) = AkcieTest(i,​ :).*x - vklad;
 +end;
 +
 +vynos = flipud(vynos);​
 +
 +figure;
 +hold on;
 +title('​Celkovy vynos za jednotlive mesice'​);​
 +xlabel('​Mesice'​);​
 +ylabel('​Vynos'​);​
 +plot(sum(vynos,​ 2), '​-ro'​);​
 +
 +%% 6 quadprog - vypoctu vahy jako v uloze 5 a podle toho nakoupim akcie
 +
 +r_p = 0.037;
 +b = - r_p;
 +
 +x = quadprog(V, f, A, b, Aeq, beq, lb, []);
 +vklad = AkcieOdhad(1,​ :) .* x';
 +vynos = zeros(size(AkcieTest));​
 +
 +for i = size(AkcieTest,​1) : -1 : 1
 +    vynos(i, :) = AkcieTest(i,​ :).*x' - vklad;
 +end;
 +
 +vynos = flipud(vynos);​
 +
 +xlabel('​Mesice'​);​
 +ylabel('​Vynos'​);​
 +plot(sum(vynos,​ 2), '​-go'​);​
 +
 +
 +%% 6 b) Najdu nejsilnejsi spolecnot a do te dam vsechno
 +
 +maximum = max(x);
 +for i = 1 : size(x, 1)
 +    if x(i) == maximum
 +        x(i) = 1;
 +    else
 +        x(i) = 0;
 +    end;
 +end;
 +
 +vklad = AkcieOdhad(1,​ :) .* x';
 +vynos = zeros(size(AkcieTest));​
 +
 +for i = size(AkcieTest,​1) : -1 : 1
 +    vynos(i, :) = AkcieTest(i,​ :).*x' - vklad;
 +end;
 +
 +vynos = flipud(vynos);​
 +
 +plot(sum(vynos,​ 2), '​-bo'​);​
 +
 +h = legend('​rovnomerne rozlozeni',​ '​investice podle vah', '​investovani do nejocekavanejsiho',​ '​Location',​ '​Best'​);​
 +set(h,'​Interpreter',​ '​none'​);​
 +hold off;
 +</​code>​
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
courses/a4b33opt/cviceni10.1259220796.txt.gz · Poslední úprava: 2025/01/03 18:23 (upraveno mimo DokuWiki)
Nahoru
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0