Výpočet efektivní hranice pomocí mřížky cílových výnosů
Jak jsi viděl/a, jedním ze způsobů, jak vypočítat efektivní hranici, je nejprve definovat mřížku cílových výnosů a pak pro každý cílový výnos najít portfolio, jehož očekávaný výnos se rovná cílovému výnosu při nejnižší možné rozptylu.
Ale jaká mřížka cílových výnosů je rozumná? Jako maximum nastavíš nejvyšší průměrný výnos ze všech akcií. Ideálně bys jako minimum použil/a výnos portfolia s minimálním rozptylem – jenže ten ještě neznáš, takže místo toho použiješ minimum průměrných výnosů ze všech akcií.
V tomto cvičení použiješ smyčku for k výpočtu mřížky potenciálních průměrů portfolia, odchylek a vah.
Toto cvičení je součástí kurzu
Úvod do analýzy portfolia v R
Pokyny k cvičení
- Vypočítej průměry sloupců z
returns(pomocícolMeans()) a výsledek ulož dostockmu. - Vytvoř sekvenci (seq()) délky 50, která začíná bezrizikovou sazbou 1 % a končí maximální hodnotou
stockmu. Ulož ji dogrid. - Inicializuj dva prázdné vektory stejné délky jako
gridpomocí rep(), do nichž budeš ukládat průměry a směrodatné odchylky portfolií. Pojmenuj jevpmavpsd. - Inicializuj prázdnou matici s 50 řádky a 30 sloupci a pojmenuj ji
mweights. Použij k tomu funkcimatrix(). - Vytvoř smyčku
for, která prochází hodnotygridod první po poslední. V každé iteraci smyčka vytvoří portfoliooptzreturnss cílovým výnosem nastaveným na aktuální hodnotugrid. - V každé iteraci smyčka doplní vektory
vpm($pm) avpsd($ps) příslušnými hodnotami zopt. - Ukládej váhy portfolia řádek po řádku do
mweights($pw).
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Calculate each stocks mean returns
# Create a grid of target values
grid <- seq(from = ___, to = ___, length.out = ___)
# Create empty vectors to store means and deviations
vpm <- vpsd <-
# Create an empty matrix to store weights
mweights <- matrix(NA, 50, 30)
# Create your for loop
for(i in 1:length(grid)) {
opt <- portfolio.optim(x = ___, pm = ___[i])
vpm[i] <- ___$__
vpsd[i] <- ___$__
mweights[i, ] <- ___$__
}