new;
//cls;


for g(1,3,1);

if g eq 1;
y1  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B2:I292",2,"");
y2  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B3:J293",4,"");
y3  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B3:J293",6,"");
y4  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B3:E293",8,"");

x1 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B2:I292",1,"");
x2 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B3:J293",3,"");
x3 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B3:J293",5,"");
x4 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Emerging.xls","B3:E293",7,"");


y2 = y2[.,1:cols(y2)-1];
x2 = x2[.,1:cols(x2)-1];
y3 = y3[.,1:cols(y3)-1];
x3 = x3[.,1:cols(x3)-1];

elseif g eq 2;	
y1  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B2:U292",2,"");
y2  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B3:V293",4,"");
y3  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B3:W293",6,"");
y4  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B3:U293",8,"");

x1 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B2:U292",1,"");
x2 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B3:V293",3,"");
x4 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B3:U293",7,"");
x3 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Developed.xls","B3:W293",5,"");

y2 = y2[.,1:17]~y2[.,19:cols(y2)];
x2 = x2[.,1:17]~x2[.,19:cols(x2)];
x3 = x3[.,1:12]~x3[.,14:18]~x3[.,20:cols(x3)];
y3 = y3[.,1:12]~y3[.,14:18]~y3[.,20:cols(y3)];

elseif g eq 3;

y1  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B2:AC292",2,"");
y2  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B3:AE293",4,"");
y3  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B3:AF293",6,"");
y4  = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B3:Y293",8,"");

x1 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B2:AC292",1,"");
x2 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B3:AE293",3,"");
x3 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B3:AF293",5,"");
x4 = xlsreadm("C:\\Users\\nek-hka\\Dropbox\\08 One factor\\Application2\\Global.xls","B3:Y293",7,"");

y2 = y2[.,1:23]~y2[.,25:29];
x2 = x2[.,1:23]~x2[.,25:29];
y3 = y3[.,1:14]~y3[.,16:24]~y3[.,26:30];
x3 = x3[.,1:14]~x3[.,16:24]~x3[.,26:30];
endif;


mod  = 2;                            /* 0 = nothing, 1 = const, 2 = trend */   

for xv(1,5,1);
if      xv eq 1; x = ln(1+y4[2:rows(y4),.]/100);
elseif  xv eq 2; x = ln(x1[1:rows(x1)-1,.]);      // DP ratio
elseif  xv eq 3; x = ln(x2[1:rows(x2)-1,.]);      // EP ratio
elseif  xv eq 4; x = x3[1:rows(x3)-1,.];          // SR
elseif  xv eq 5; x = x4[1:rows(x4)-1,.];          // TS
endif;

t = rows(x);
n = cols(x);

lags  = 1;
i     = 1;
t     = rows(x); 
tx    = zeros(1,n);
tf    = zeros(1,n);
bn    = zeros(1,n);
bx    = zeros(1,n);
xm    = mean_n(x,n);
px    = zeros(n,1);
pf    = zeros(n,1);
pmax  = int(4*(t/100)^(2/9));
do until i > n;

if lags eq 1; 
pf[i] = ic_f(x[.,i],xm,mod,pmax);
px[i] = ic_x(x[.,i],mod,pmax);
endif;
if lags eq 2; 
pf[i] = int(2*(t/100)^(2/9));                            
px[i] = int(2*(t/100)^(2/9));                            
endif;

{tf[i],bn[i]} = t_f(x[.,i],xm,mod,pf[i]);  // CIPS test
{tx[i],bx[i]} = t_x(x[.,i],mod,px[i]); // IPS test

i = i + 1;
endo;

