開始使用免費開始

使用 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


編輯並執行程式碼