大佬教程收集整理的这篇文章主要介绍了Python - 到期收益率(金融 - 债券),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试计算债券的到期收益率(在 Google Colab (Jupyter) 中工作)。 该问题的数学公式为:
我试图通过函数导出“r”的地方。
在采用硬编码公式和函数的方法时,我发现了以下内容:
# YIEld to maturity
""" Get yIEld-to-maturity of a bond """
import scipy.optimize as optimize
def bond_ytm(price,par,T,coup,freq=2,guess=0.05):
freq = float(freq)
periods = T*freq
coupon = coup/100.*par/freq
dt = [(i+1)/freq for i in range(int(periods))]
ytm_func = lambda(y): \
sum([coupon/(1+y/freq)**(freq*t) for t in dt]) + \
par/(1+y/freq)**(freq*t) - price
return optimize.newton(ytm_func,guess)
from bond_ytm import bond_ytm
ytm = bond_ytm(95.0428,100,1.5,5.75,2)
print(ytm)
我收到错误消息:lambda 行中的“语法无效”以及在删除它时(为了检查函数本身是否有效)“没有名为 'bond_ytm' 的模块”,甚至将其作为额外文件保存在与(.jpynb) python 文件。 我也不明白 lambda 内联函数、dt 数组/for 循环,以及调用 bond_ytm 的位置和原因。
这里有一个非常相似的方法来自github,它也没有运行,第二部分使用另一个函数:
https://github.com/jamesmawm/Mastering-Python-for-Finance-source-codes/blob/master/B03898_05_Codes/bond_ytm.py
if __name__ == "__main__":
ytm = bond_ytm(95.0428,2)
print ytm
而这让我也失去了同样的理解。
这是一个包的大文档,我不知道他们的计算方法,但我可以手动输入期间的日期,并允许计算付款(优惠券)日期之间的应计利息。 https://bond-pricing.readthedocs.io/en/latest/#module-bond_pricing.simple_bonds:
>>> bond_yIEld(settle="2012-04-15",mat="2022-01-01",cpn=8e-2,... price=94.33,freq=1)
0.08884647275135965
>>> bond_yIEld(mat=10.25,price=93.37,freq=2)
0.09000591604105035
>>> bond_yIEld(settle="2012-04-15",... price=[93,94,95],freq=1)
array([0.09104904,0.08938905,0.08775269])
如果您要查找的是内部收益率,则有一个 numpy financial library(需要与 pip
一起安装)可以找到。
>>> import numpy_financial as npf
>>> npf.irr([-1276.76] + [40]*60 + [1000])
0.02985264673122634
以上是大佬教程为你收集整理的Python - 到期收益率(金融 - 债券)全部内容,希望文章能够帮你解决Python - 到期收益率(金融 - 债券)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。