由于我是编程新手,所以我想知道我创建的用于计算金融债券的函数 公允价值可以优化。
我所做的如下:
def bondPrice(FV, coupon, r, yld, t):
disc_value = 0
for i in list(range(round(t)+1)):
cf = (FV*coupon/pmts)/(1+yld/pmts)**(i+1)
disc_value += cf
disc_value += FV/(1+yld/pmts)**(i+1)
return disc_value
给出了以下输入内容:
r=.05 # 6-month and 1-year zero rates
t=1.5 # bond's maturity in years
coupon=.04 # bond's coupon
yld=.052 # yield per annum
pmts = 2 # number of payments per year
FV = 100 # face value
返回大约98.2897(如果四舍五入到小数点后四位)。
也欢迎您阅读本文后认为相关的其他提示或建议:)
答案 0 :(得分:-1)
您可以使用列表理解,它们的速度要快得多:
def bondPriceLC(FV, coupon, r, yld, t):
disc_value += FV/(1+yld/pmts)**(i+1) + [ sum((FV*coupon/pmts)/(1+yld/pmts)**(i+1)) for i in list(range(round(t)+1)) ]
return disc_value
这是相关的answer