Gunakan fungsi uniroot untuk menemukan YTM
Metode coba-coba sangat merepotkan. Alternatifnya adalah menggunakan algoritma yang melakukan pekerjaan tersebut untuk Anda. Dalam kasus ini, penyelesaiannya sama dengan mencari akar dari suatu fungsi.
Dalam latihan ini, Anda akan menggunakan fungsi unrioot() untuk mencari akarnya.
Fungsi uniroot() mengharuskan kita menyiapkan vektor arus kas, cf, yang dimulai dengan harga obligasi (sebagai angka negatif) sebagai elemen pertama dan arus kas yang Anda harapkan terima dari obligasi (yaitu pembayaran kupon dan pokok) sebagai elemen-elemen berikutnya.
Ingat bahwa harga obligasi adalah $95.79 dan obligasi memiliki nilai pari $100, tingkat kupon 5%, dan jatuh tempo 5 tahun.
Latihan ini adalah bagian dari kursus
Penilaian dan Analisis Obligasi di R
Petunjuk latihan
- Buat vektor arus kas,
cf, yang mencakup harga awal obligasi (negatif) dan pembayaran hingga jatuh tempo (positif). - Gunakan kode yang sudah disiapkan untuk membuat fungsi penilaian obligasi sederhana,
bval(), yang menghitung nilai obligasi pada setiap periode waktu. - Gunakan kode yang sudah disiapkan untuk membuat fungsi
ytm()menggunakanuniroot(). - Gunakan
ytm()dengan vektorcfAnda untuk menemukan yield to maturity obligasi.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Create cash flow vector
cf <- c(___, ___, ___, ___, ___, ___)
# Create bond valuation function
bval <- function(i, cf,
t=seq(along = cf))
sum(cf / (1 + i)^t)
# Create ytm() function using uniroot
ytm <- function(cf) {
uniroot(bval, c(0, 1), cf = cf)$root
}
# Use ytm() function to find yield