Sürücü 2: Portföy ağırlıklarının seçimi
Yatırımcılar, portföyün Sharpe oranıyla ölçülen en yüksek risk ayarlı getiriyi elde etmek için ağırlıkların seçimini optimize edebilir.
Toplam portföy değerinin yalnızca iki varlığa yatırıldığı özel durumda, belirlenmesi gereken yalnızca bir ağırlık vardır; çünkü ikinci varlığın ağırlığı, birinci varlığın ağırlığının bir eksiğine eşittir.
Bunu, ABD hisse senetleri ve ABD tahvillerine yatırılan bir portföy için yapalım. Sıfır risksiz faiz oranı varsayımıyla, çok sayıda olası ağırlığı deneyip portföy Sharpe oranı için en yüksek değeri veren ağırlığı saklayacağımız brute force yaklaşımını kullanacağız.
Bu egzersiz
R ile Portföy Analizine Giriş
kursunun bir parçasıdırEgzersiz talimatları
seq()kullanarak 0'dan başlayıp 1'de biten ve 0.01 artımlı birgridadlı vektör oluştur.gridile aynı uzunlukta, boş birvsharpevektörü başlat. Bunu yapmanın yaygın bir yolu, rep() fonksiyonunu kullanarak NA'ler içeren bir vektör oluşturmaktır. Bir sonraki adımda kuracağın döngüde bu NA'leri değiştireceksin.- For döngüsünde,
gridiçindeki olası her ağırlık için Sharpe oranını hesaplayacaksın. For döngüsündeki ilk komut, grid'in i'inci elemanını seçer ve her yinelemede değişenweightnesnesine atar. - Ağırlık değiştikçe portföy getirisinin nasıl değiştiğini görmek istiyorsun.
weightilereturns_equitiesçarpımının ve(1-weight)ilereturns_bondsçarpımının toplamına eşit birpreturnsnesnesi oluştur. - Sonraki adımda,
vsharpeiçindeki NA'lerin yerinepreturns'un yıllıklaştırılmış Sharpe oranını (SharpeRatio.annualized()) yaz. - Potansiyel ağırlıkların (
grid) x ekseninde, Sharpe oranlarının y ekseninde çizildiği grafik fonksiyonunu doldur.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Create a grid
grid <- seq(from = ___, to = ___, by = ___)
# Initialize an empty vector for Sharpe ratios
vsharpe <- rep(NA, times = ___ )
# Create a for loop to calculate Sharpe ratios
for(i in 1:length(grid)) {
weight <- ___[i]
preturns <- ___ * ___ + (1 - ___) * ___
vsharpe[i] <- SharpeRatio.annualized(___)
}
# Plot weights and Sharpe ratio
plot(___, ___, xlab = "Weights", ylab= "Ann. Sharpe ratio")
abline(v = grid[vsharpe == max(vsharpe)], lty = 3)