金融计算器--麦考利久期(Macaulay_Duration)

写在前面--------本专栏会不定期更新一些金融公式的计算函数
“久期”又叫“持续期”,要归功于F·R·麦考利
具体的计算将每次债券现金流的现值除以债券价格得到每一期现金支付的权重,并将每一次现金流的时间同对应的权重相乘,最终合计出整个债券的久期。

#Macaulay_Duration(麦考利久期)       
#假设一张T年期债券
#y为到期收益率
#z为票面利率
#r为当前的市场利率(贴现率)
#PV(Ct)代表第t期的现金流现值 
#n为到期期数 n = T*h
inf = input('请输入以下数值(按下回车继续)')
T = eval(input('债券年期:'))
z = eval(input('息票利率:'))
r = eval(input('到期收益率(贴现率):'))
h = eval(input('每年付息次数:'))
def duration(T,z,r,h):
    n = T*h 
    PV_sum = 0
    z = z/h*0.01
    r = r/h*0.01   
    for t in range(1,n+1):
        Discount = 1/(1+r)**t  
        if  t < n:
            PV_Ct = z*Discount*t/h
        elif t == n:
            PV_Ct = (1+z)*Discount*t/h
            #最后一期本金加利息一起计算
        PV_sum += PV_Ct
    D = PV_sum
    return D
print('\n久期:{:.6f}'.format(duration(T,z,r,h)))
#最后得出结论,久期只与这四个参数有关,
# 与债券年期,息票利率正相关
# 与到期收益率,每年付息次数负相关

金融计算器--麦考利久期(Macaulay_Duration)_第1张图片
金融计算器--麦考利久期(Macaulay_Duration)_第2张图片
根据知乎这位答主的回答,由我这套函数得出的答案是较为精准的

你可能感兴趣的:(金融python,python)