估算债券收益率

用 R 进行债券估值与分析

Clifford Ang

Senior Vice President, Compass Lexecon

试错法求收益率

  • 对于交易中的债券,可由价格反推收益率
  • 若已知价格和现金流,可对收益率进行"猜测"
  • "正确"的收益率使债券价格等于现金流的现值
用 R 进行债券估值与分析

迭代不同猜测值

  • 一只面值 $100、票息 5%、10 年到期、价格 $92.64 的债券
  • 第一次猜测:5% → 价格 $100(过高)
  • 第二次猜测:7% → 价格 $85.95(过低)
  • 第三次猜测:6% → 价格 $92.64(正确)
用 R 进行债券估值与分析

流程自动化

  • 试错法低效
  • 可用 R 的 uniroot() 来自动化
用 R 进行债券估值与分析

使用 uniroot() 创建函数

ytm <- function(cf) {
    uniroot(bval, c(0, 1), cf = cf)$root
}
  • uniroot() 创建 ytm() 函数
  • 函数接收修改后的现金流向量(cf),并调用修改后的定价函数(bval
  • c(0,1) 将搜索区间限制在 0% 到 100% 的收益率
用 R 进行债券估值与分析

修改后的现金流向量

cf <- c(-92.64, 5, 5, 5, 5, 5, 5, 5, 5, 5, 105)
  • 第一个元素为债券价格,记为负数
  • 其后为现金流:票息加面值
  • 同一只债券:价格 -$\$92.64$,面值 $\$100$,票息 5%,到期 10 年
用 R 进行债券估值与分析

修改后的债券定价函数

bval <- function(i, cf, t = seq(along = cf))  sum(cf / (1 + i)^t)
  • 需创建使用修改后现金流向量(cf)的债券定价函数 bval()
  • 逻辑与 bondprc() 相同
  • 创建时间指标(t
  • 用利率(i)贴现现金流
用 R 进行债券估值与分析

Passons à la pratique !

用 R 进行债券估值与分析

Preparing Video For Download...