用python求解大指数方程

2024-06-26 14:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑到当前价格、期数、息票和面值都是已知的,我试图用下面的公式计算债券的到期收益率。你知道吗

img

我使用以下代码创建了一个SymPy表达式:

expr = coupon/pow((1+ytm), exp)
exp= exp+0.5

for x in range(1, periods):
    expr = expr + coupon/pow((1+ytm), exp)
    exp = exp+0.5

exp = exp-0.5
expr = expr+100/pow((1+ytm), exp)

表达式如下所示:

Out[3]: 104.375*(ytm + 1)**(-28.7356164383562) + 4.375*(ytm + 1)**(-28.2356164383562) + ..... + 4.375*(ytm + 1)**(-0.735616438356164) + 4.375*(ytm + 1)**(-0.235616438356164)

尝试用SymPysolve()方法求解:

from sympy.solvers import solve

但似乎不起作用。任何帮助我应该如何处理这个问题是非常感谢。你知道吗


Tags: 代码表达式价格公式sympy收益率couponexpr
1条回答
网友
1楼 · 发布于 2024-06-26 14:31:06

nsolve可以很容易地得到数值解。用你所说的话来表达:

>>> print(filldedent(eq))
104.375*(ytm + 1)**(-28.7356164383562) + 4.375*(ytm +
1)**(-28.2356164383562) + 4.375*(ytm + 1)**(-0.735616438356164) +
4.375*(ytm + 1)**(-0.235616438356164)
>>> nsolve(eq-5, 1)
2.49587148297981

相关问题 更多 >