优化代码以计算金融债券的价格

时间:2019-12-06 20:22:12

标签: python finance

由于我是编程新手,所以我想知道我创建的用于计算金融债券的函数 公允价值可以优化。

我所做的如下:

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(如果四舍五入到小数点后四位)。

也欢迎您阅读本文后认为相关的其他提示或建议:)

1 个答案:

答案 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