使用 uniroot 函式尋找 YTM
逐步嘗試法非常費時。另一種作法是用演算法替你完成。在這個情境下,問題的解其實等同於求某個函式的根。
在本練習中,你會使用 unrioot() 函式來尋找根。
uniroot() 函式需要你先建立一個現金流量向量 cf:第一個元素是債券價格(負數),其餘元素是你預期從債券收到的現金流(也就是票息與本金)。
回想一下,該債券價格為 $95.79,票面價值為 $100,票面利率 5%,到期時間 5 年。
本練習屬於課程
在 R 中進行債券評價與分析
練習說明
- 建立現金流量向量
cf,其中包含初始債券價格(負數)以及到期前的各期收款(正數)。 - 使用預先撰寫的程式碼建立簡單的債券評價函式
bval(),用來計算各期的債券價值。 - 使用預先撰寫的程式碼,透過
uniroot()建立ytm()函式。 - 對你的
cf向量使用ytm(),找出該債券的到期殖利率。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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