数据
到期日 | 票面利率/参考利率(%) | | | | | 收盘净价 |
| (04/26/2015) | 0.0291 | 100 | 1 | 2 | 0 | 99.9354 |
| (05/27/2015) | 0.0298 | 100 | 1 | 2 | 0 | 99.931 |
| (06/12/2015) | 0.0332 | 100 | 1 | 2 | 0 | 100.0486 |
| (07/10/2015) | 0.0354 | 100 | 1 | 2 | 0 | 100.1489 |
| (08/14/2015) | 0.0382 | 100 | 1 | 2 | 0 | 100.3244 |
| (08/26/2015) | 0.0258 | 100 | 1 | 2 | 0 | 99.7085 |
| (09/13/2015) | 0.031 | 100 | 1 | 2 | 0 | 99.977 |
| (09/22/2015) | 0.0371 | 100 | 1 | 2 | 0 | 100.3477 |
| (10/20/2015) | 0.035 | 100 | 1 | 2 | 0 | 100.2577 |
| (12/11/2015) | 0.0342 | 100 | 1 | 2 | 0 | 100.2586 |
| (01/15/2016) | 0.0314 | 100 | 1 | 2 | 0 | 100.0301 |
| (01/31/2016) | 0.031 | 100 | 1 | 2 | 0 | 100.0155 |
| (12/25/2016) | 0.0339 | 100 | 1 | 2 | 0 | 100.4753 |
| (03/13/2017) | 0.0366 | 100 | 1 | 2 | 0 | 101.0186 |
| (09/11/2017) | 0.04 | 100 | 1 | 2 | 0 | 102.1307 |
| (03/20/2018) | 0.0407 | 100 | 1 | 2 | 0 | 102.7265 |
| (03/12/2019) | 0.0305 | 100 | 1 | 2 | 0 | 99.3541 |
| (06/07/2019) | 0.0314 | 100 | 1 | 2 | 0 | 99.5927 |
| (09/06/2019) | 0.0325 | 100 | 1 | 2 | 0 | 99.7784 |
| (10/30/2019) | 0.0353 | 100 | 1 | 2 | 0 | 101.2148 |
| (02/05/2020) | 0.0331 | 100 | 1 | 2 | 0 | 100.3523 |
| (07/11/2020) | 0.0346 | 100 | 1 | 2 | 0 | 100.522 |
| (07/03/2021) | 0.0402 | 100 | 1 | 2 | 0 | 104.0687 |
| (10/23/2021) | 0.037 | 100 | 1 | 2 | 0 | 102.6557 |
| (01/22/2022) | 0.0336 | 100 | 1 | 2 | 0 | 100.5478 |
| (08/22/2023) | 0.0408 | 100 | 1 | 2 | 0 | 103.9991 |
| (06/19/2024) | 0.04 | 100 | 1 | 2 | 0 | 104.8478 |
| (09/18/2024) | 0.0413 | 100 | 1 | 2 | 0 | 106.2663 |
| (05/15/2025) | 0.0411 | 100 | 1 | 2 | 0 | 104.2 |
| (09/27/2032) | 0.041 | 100 | 1 | 2 | 0 | 103.49 |
| (12/18/2024) | 0.0377 | 100 | 1 | 2 | 0 | 103.2392 |
| (06/23/2041) | 0.045 | 100 | 1 | 2 | 0 | 109.9965 |
| (10/27/2044) | 0.043 | 100 | 1 | 2 | 0 | 106.0828 |
| (11/24/2064) | 0.0424 | 100 | 1 | 2 | 0 | 104.0485 |
function F = myfunpoly(x)
global d ZeroRates f T t b a;
[Numeric,Txt]=xlsread('C:\Users\jiang\Desktop\新建文件夹\历史行情.xlsx');
a=Numeric;
b=Txt(:,1);
c=b(2:35);
Bonds=[datenum(c),a(:,[1:5])];
s=a(:,6);
Settle=datenum('02/12/2015');
OutputCompounding=-1;
[ZeroRates,CurveDates]=zbtprice(Bonds,a(:,6),Settle,OutputCompounding);
d=date2time(Settle,c,1);
for i=1:35
if d(i)<=5
f(i)=1+x(1)*d(i)+x(2)*d(i)^2+x(3)*d(i)^3;
f(i)=-log(f(i))/d(i);
else if 5<d(i)<=10
f(i)=1+x(1)*d(i)+x(2)*d(i)^2+x(3)*(d(i)^3-(d(i)-5)^3)+x(4)*(d(i)-5)^3;
f(i)=-log(f(i))/d(i);
else if 10<d(i)<=50
f(i)=1+x(1)*d(i)+x(2)*d(i)^2+x(3)*(d(i)^3-(d(i)-5)^3)+x(4)*((d(i)-5)^3-(d(i)-10)^3)+x(5)*(d(i)-10)^3;
f(i)=-log(f(i))/d(i);
end
end
end
end
F=Dot(f-ZeroRates',f-ZeroRates');