《基于B 样条对国债利率期限结构的实证研究》
用的和这篇文献几乎一模一样的数据,但运行出来的结果前三个基函数系数很相近,但后三个差距很大,翻来覆去地检查了很多遍代码,问题可能是出现在基函数上,但我实在是不知道自己错在哪,完全是照着文献写的啊
我用的matlab编写的程序,具体如下:
function g=bsplinenew(T,t,k)
g=zeros(length(T)-k-1,length(t));%第i行代表第i个样条基函数在不同的时间所得到的样条函数值
for i=1:length(T)-k-1
for j=1:length(t)
g(i,j)=1/(T(i+1)-T(i))/(T(i+2)-T(i))/(T(i+3)-T(i))/(T(i+4)-T(i))*max([(t(j)-T(i)),0])^3+...
1/(T(i)-T(i+1))/(T(i+2)-T(i+1))/(T(i+3)-T(i+1))/(T(i+4)-T(i+1))*max([(t(j)-T(i+1)),0])^3+...
1/(T(i)-T(i+2))/(T(i+1)-T(i+2))/(T(i+3)-T(i+2))/(T(i+4)-T(i+2))*max([(t(j)-T(i+2)),0])^3+...
1/(T(i)-T(i+3))/(T(i+1)-T(i+3))/(T(i+2)-T(i+3))/(T(i+4)-T(i+3))*max([(t(j)-T(i+3)),0])^3+...
1/(T(i)-T(i+4))/(T(i+1)-T(i+4))/(T(i+2)-T(i+4))/(T(i+3)-T(i+4))*max([(t(j)-T(i+4)),0])^3;
end
end
上面是基函数的计算,三次B样条,k就是3,T长度为10,所以样条函数个数为6,T是债券时段划分,四个节点,前三后三,分别是-3,-2,-1,0,5,8,20,25,30,35,t是债券现金流时间的序列,比如0.5,1,1.5,2
基函数矩阵就是g,第一行为第一个基函数在所有现金流时间下的基函数取值
哪位大侠能帮帮小弟论文很快就要交了,现在真是欲哭无泪