MulaiMulai sekarang secara gratis

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

Lihat Kursus

Petunjuk latihan

  • Buat vektor bernama grid menggunakan seq() yang dimulai dari 0, berakhir di 1, dengan kenaikan 0,01.
  • Inisialisasi vektor kosong vsharpe dengan panjang yang sama seperti grid. 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 objek weight, yang berubah di setiap iterasi.
  • Anda ingin melihat bagaimana imbal hasil portofolio berubah saat bobot berubah. Buat objek preturns yang merupakan jumlah dari weight dikalikan returns_equities, dan (1-weight) dikalikan returns_bonds.
  • Selanjutnya, Anda akan mengganti NA dalam vsharpe dengan rasio Sharpe tahunan (SharpeRatio.annualized()) dari preturns.
  • 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)
Edit dan Jalankan Kode