Zacznij terazZacznij za darmo

Wyznaczanie granicy efektywności przy użyciu siatki docelowych stóp zwrotu

Jak już wiesz, jednym ze sposobów wyznaczenia granicy efektywności jest najpierw zdefiniowanie siatki docelowych stóp zwrotu, a następnie – dla każdej z nich – znalezienie portfela o oczekiwanej stopie zwrotu równej wartości docelowej przy możliwie najniższej wariancji.

Ale jaka siatka docelowych stóp zwrotu jest rozsądna? Jako maksymalną wartość docelową przyjmiesz maksymalną średnią stopę zwrotu spośród wszystkich akcji. Idealnie minimalną wartość docelową ustawiłoby się na poziomie stopy zwrotu portfela o minimalnej wariancji. Ponieważ ten portfel nie jest jeszcze znany, jako minimum przyjmiesz najmniejszą ze średnich stóp zwrotu wszystkich akcji.

W tym ćwiczeniu użyjesz pętli for, aby wyznaczyć siatkę potencjalnych średnich portfela, odchyleń standardowych i wag.

To ćwiczenie jest częścią kursu

Wprowadzenie do analizy portfela w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Oblicz średnie kolumnowe dla returns (używając colMeans()) i przypisz wynik do zmiennej stockmu.
  • Utwórz sekwencję (seq()) o długości 50, zaczynającą się od stopy wolnej od ryzyka wynoszącej 1% i kończącą się na maksymalnej wartości stockmu. Przypisz ją do zmiennej grid.
  • Zainicjalizuj dwa puste wektory o tej samej długości co grid, używając funkcji rep() – posłużą do przechowywania średnich portfela i odchyleń standardowych. Nazwij je vpm i vpsd.
  • Zainicjalizuj pustą macierz o 50 wierszach i 30 kolumnach, przypisując ją do zmiennej mweights. Użyj do tego funkcji matrix().
  • Utwórz pętlę for, która iteruje po wszystkich wartościach grid – od pierwszej do ostatniej. W każdej iteracji pętla powinna tworzyć portfel opt na podstawie returns z docelową stopą zwrotu równą bieżącej wartości grid.
  • W każdej iteracji pętla powinna uzupełniać wektory vpm ($pm) i vpsd ($ps) odpowiednimi wartościami z obiektu opt.
  • Zapisuj wagi portfela wiersz po wierszu w macierzy mweights ($pw).

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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, ] <- ___$__
}
Edytuj i uruchom kod