Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Vypočítej průměry sloupců z returns (pomocí colMeans()) a výsledek ulož do stockmu.
  • Vytvoř sekvenci (seq()) délky 50, která začíná bezrizikovou sazbou 1 % a končí maximální hodnotou stockmu. Ulož ji do grid.
  • Inicializuj dva prázdné vektory stejné délky jako grid pomocí rep(), do nichž budeš ukládat průměry a směrodatné odchylky portfolií. Pojmenuj je vpm a vpsd.
  • Inicializuj prázdnou matici s 50 řádky a 30 sloupci a pojmenuj ji mweights. Použij k tomu funkci matrix().
  • Vytvoř smyčku for, která prochází hodnoty grid od první po poslední. V každé iteraci smyčka vytvoří portfolio opt z returns s cílovým výnosem nastaveným na aktuální hodnotu grid.
  • V každé iteraci smyčka doplní vektory vpm ($pm) a vpsd ($ps) příslušnými hodnotami z opt.
  • 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, ] <- ___$__
}
Upravit a spustit kód