tfn   = meanc(tf');
bnn   = meanc(bn');
bxn   = meanc(bx');
{m,v} = mom(mod);
txn   = sqrt(n)*(meanc(tx')-m)./sqrt(v);


/* printing options */
format/m1/rd 8,3;

bnn+1;; tfn;//; cdfnc(abs(txn));

endfor;
endfor;


/* procs */





proc(1) = tr(tr,mod);
local k1,k2;

{k1,k2} = kval(mod);                      
if tr lt k1; tr = k1; endif;
if tr gt k2; tr = k2; endif;

retp(tr);
endp;



proc(2) = kval(mod);
local k1,k2;
 
k1 = { -6.19 -6.42 };
k2 = { 2.61 1.70 };

retp(k1[mod],k2[mod]);
endp;



proc(1) = diff(x,k);
if k eq 0; retp(x); endif;
retp(trimr(x,k,0)-trimr(lagn(x,k),k,0));
endp;



proc(1) = mean_n(x,n);
local j,t,k,xm;

if cols(x) eq n; retp(meanc(x')); endif;

j  = 1;
t  = rows(x);
k  = cols(x)/n;
xm = zeros(t,k);
do until j > k;
xm[.,j] = meanc(submat(x,seqa(1,1,t),seqa(j,k,n))');
j       = j + 1;
endo;

retp(xm);
endp;




proc (3) = lagt_f(y,f,p);
local t,j,x,r,dyl,dfl,yl,fl,dy,t1,t2;

t  = rows(y);
r  = cols(f);
t1 = p+2;
t2 = t;

j   = 0;	
dfl = zeros(t-p-1,(p+1)*r); 	
if p; dyl  = zeros(t-p-1,p); endif;				
do until j < -p;
dfl[.,1+(-j)*r:(-j+1)*r] = f[t1+j:t2+j,.] - f[t1+j-1:t2+j-1,.];
if j < 0 and p; dyl[.,-j] = y[t1+j:t2+j] - y[t1+j-1:t2+j-1]; endif;
j = j - 1;
endo;

yl  = y[t1-1:t2-1];
dy  = y[t1:t2]-yl;
fl  = f[t1-1:t2-1,.];
if p ne 0; x = (fl~dfl~dyl); endif;
if p eq 0; x = (fl~dfl);     endif;

retp(dy,yl,x);
endp;


proc (2) = t_f(y,f,mod,p);
local t,l,s,b,e,dy,yl,z;

t         = rows(y);
l         = t-p-1;
{dy,yl,z} = lagt_f(y,f,p);

if mod eq 1; z = z~ones(l,1);             endif;
if mod eq 2; z = z~ones(l,1)~seqa(1,1,l); endif;

b = inv((yl~z)'(yl~z))*((yl~z)'dy); 
e = dy - (yl~z)*b;
s = (e'e)/l;
s = diag(sqrt(s*inv((yl~z)'(yl~z))));
s = b[1]/s[1];

retp(s,b[1]);
endp;



proc (1) = ic_f(y,f,mod,pmax);
local l,t,s,b,e,res,bic,p,yl,dy,z;

t   = rows(y);
res = zeros(1,2);

p = pmax; 
do while p gt -1;

{dy,yl,z} = lagt_f(y,f,p);
l         = t-p-1;
if mod eq 0; z = z~yl;                       endif;
if mod eq 1; z = z~yl~ones(l,1);             endif;
if mod eq 2; z = z~yl~ones(l,1)~seqa(1,1,l); endif;

b   = inv(z'z)*(z'dy); 
e   = dy - z*b;
s   = (e'e)/l;
bic = ln(s)+ln(t)*rows(b)/t;
//bic = ln(s)+2*rows(b)/t;
res = res|(bic~p);

p = p - 1;
endo;

res = res[2:rows(res),.];
res = sortc(res,1);

retp(res[1,2]);
endp;



proc (2) = t_x(y,mod,p);
local t,l,v,s,b,e,et,dy,z;

t      = rows(y);
l      = t-p-1;
{dy,z} = lagt_x(y,p);

if mod eq 1; z = z~ones(l,1);             endif;
if mod eq 2; z = z~ones(l,1)~seqa(1,1,l); endif;

b  = inv(z'z)*(z'dy);
e  = dy - z*b;
s  = (e'e)/l;
s  = diag(sqrt(s*inv(z'z)));
et = b[1]/s[1];

retp(et,b[1]);
endp;



proc (1) = ic_x(y,mod,pmax);
local l,t,s,b,e,res,bic,p,yl,dy,z;

t   = rows(y);
res = zeros(1,2);

p = pmax; 
do while p gt -1;

{dy,z} = lagt_x(y,p);
l      = t-p-1;
if mod eq 1; z = z~ones(l,1);             endif;
if mod eq 2; z = z~ones(l,1)~seqa(1,1,l); endif;

b   = inv(z'z)*(z'dy); 
e   = dy - z*b;
s   = (e'e)/l;
bic = ln(s)+ln(t)*rows(b)/t;
res = res|(bic~p);

p = p - 1;
endo;

res = res[2:rows(res),.];
res = sortc(res,1);

retp(res[1,2]);
endp;




proc (2) = mom(mod);
local mu,var;

mu  = { -1.532, -2.177 };
var = {  0.735,  0.597 };

retp(mu[mod],var[mod]);
endp;


proc (2) = lagt_x(y,p);
local t,j,x,dyl,yl,dy,t1,t2;

t  = rows(y);
t1 = p+2;
t2 = t;

j = 0;	
if p; dyl = zeros(t-p-1,p); endif;			
do until j < -p;
if j < 0 and p; dyl[.,-j] = y[t1+j:t2+j] - y[t1+j-1:t2+j-1]; endif;
j = j - 1;
endo;

yl = y[t1-1:t2-1];
dy = y[t1:t2]-yl;
if p ne 0; x = (yl~dyl); endif;
if p eq 0; x = yl;       endif;

retp(dy,x);
endp;
