Penggerak 2: Pemilihan bobot portofolio
Investor dapat mengoptimalkan pemilihan bobot untuk memperoleh imbal hasil tersesuaikan risiko tertinggi, yang diukur dengan rasio Sharpe portofolio.
Dalam kasus khusus ketika seluruh nilai portofolio diinvestasikan hanya pada dua aset, hanya ada satu bobot yang perlu ditentukan, karena bobot pada aset kedua sama dengan satu dikurangi bobot pada aset pertama.
Mari kita lakukan ini untuk portofolio yang diinvestasikan pada saham AS dan obligasi AS. Kita akan menggunakan pendekatan brute force dengan mencoba sejumlah besar bobot yang mungkin dan mempertahankan bobot yang menghasilkan nilai tertinggi untuk rasio Sharpe portofolio (dengan mengasumsikan tingkat bebas risiko nol).
Latihan ini adalah bagian dari kursus
Pengantar Analisis Portofolio di R
Petunjuk latihan
- Buat vektor bernama
gridmenggunakanseq()yang dimulai dari 0, berakhir di 1, dengan kenaikan 0,01. - Inisialisasi vektor kosong
vsharpedengan panjang yang sama sepertigrid. Cara yang umum adalah membuat vektor berisi NA menggunakan fungsi rep(). Anda akan mengganti NA tersebut dalam loop yang akan Anda buat selanjutnya. - Dalam for loop, Anda akan menghitung rasio Sharpe untuk setiap bobot yang mungkin di
grid. Perintah pertama dalam for-loop memilih elemen ke-i dari grid dan menyimpannya dalam objekweight, yang berubah di setiap iterasi. - Anda ingin melihat bagaimana imbal hasil portofolio berubah saat bobot berubah. Buat objek
preturnsyang merupakan jumlah dariweightdikalikanreturns_equities, dan(1-weight)dikalikanreturns_bonds. - Selanjutnya, Anda akan mengganti NA dalam
vsharpedengan rasio Sharpe tahunan (SharpeRatio.annualized()) daripreturns. - Lengkapi fungsi plot di mana bobot potensial (
grid) diplot pada sumbu x dan rasio Sharpe pada sumbu y.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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)