bondYield
语法
bondYield(start, maturity, issuePrice, coupon, frequency, dayCountConvention,
bondType, settlement, price, priceType, [method='newton'], [maxIter=100],
[benchmark='Excel'])
详情
通过债券净价(Clean Price)或全价(Dirty Price)计算债券的到期收益率 (Yield To Maturity)。
返回值:DOUBLE 类型标量或向量。
注意:
- 如果结算日(settlement)距离到期日(maturity)不足一个票息期(coupon period),则收益率按以下方式计算:
- 部分参数说明:
- A:票息期开始日至结算日之间的天数(应计利息天数)。
-
DSR:从结算日期到赎回日期之间的天数。
-
E :一个票息期内的天数。
-
如果在到期日之前有多个票息期,则通过牛顿法等优化算法迭代地调整收益率的值,使基于该收益率计算得到的债券净价接近用户输入的实际价格。本函数将收益率的初值设置为年息票利率(Annual Coupon Rate)。
参数
注意:所有输入向量必须等长,输入标量将自动扩展以匹配其它向量的长度。
start DATE 类型标量或向量,表示债券的起息日。
maturity 与 start 等长的 DATE 类型标量或向量,表示债券的到期日。
issuePrice 与 start 等长的数值型标量或向量,表示债券的发行价格。贴现债需指定真实发行价(通常小于100);其他债券通常为100。
coupon 数值型标量或向量,表示债券的票面利率。例如 0.03,表示票息为 3%。
- 0/“Once”:到期一次还本付息
- 1/“Annual”:每年付息一次
- 2/“Semiannual:每半年付息一次
- 4/“Quarterly”:每季度付息一次
- 12/“Monthly”:每月付息一次
- "Thirty360US":US (NASD) 30/360
- "ActualActual":实际/实际
- "Actual360":实际/360
- "Actual365":实际/365
- "Thirty360EU":欧洲 30/360
- "FixedRate":固定利率债券,定期按息票利率支付利息。
- "Discount":贴现债券,没有利息支付,以贴现方式发行的债券,期末FV=面值。
- "ZeroCoupon":零息债券,期末一次性支付利息和面值,期末FV=面值+利息。
settlement DATE 类型标量或向量,表示债券的结算日,即购买日期。
price 数值型标量或向量,具体含义取决于 priceType 的取值:
- 当 priceType 为 "CleanPrice" 时,price 表示债券的净价;
- 当 priceType 为 "DirtyPrice" 时,price 表示债券的全价。
- "CleanPrice":净价
- "DirtyPrice":全价
-
"newton":表示使用 Newton 算法,默认值。
-
"brent":表示使用 brent 算法。
-
"nm":表示使用 Nelder-Mead 单纯形算法。
-
"bfgs":表示使用 bfgs 算法。
-
"lbfgs":表示使用 lbfgs 算法。
maxIter 可选参数,整型标量或向量,表示求解收益率时优化算法的最大迭代次数。默认值为 100。
benchmark 可选参数,STRING 类型标量,表示算法参考基准。目前仅支持 “Excel”(excel 中的算法)。
例子
bondYield(start=2023.01.01, maturity=2030.12.31, issuePrice=100, coupon=0.05, frequency=1, dayCountConvention="ActualActual", bondType="FixedRate", settlement=2023.04.01, price=100.2143, priceType="CleanPrice", method = ['newton', 'nm', 'brentq', 'bfgs','lbfgs'])
// output: [0.049624,0.049624,0.049624,0.049624,0.049629]
相关函数:bondAccrint、bondCashflow、bondConvexity、bondDirtyPrice、bondDuration