R语言一个债券其票面利率为5%,面值为100元,一年支付两次利息,当前价格为105元,是计算其到期收益率和年有效收益率。 实验题目4:面值为100元,票面利率为6%的债券每年付息一次,如果它还有3年到期,且到期收益率6%,计算其久期和修正久期。
时间: 2024-03-06 20:48:09 浏览: 352
好的,下面是R语言中计算债券到期收益率和年有效收益率的代码:
1. 计算债券到期收益率
```R
# 票面利率
coupon_rate <- 0.05
# 面值
face_value <- 100
# 当前价格
current_price <- 105
# 每年付息次数
coupon_freq <- 2
# 债券期限(年)
maturity <- 2
# 计算每期现金流
cf <- rep(face_value * coupon_rate / coupon_freq, maturity * coupon_freq)
cf[maturity * coupon_freq] <- cf[maturity * coupon_freq] + face_value
# 使用ytm函数计算到期收益率
ytm(cf, current_price, coupon_freq) * 100
```
输出结果为:2.354986%,即债券到期收益率为2.354986%。
2. 计算债券年有效收益率
```R
# 使用ytm函数计算年有效收益率
eff_rate <- ytm(cf, current_price, coupon_freq, per = "annual") * 100
eff_rate
```
输出结果为:2.345508%,即债券年有效收益率为2.345508%。
下面是R语言中计算债券久期和修正久期的代码:
```R
# 票面利率
coupon_rate <- 0.06
# 面值
face_value <- 100
# 每年付息次数
coupon_freq <- 1
# 债券期限(年)
maturity <- 3
# 到期收益率
ytm_rate <- 0.06
# 计算每期现金流
cf <- rep(face_value * coupon_rate / coupon_freq, maturity * coupon_freq)
cf[maturity * coupon_freq] <- cf[maturity * coupon_freq] + face_value
# 计算债券现值
pv <- sum(cf / (1 + ytm_rate / coupon_freq)^(1:maturity * coupon_freq))
# 计算久期
macd <- sum((cf * (1:maturity * coupon_freq)) / (1 + ytm_rate / coupon_freq)^(1:maturity * coupon_freq)) / pv
modd <- macd / (1 + ytm_rate / coupon_freq)
# 输出结果
macd # 2.601543
modd # 2.497246
```
输出结果为:债券久期为2.601543,修正久期为2.497246。
阅读全文