分享一个计算久期与凸性的代码,为了对学习有更好的激情,我要学会用电脑来计算一些东西。欢迎大家留言。
我这里用的是python,也可以使用excel,后面再更新吧,最近要考试了。
F=int(input("请输入票面价格 F="))
R=float(input('请输入票面利率 R='))
n=int(input('请输入年付息次数 n='))
r=float(input('请输入到期收益率 r='))
T=int(input('请输入债券的期限 T='))
import math
t=T*n #计算一共有几期
C=F*R/n #计算每期利息
r0=r/n #表示每期的到期收益率
a=math.pow(1+r0,t) #计算1+r/n的t次方,用a代替他
P=C*(1-1/a)/r0+F/a #计算债券的现值
#下面是计算凸性的部分
x=1 #期数
s=0
while x<=t:
b=math.pow(1+r0,x)
CP=C/b #计算每期利息的现值
Q=CP/P #计算利息现值占债券现值的比例
c=x*(x+1)
M=Q*c
s=s+M #所有利息权重的加总
x=x+1
q=F/a/P #计算面值贴现后占现值的比列
d