DAFTAR PUSTAKA
Anton, Howard, dan Rorres, C. 1994. Elementary Linear Algebra : Application Version. Canada : John Wiley & Sans, Inc. Baki, Isa. Yield Curve Estimation by Spline Based Methods. 2006. Bliss, R. Robert. Testing Term Structure Estimation Methods. Draft 1996. Diebold, Francis X., dan Li, C. Forecasting the Term Structure of Government Bond Yields. Journal of Econometrics, 130 (2005), 337-364 Donohue, Robert J. Introduction to Cashflow Analysis. Regent School Press. Eberly, David. Least-Squares Fitting of Data with B-Spline Curves. February, 2008 Lin, Bing-Huei. Fitting Term Structure of Interest Rates Using B-splines : The Case of Taiwanese Government Bonds. Applied Financial Economics, 12, 2002, 57-75. Lyuu, Yuh-Dauh. 2002. Financial Engineering and Computation : Principles, Mathematics, Algorithms. USA : Cambridge University Press. Mathews, John H. 1987. Numerical Methods fot Mathematics, Science, and Engineering. New Jersey : Prentice-Hall. McDonald, Robert L. 2002. Derivative Markets. USA : Pearson Education. McCulloch, J. Huston. Measuring the Term Structure of Interest Rate. The Journal of Business, 44, No. 1 (1971), 19-31. McCulloch, J. Huston. The Tax-Adjusted Yield Curve. The Journal of Finance, 30, No. 3 (Jun., 1975), 811-830. Nash, Stephen G., dan Sofer, A. 1996. Linier and Nonlinier Programming. USA : McGraw-Hill.
41
Nocedal, Jorge, dan Wright, Sephen J. 2006. Numerical Optimization. New York : Springer Verlag. Nelson, Charles R, dan Siegel, Andrew F. Parsimonius Modelling of Yield Curves. The Journal of Business, 60, No. 4(1987), 473-489. Ruf, Johannes. B-Spline of Third Order on a Non-Uniform Grid. Draft 2008. Syamsuddin, M. Catatan Kuliah Teori Ekonometrika. Maret, 2008. Danareksa Debt Research Weekly Reports. http://www.danareksa.com/home/index_news2.cfm?act=riset&categoryId =5. Diakses terakhir tanggal 25 Mei 2009. Riding the Yield Curve. http://www.kiplinger.com/basics/archives/2003/04/bonds4.html. Diakses tanggal 17 Januari 2009.
42
LAMPIRAN A KODE MATLAB
Main Program clear all; data=xlsread('052509'); data2=plotreal(data); global W x_real y_real nk t x_real=data2(:,1); %data x y_real=data2(:,2); %data y nk=length(x_real); %banyak data x real %---------------% NS %---------------beta_nol=[10 -8 -3 1]; %tebakan awal optimasi A=[-1 -1 0 0;-1 0 0 0; 0 0 0 -1]; %constrain eps=[0.001 0.001 0.001]; %syarat berhenti %weight matrix kk=sum(1/x_real); for i=1:nk W(i,i)=(1/x_real(i))/kk; end %optimasi [b]=barrier(beta_nol) %error var_NS=leastsqr(b)/(nk-1) SE_NS=sqrt(var_NS) %producing data for plot x1=x_real(1):0.1:x_real(nk); for i=1:length(x1) y1(i)=NS(b,x1(i)); end %plot each segment d=NSSegmenPlot(x1,b); %---------------% Spline %---------------nknot=floor(sqrt(nk)); stp=round(nk/nknot);
%banyak knot %step index x_real
%creating knot for i=1:nknot-1 t(i)=x_real(1+(i-1)*stp); end t(nknot)=x_real(nk);
43
%pembuatan subselang di luar [a,b] nt=length(t); %banyak data t d1=t(2)-t(1); %distance i=-3,-2,-1 d2=t(nt)-t(nt-1); %distance i=n+1,n+2,n+3 %stretching subsection from 0...n into -3...n-3 for i=nt:-1:1 t(i+3)=t(i); end for i=1:3 %set equidistance for -3..-1 and n+1..n+3 t(4-i)=t(5-i)-d1; t(nt+3+i)=t(nt+2+i)+d2; end nt=length(t); %update banyak data t %creating B-spline for i=1:nk for j=1:nt-4 B(i,j)=bspline(x_real(i),j); end end %finding parameter a by least square LL=transpose(B)*W*B; a=inv(LL)*transpose(B)*W*y_real; %error measure for price for j=1:nk y_spln(j)=0; for i=1:(length(t)-4) y_spln(j)=y_spln(j)+bspline(x_real(j),i)*a(i); end end y_spln=transpose(y_spln); P=y_real-y_spln; var_MC=(transpose(P)*P)/(nk-nknot) SE_MC=sqrt(var_MC) %producing data for plot for j=1:length(x1) y2(j)=0; for i=1:(length(t)-4) y2(j)=y2(j)+bspline(x1(j),i)*a(i); end end %plot figure; plot(x1,y1); hold on; plot(x1,y2,'--k'); xlabel('Time to Maturity in Years'); ylabel('Yield %'); title('Yield Curve'); plot(x_real,y_real,'or'); h = legend('Nelson Siegel','McCulloch','Eksak',4); hold off;
44
Screenshot input Berikut adalah contoh tampilan input data pada Microsoft Excel untuk data laporan 6 April 2009 dengan nama file 040609.xls dengan kolom A : maturity time dalam hari; kolom B : yield; kolom C : tanggal pengambilan data; kolom D : waktu jatuh tempo obligasi; kolom E : yield; dan kolom F : penanda apakah data digunakan dalam perhitungan atau tidak. Jika diberi angka 1 maka data tidak digunakan.
plotreal.m | Fungsi : membuat plot data real dan outlier jika ada. Output dari
program ini adalah data yang telah dibersihkan dari outlier (yang diberikan angka 1 pada kolom F) function d=plotreal(data) years=252; x_real=data(:,1)./years; y_real=data(:,2); isOutlier=data(:,6); nk=length(x_real); %plot k=0;ind=1;
45
for i=1:nk %jika data adalah outlier, masukkan ke list if isOutlier(i)==1 k=k+1; xOut(k)=x_real(i); yOut(k)=y_real(i); else %jika bukan, masukkan ke perhitungan pembentukan kurva d(ind,1)=x_real(i); d(ind,2)=y_real(i); ind=ind+1; end end plot(x_real,y_real,'or'); hold on; xlabel('Time to Maturity in Years'); ylabel('Yield %'); title('Data Yield Asli'); %jika ada outlier, plot outlier if k>0 plot(xOut,yOut,'ok','MarkerEdgeColor','k','MarkerFaceColor','k'); h = legend('Data asli','Data yang Tidak Digunakan',4); end hold off;
barrier.m | Fungsi : menghitung nilai optimal parameter Nelson-Siegel dengan menggunakan metode penalti tipe barrier % beta_nol : tebakan awal parameter Nelson Siegel % W : matriks bobot function k=barrier(beta_nol,W) global x_real y_real lambda lambda=10; step_lambda=0.1; akurasi=10^(-9); sudah=false; iterasi=1; syms b1 b2 tau g=(1/(b1+b2))+(1/(b1))+(1/tau); %barrier method while (sudah==false) beta_baru= fminsearch(@NSleastsqrW,[beta_nol],[],x_real,y_real); cek=lambda*subs(g,[b1,b2,tau],[beta_baru(1),beta_baru(2),beta_baru(4)]); if (norm(cek) <= akurasi sudah=true; else lambda=lambda*step_lambda; beta_nol=beta_baru; iterasi=iterasi+1; end end banyak_iterasi_barrier=iterasi-1 k=beta_nol;
46
NSleastsqrW.m | Fungsi : menghitung jumlah kuadrat selisih berbobot antara data asli dan data hasil model Nelson-Siegel ditambah dengan kendala % b : parameter Nelson Siegel % y : vektor data yield asli % x : vektor data maturity time yang berpasangan dengan data yield function J = NSleastsqrW(b,x,y) global lambda W n = length(x); Jtemp = 0; for i=1:n, Jtemp = Jtemp + W(i,i)*(y(i)-NS(b,x(i)))^2; end J = Jtemp + lambda * ( (1/(b(1)+b(2))) + (1/(b(1))) + (1/b(4)) ); NS.m | Fungsi : menghitung nilai yield menggunakan model Nelson-Siegel % x : nilai x (maturity time) % b : parameter Nelson Siegel function K=NS(b,x) Tt=x/b(4); K=b(1)+(b(2)+b(3))*(1/Tt)*(1-exp(-Tt))-b(3)*exp(-Tt);
NSleastsqr.m | Fungsi : menghitung jumlah kuadrat selisih tanpa bobot antara data asli dan data hasil model Nelson-Siegel % b : parameter Nelson Siegel function sieg=NSleastsqr(b) global W x_real y_real nk parsi for i=1:nk Tt=x_real(i)/b(4); parsi(i)=b(1)+(b(2)+b(3))*(1/Tt)*(1-exp(-Tt))-b(3)*exp(-Tt); end; P=y_real-transpose(parsi); sieg=transpose(P)*P; NSSegmenPlot.m | Fungsi : membentuk plot setiap segmen parameter NelsonSiegel % x1 : vektor range x (maturity time) % b : parameter Nelson Siegel function k=NSSegmenPlot(x1,b) figure; Tt1=x1/b(4); for i=1:length(Tt1) NSseg0(i)=b(1); NSseg1(i)=b(2)*(1/Tt1(i))*(1-exp(-Tt1(i))); NSseg2(i)=b(3)*(1/Tt1(i))*(1-exp(-Tt1(i)))-b(3)*exp(-Tt1(i)); end plot(Tt1,NSseg0); hold on plot(Tt1,NSseg1,'--k','LineWidth',3); xlabel('Time to Maturity in Years'); ylabel('Yield %'); title('Grafik Setiap Segmen Nelson Siegel');
47
plot(Tt1,NSseg2,'--r'); h = legend('Segmen beta 0','Segmen beta 1','Segmen beta 2',4); hold off k=1;
bspline.m | Fungsi : menghitung nilai b-spline kubik % t : matriks titik subselang x % x : nilai x (maturity time) yang dicari nilai splinenya % i : urutan subselang spline function b = bspline(x,i) global t; if ((x>=t(i))&(x
=t(i+1))&(x=t(i+2))&(x=t(i+3))&(x
48
LAMPIRAN B DATA PERIODE 30 MARET - 3 APRIL 2009
49
LAMPIRAN C YIELD CURVE DENGAN MENGGUNAKAN DATA ASLI
Tanggal Pelaporan 02 Maret 09
Tanggal Pelaporan 10 Maret 09
50
Tanggal Pelaporan 16 Maret 09
Tanggal Pelaporan 23 Maret 09
Tanggal Pelaporan 30 Maret 09
51
Tanggal Pelaporan 13 April 2009
Tanggal Pelaporan 20 April 2009
Tanggal Pelaporan 27 April 2009
52
Tanggal Pelaporan 11 Mei 2009
Tanggal Pelaporan 18 Mei 2009
Tanggal Pelaporan 25 Mei 2009
53
LAMPIRAN D YIELD CURVE DENGAN MENGGUNAKAN DATA HASIL SARINGAN
Tanggal Pelaporan 02 Maret 09
Tanggal Pelaporan 10 Maret 09
54
Tanggal Pelaporan 16 Maret 2009
Tanggal Pelaporan 23 Maret 2009
Tanggal Pelaporan 30 Maret 2009
55
Tanggal Pelaporan 13 April 2009
Tanggal Pelaporan 20 April 2009
Tanggal Pelaporan 27 April 2009
56
Tanggal Pelaporan 11 Mei 2009
Tanggal Pelaporan 18 Mei 2009
Tanggal Pelaporan 25 Mei 2009
57
LAMPIRAN E PARAMETER MODEL DENGAN MENGGUNAKAN DATA ASLI Tanggal Pelaporan
McCulloch
Nelson-Siegel
a1
a2
a3
a4
a5
a6
a7
a8
!0
!1
!2
!
02 Maret 2009
7.8986
9.2427
12.6194
12.2167
12.6376
18.6442
-2.3607
-
13.8577
-4.7678
7.4026E-06
1.7253
10 Maret 2009
-14.5783
13.5034
8.7213
13.5836
10.7028
22.5518
-9.9381
-
12.2062
-7.7486
1.4798E-05
0.1334
16 Maret 2009
94.5127
0.5830
14.5429
10.2646
13.1953
13.2360
16.1487
8.3420
11.6689
3.9073E+05
-3.9077E+05
0.0182
23 Maret 2009
0.2868
15.1222
7.9979
12.6014
9.7475
25.9287
-30.3917
-
14.1541
-2.0205
-7.5608
2.7757
30 Maret 2009
15.7606
6.2185
16.2354
8.9808
11.7020
11.0094
16.5618
-1.6723
11.0158
-5.0241
8.8614
0.6787
06 April 2009
-16.0277
13.7104
9.5611
11.0954
10.7171
12.2056
13.4182
10.4564
11.1216
-4.12E+00
2.6493
0.2812
13 April 2009
48.0726
3.1952
12.1385
10.1990
7.9313
23.5725
-25.0955
-
11.4088
1.8518
-9.2171
0.5338
20 April 2009
-22.4806
15.4735
10.2125
9.7318
9.6856
19.0854
-12.8700
-
10.3211
-3.8871
6.5828
0.6088
27 April 2009
-33.2156
13.2237
9.3130
12.2449
10.6479
15.2991
2.4888
-
11.4675
-10.8421
6.8508
0.3196
11 Mei 2009
-81.6017
26.8599
-1.0237
15.2913
6.9077
16.8372
1.8326
44.5592
9.3324
-68.8532
83.2407
0.0750
18 Mei 2009
-55.8078
21.8681
2.5321
13.1019
-0.2151
41.1290
-80.3651
-
10.7934
-10.7934
-0.0543
0.0951
25 Mei 2009
-29.1671
16.8217
4.0120
12.2455
8.6046
11.0928
19.9544
-14.0641
10.1585
-10.1585
-0.0080
0.0261
58
LAMPIRAN F PARAMETER MODEL DENGAN MENGGUNAKAN DATA HASIL SARINGAN Tanggal Pelaporan
McCulloch
a1
a2
a3
a4
Nelson-Siegel
a5
a6
a7
02 Maret 2009
5.8194
9.8845
12.2897
12.1504
12.9892
17.4154
6.2666
10 Maret 2009
-2.8746
10.6810
9.9692
12.2259
13.3723
16.7237
8.4742
16 Maret 2009
-11.1015
14.6858
6.9742
12.1584
11.3578
15.2804
11.9137
23 Maret 2009
14.3267
7.3153
12.1406
10.6753
14.7389
8.2726
29.6782
30 Maret 2009
10.1761
7.8929
11.3721
10.7720
13.0252
11.9449
14.9916
06 April 2009
-0.2708
9.6808
10.2684
11.3046
11.8142
13.9231
9.0932
13 April 2009
24.3829
6.9241
10.2583
10.7464
12.5621
12.0319
15.0484
20 April 2009
4.6992
8.5119
10.6055
10.9094
12.2278
12.1601
13.8126
27 April 2009
-18.5734
9.4156
10.8461
11.3219
12.1919
12.3736
12.9559
11 Mei 2009
5.2820
8.5286
9.3198
10.4994
9.9872
13.6213
9.2816
18 Mei 2009
2.7023
8.8577
9.6791
9.9667
11.5128
12.5919
12.3824
25 Mei 2009
-19.8952
15.3207
4.8523
11.6911
9.3274
13.6766
8.2700
a8 23.0119 22.3790 26.0445
!0
!1
!2
!
14.0802
-4.8517
1.53E-03
2.1758
14.1243
-5.9499
1.05E-03
1.3963
15.6166
-5.3448
-6.7834
2.3784
13.2034
-4.1129
-3.65E-06
2.9772
12.9788
-4.3591
8.08E-04
2.4870
12.4163
-4.3846
1.28E-03
1.7367
12.7547
-0.1881
-1.15E+01
0.9319
12.5749
-4.5048
4.72E-05
2.4134
12.1114
-8.4950
9.21E-05
0.5811
12.3220
-5.0494
0.0017
2.3799
12.1327
-4.3762
1.41E-04
2.7743
11.4731
-3.76E+00
0.0003
2.0033
!
59