Hedef getiriler ızgarası kullanarak etkin sınırı hesaplama
Gördüğün gibi, etkin sınırı hesaplamanın bir yolu önce hedef getirilerden oluşan bir ızgara tanımlamak, sonra da her hedef getiri için beklenen getirisi hedefe eşit olan ve mümkün olan en düşük varyansa sahip portföyü bulmaktır.
Peki makul bir hedef getiri ızgarası nasıl olmalı? Maksimum hedef getiriyi, hisselerin ortalama getirilerinin maksimumuna ayarlayacaksın. İdeal olarak, minimum hedef getiriyi minimum varyans portföyünün getirisine ayarlardın. Bu minimum varyans portföyünün getirisini henüz bilmediğin için, tüm hisselerin ortalama getirilerinin en küçüğünü kullanarak bir ızgara oluşturacaksın.
Bu egzersizde, olası portföy ortalamalarını, sapmalarını ve ağırlıklarını hesaplamak için bir for döngüsü kullanacaksın.
Bu egzersiz
R ile Portföy Analizine Giriş
kursunun bir parçasıdırEgzersiz talimatları
returns'ın sütun ortalamalarını (colMeans()kullanarak) hesapla ve bunastockmuadını ver.- 50 uzunluğunda, %1 risksiz faiz oranından başlayan ve
stockmu'nun maksimum değerinde biten bir dizi (seq()) oluştur ve bunagridadını ver. - rep() kullanarak, portföy ortalamalarını ve standart sapmalarını saklayacağın,
gridile aynı uzunlukta iki boş vektör başlat. Bunlaravpmvevpsdadlarını ver. - 50 satır ve 30 sütundan oluşan boş bir matris başlat. Buna
mweightsadını ver. Bunu yapmak içinmatrix()fonksiyonunu kullanabilirsin. grid'in ilk değerinden başlayıp son değerinde biten bir for döngüsü oluştur. For döngüsü,returns'ı kullanarak ve hedef getirisigridolanoptadlı bir portföy oluşturmalı.- Her yinelemede, for döngüsü
vpm($pm),vpsd($ps) vektörlerinioptiçindeki ilgili değerlerle doldurmalı. - Portföy ağırlıklarını satır satır
mweightsiçine ($pw) kaydet.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# 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, ] <- ___$__
}