MulaiMulai sekarang secara gratis

Menghitung efficient frontier menggunakan grid target return

Seperti yang telah Anda lihat, salah satu pendekatan untuk menghitung efficient frontier adalah terlebih dahulu mendefinisikan grid target return dan kemudian, untuk setiap target return, mencari portofolio yang memiliki ekspektasi return sama dengan target return pada varians serendah mungkin.

Namun, seperti apa grid target return yang masuk akal? Anda akan menetapkan target return maksimum sama dengan rata-rata return maksimum dari saham-saham. Idealnya, Anda akan menetapkan target return minimum sama dengan return dari portofolio varians minimum. Karena Anda belum mengetahui return portofolio varians minimum ini, Anda membuat grid menggunakan nilai minimum dari rata-rata return seluruh saham.

Dalam latihan ini, Anda akan menggunakan for loop untuk menghitung grid kandidat mean portofolio, deviasi, dan bobotnya.

Latihan ini adalah bagian dari kursus

Pengantar Analisis Portofolio di R

Lihat Kursus

Petunjuk latihan

  • Hitung mean kolom dari returns (menggunakan colMeans()), dan beri nama stockmu.
  • Buat sebuah deret (seq()) sepanjang 50, dimulai dari tingkat bebas risiko 1% dan berakhir pada nilai maksimum stockmu, beri nama grid.
  • Inisialisasi dua vektor kosong dengan panjang yang sama dengan grid menggunakan rep(), tempat Anda akan menyimpan mean dan simpangan baku portofolio. Beri nama vpm dan vpsd.
  • Inisialisasi sebuah matriks kosong dengan 50 baris dan 30 kolom. Beri nama mweights. Anda dapat menggunakan fungsi matrix() untuk melakukannya.
  • Buat for loop yang dimulai dari nilai pertama grid hingga nilai terakhir. For loop harus membuat portofolio bernama opt menggunakan returns dan dengan target return sebesar grid.
  • Pada setiap iterasi, for loop harus mengisi vektor vpm ($pm), vpsd ($ps) dengan nilai masing-masing dari opt.
  • Simpan bobot portofolio baris demi baris ke dalam mweights ($pw).

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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, ] <- ___$__
}
Edit dan Jalankan Kode