Sunteți pe pagina 1din 5

%**************************************************************************

% This is the Matlab code to detect bubbles using the testing procedure in Phillips, Shi and Yu
(2015). We thank Dr. Shuping Shi at Macquarie University for technical support.

% *************************************************************************

% First, we calculate critical value sequences for the GSADF statistic

clear all

close all

clc

format short

qe=[0.90;0.95;0.99];

tic;

m=2000;

T=2183;

r0=0.01+1.8/sqrt(T);

swindow0=floor(r0*T);

dim=T-swindow0+1;

%% %%%% DATA GENERATING PROCESS %%%%%%

SI=1;

randn('seed',SI);

e=randn(T,m);

a=T^(-1);

y=cumsum(e+a);

%% THE GENERALIZED SUP ADF TEST %%%%%%

gsadf=ones(m,1);

for j=1:1:m;
sadfs=zeros(dim,1);

for r2=swindow0:1:T;

dim0=r2-swindow0+1;

rwadft=zeros(dim0,1);

for r1=1:1:dim0;

rwadft(r1)= ADF_FL(y(r1:r2,j),0,1);

end;

sadfs(r2-swindow0+1)=max(rwadft);

end;

gsadf(j)=max(sadfs);

end;

quantile_gsadf=quantile(gsadf,qe);

filename = 'CV_GSADF.xlsx';

xlswrite(filename,gsadf,1,'A1:A2000');

disp([qe quantile_gsadf]);

% Second, we calculate critical value sequences for the BSADF statistic

clear all

close all

clc

format short

tic;

qe=[0.90;0.95;0.99];

m=2000;

T=2183;

r0=0.01+1.8/sqrt(T);
swindow0=floor(r0*T);

dim=T-swindow0+1;

Msadfs=zeros(m,dim);

for r2=swindow0:1:T;

SI=1;

randn('seed',SI);

e=randn(r2,m);

a=r2^(-1);

y=cumsum(e+a);

%% THE SUP ADF TEST %%%%%%

badfs=zeros(r2-swindow0+1,m);

for j=1:1:m;

for r1=1:1:r2-swindow0+1;

badfs(r1,j)= ADF_FL(y(r1:r2,j),0,1);

end;

end;

sadfs=max(badfs);

Msadfs(:,r2-swindow0+1)=sadfs';

end;

quantile_bsadfs=quantile(Msadfs,qe);

toc;

dlmwrite('CV_BSADF.txt', [qe quantile_bsadfs],'-append', 'delimiter', '\t','precision', '%14.7f')

type CV_BSADF.txt;
% Third, we calculate sample sequences for the GSADF/BSADF statistic

clear all

close all

clc

format short

SPDV=xlsread('D:\dataset.xlsx');

y=price;

T=length(y);

r0=0.01+1.8/sqrt(T);

swindow0=floor(r0*T);

dim=T-swindow0+1;

%% THE SUP ADF TEST %%%%%%

badfs=zeros(T-swindow0+1,1);

for i=swindow0:1:T;

badfs(i-swindow0+1,1)= ADF_FL(y(1:i,1),0,1);

end;

sadf=max(badfs);

display('The sup ADF statistic is'); sadf

figure (1)

plot(badfs);

title('The backward ADF sequence','FontSize',10);

pause
%% THE GENERALIZED SUP ADF TEST %%%%%%

r2=swindow0:1:T;

r2=r2';

rw=r2-swindow0+1;

bsadfs=zeros(1,dim);

for v=1:1:size(r2,1);

swindow=swindow0:1:r2(v);

swindow=swindow';

r1=r2(v)-swindow+1;

rwadft=zeros(size(swindow,1),1);

for i=1:1:size(swindow,1);

rwadft(i)= ADF_FL(y(r1(i):r2(v),1),0,1);

end;

bsadfs(1,v)=max(rwadft);

end;

gsadf=max(bsadfs(1,:),2);

display('The generalized sup ADF statistic is'); gsadf

figure (2)

plot(bsadfs);

title('The backward SADF sequence','FontSize',10);

S-ar putea să vă placă și