如何在Maxima中计算内部收益率(IRR)与到期收益率(YTM)
在Maxima中求解债券到期收益率(YTM)
步骤1:定义YTM方程
先将债券定价方程整理简化,把最后一期的票息与面值合并后输入Maxima:
eq: 900 = 50/(1 + r) + 50/(1 + r)^2 + 1050/(1 + r)^3;
步骤2:求解解析解(可选)
使用solve命令可得到方程的所有解析根,但三次方程的解会包含复数或无意义的负数根,需自行筛选合理的正实数根:
solve(eq, r);
步骤3:求解实用数值解
由于解析解复杂,实际场景中更常用find_root直接计算正实数解。根据常识YTM为正数,设定搜索范围为0到0.2(0%到20%):
find_root(eq, r, 0, 0.2);
运行后会得到约0.0853的结果,即**8.53%**左右的到期收益率。
步骤4:验证结果(可选)
将求得的r值代入原方程,验证是否符合定价逻辑:
r_val: find_root(eq, r, 0, 0.2); 50/(1 + r_val) + 50/(1 + r_val)^2 + 1050/(1 + r_val)^3;
计算结果会接近900,误差可忽略。
补充:IRR的计算逻辑
内部收益率(IRR)的求解逻辑完全一致:只需定义净现值(NPV)为0的方程(比如初始现金流为-900,后续每年流入50,最后一年流入1050),重复上述步骤即可求解。
内容的提问来源于stack exchange,提问作者Flux
相关产品推荐
相关产品推荐

