PROGRAMS USED TO REPLICATE THE BORDO TABLES; ********************************************* *************** TABLE 1 ********************* ********************************************* THE FOLLOWING MACRO PROGRAM IS USED TO REPLICATE PARTS A-C OF THE TABLE, CHANGING ONLY THE VARIABLES USED AND CREATED BY THE MACRO TO GENERATE THE PROPER RESULTS; ****START OF PROGRAM****; filename in 'h1HKD00.BORDO.cntl'; %macro table1a(var=, startmn=, start=, end=); data growth;set in.table1; time+1; %do i= 1 %to 7; %let v=%scan(&var,&i); ************************** THE DIFFERENT VARIABLES TO BE CALLED AND GENERATED ARE INSERTED HERE. **************************; %end; %do k= 1 %to 7; %let v=%scan(&var,&k); %do j= 1 %to 6; %let s=%scan(&startmn, &j); %let e=%scan(&end, &j); proc means data=growth(keep= year &v.gro where=(&s<= year<=&e)) noprint n std; var &v.gro; output out=&v.std&j n=&v.n&j std=&v.sd&j ; %let s1=%scan(&start, &j); %let e1=%scan(&end, &j); proc reg data=growth(keep= year time &v.log where=(&s1<=year<=&e1)) noprint outest=&v&j; model &v.log= time; %end; %end; data allreg;set %do l=1 %to 7; %let x=%scan(&var,&l); %do m=1 %to 6; &x&m %end; %end; ; proc print data=allreg; data allmean;merge %do n=1 %to 7; %let y=%scan(&var,&n); %do o=1 %to 6; &y.std&o(drop=_type_ _freq_) %end; %end; ; proc print data=allmean; %mend; %table1a(var=us uk ge fr jp ca it, startmn= 1881 1920 1947 1947 1960 1975, start= 1881 1919 1946 1946 1959 1974, end= 1913 1938 1970 1958 1970 1989); ****END OF PROGRAM**** FOR PARTS A-C, THE MEAN IS THE COEFFICIENT FROM THE TIME TREND REGRESSION AS FOOTNOTED IN THE TABLE. THE STANDARD DEVIATION IS THE SAME STANDARD DEVIATION FROM THE MEANS PROCEDURE. THE FOLLOWING LISTS THE DIFFERENT VARIABLES USED FOR SECTIONS A-C OF TABLE 1 AND ALSO ANY SPECIAL CONSIDERATIONS. *******PART A--INFLATION PGNP*********** &v.log = (log(defl_&v)); &v.gro = dif(log(defl_&v)); NOTE: DEFL_2 WAS USED FOR JAPAN. THUS, THIS SERIES FROM THE JAPAN SECTION OF THE DATA FILE MUST BE RENAMED DEFL_JP IN ORDER TO WORK IN THE PROGRAM. *******PART B--REAL PER CAPITA GROWTH*** &V.LOG = (LOG(YR_&V/POP_&V)); &V.GRO = DIF(LOG(YR_&V/POP_&V)); *******PART C--MONEY GROWTH********** &V.LOG = (LOG(M_&V)); &V.GRO = DIF(LOG(M_&V)); THE FOLLOWING MACRO PROGRAM IS USED TO REPLICATE PARTS D-I OF THE TABLE, CHANGING ONLY THE VARIABLES USED AND CREATED BY THE MACRO TO GENERATE THE PROPER RESULTS; ****START OF PROGRAM****; filename in 'h1HKD00.BORDO.cntl'; %macro table1a(var=, start=, end=); data growth;set in.table1; time+1; %do i= 1 %to 7; %let v=%scan(&var,&i); ************************** THE DIFFERENT VARIABLES TO BE CALLED AND GENERATED ARE INSERTED HERE. **************************; %end; %do k= 1 %to 7; %let v=%scan(&var,&k); %do j= 1 %to 6; %let s=%scan(&start, &j); %let e=%scan(&end, &j); PROC MEANS DATA=GROWTH(KEEP= YEAR &V.RTE WHERE=(&S<= YEAR<=&E)) NOPRINT N STD MEAN; VAR &V.RTE; OUTPUT OUT=&V.STD&J N=&V.N&J STD=&V.SD&J MEAN=&V.MN&J; %end; %end; data allmean;merge %do n=1 %to 7; %let y=%scan(&var,&n); %do o=1 %to 6; &y.std&o(drop=_type_ _freq_) %end; %end; ; proc print data=allmean; %mend; %table1a(var=us uk ge fr jp ca it, start= 1881 1919 1946 1946 1959 1974, end= 1913 1938 1970 1958 1970 1989); ****END OF PROGRAM**** FOR PARTS D-I, THE MEAN AND THE STANDARD DEVIATION ARE FROM THE MEANS PROCEDURE. THE FOLLOWING LISTS THE DIFFERENT VARIABLES USED FOR SECTIONS D-I OF TABLE 1 AND ALSO ANY SPECIAL CONSIDERATIONS. *******PART D--SHORT TERM INTEREST RATE**** &V.RTE = ( IS_&V); NOTE: ITALY IS EXCLUDED SINCE THERE IS NO SHORT TERM INTEREST RATE DATA. THUS, IT MUST BE EXCLUDED FROM THE MACRO VARIABLE IN THE MACRO CALL AND THE COUNTRY INDEXES MUST BE CHANGED TO GO FROM 1 TO 6 IN THE MACRO. *******PART E--LONG TERM INTEREST RATE****** &V.RTE = ( IL_&V); *******PART F--REAL SHORT TERM INTEREST RATE** &V.NOM = ( IS_&V); &V.CPI = DIF(LOG(CPI_&V)))*100; &V.RTE = &V.NOM - &V.CPI; NOTE: 1) ITALY IS EXCLUDED SINCE THERE IS NO SHORT TERM INTEREST RATE DATA. THUS, IT MUST BE EXCLUDED FROM THE MACRO VARIABLE IN THE MACRO CALL AND THE COUNTRY INDEXES MUST BE CHANGED TO GO FROM 1 TO 6 IN THE MACRO. 2) DEFL_2 IS USED FOR JAPAN IN PLACE OF CPI. THUS, THIS SERIES FROM THE JAPAN SECTION OF THE DATA FILE MUST BE RENAMED CPI_JP IN ORDER FOR IT TO WORK IN THE PROGRAM. *******PART G--REAL LONG TERM INTEREST RATE*** &V.NOM = ( IL_&V); &V.CPI = DIF(LOG(CPI_&V)))*100; &V.RTE = &V.NOM - &V.CPI; *******PART H--NOMINAL EXCHANGE RATE********** &V.RTE = ABS(DIF(LOG(E_&V))); NOTE: NTRWE IS USED FOR THE UNITED STATES AS FOOTNOTED IN THE TABLE. THUS, THIS SERIES MUST BE RENAMED E_US IN ORDER TO WORK IN THE PROGRAM. *******PART I--REAL EXCHANGE RATE************* &V.RTE = ABS(DIF(LOG(CPI_US*E_&V/CPI_&V))); NOTE: 1) DEFL_2 IS USED FOR JAPAN IN PLACE OF CPI. THUS, THIS SERIES FROM THE JAPAN SECTION OF THE DATA FILE MUST BE RENAMED CPI_JP IN ORDER FOR IT TO WORK IN THE PROGRAM. 2) RTRWE IS USED FOR THE UNITED STATES AS FOOTNOTED IN THE TABLE. THUS, THIS SERIES MUST BE RENAMED E_US IN ORDER TO WORK IN THE PROGRAM. THE CONVERGENCE MEASURE IS CALCULATED AS THE MEAN OF THE GRAND MEAN MINUS THE INDIVIDUAL COUNTRY MEANS. ***************************************************** *************** TABLE 2 ***************************** ***************************************************** THIS TABLE IS REPLICATED IN MICRO TSP. THE DELTA LOG OF THE CPI FOR EACH COUNTRY WAS REGRESSED ON ITS LAG AND A CONSTANT. EXAMPLE: VARIABLES : X = CPI FOR A COUNTRY L_X = LOG(X) DL_X = D(L_X) DL_X1 = LAG(DL_X) REGRESSION COMMAND: LS DL_X C DL_X1 HOWEVER, JAPAN USES THE DELTA LOG OF DEFL_2 FOR THE GOLD STANDARD PERIOD AND THE DELTA LOG OF CPI_2 FOR ALL OTHER PERIODS. THE T-STATISTIC IS COMPUTED AS (1-AR1 COEFFICIENT)/STANDARD ERROR OF AR1 COEFFICIENT. THE FOLLOWING TIME PERIODS ARE USED. GOLD STANDARD : 1881-1913 INTERWAR : 1919-1938 BRETTON WOODS(TOTAL) : 1946-1970 (PRECONVERTIBLE): 1946-1958 (CONVERTIBLE) : 1959-1970 FLOATING EXCHANGE : 1973-1989 POST WORLD WAR II : 1946-1989 ***************************************************** *************** TABLE 3 ***************************** ***************************************************** THIS TABLE IS CREATED USING THE EXECUTABLE FORTRAN FILE ENTITLED MSKFPC AND ITS OUTPUT FILES. TO RUN THIS FILE (MSKFPC) TWO INPUT FILES ARE REQUIRED. 1) INPUTCRD.DAT : CONTAINS ALL CONTROL PARAMETERS TO BE PROVIDED BY THE USER. 2) INPUTY.DAT : CONTAINS THE OBSERVATIONS OF ENDOGENOUS VARIABLE Y. *******INPUTCRD.DAT************************* INPUTCRD.DAT CONTAINS ALL THE INFORMATION NEEDED TO RUN THE MSKFPC PROGRAM. IT IS IN THE FORM OF 10 LINES OF PARAMETER VALUES. ONLY A FEW OF THESE VALUES ARE CHANGED. LISTED BELOW IS THE FILE WITH VARIABLES IN PLACE OF THE VALUES FOR THOSE PARAMETERS THAT ARE CHANGED. THESE VARIABLES ARE DEFINED AFTER THE FILE LISTING. WHEN IMPLEMENTING THIS PROGRAM THE APPROPRIATE VALUES ARE ENTERED INTO THE FILE USING A TEXT EDITOR. ****START OF FILE**** NTOT NFIRST NLAST 0 5 0 6 3 2 2 0 1 SYEAR 0 0 0 0 1 2 0 1 2 0 0 0 0 0 0 16.0 2.5 0.5 0.95 0.025 0.975 1.0 1.0 1.0 1.0 1.0 1.0 1.0 0.1 0.5 16.0 0.1 0.5 0.95 0.95 ****END OF FILE**** NTOT = NUMBER OF TOTAL OBSERVATIONS TO BE READ FROM INPUTY.DAT. NFIRST = THE FIRST NFIRST OBSERVATONS ARE DELETED BEFORE RUNNING THE PROGRAM. NLAST = THE LAST NLAST OBSERVATIONS ARE DELETED BEFORE RUNNING THE PROGRAM. NOTE : MSKFPC IS RUN OVER THE LONGEST CONSECUTIVE TIME PERIOD FOR WHICH DATA ARE AVAILABLE. THE RESULTS ARE DIVIDED INTO THE APPROPRIATE TIME PERIODS LATER. *******INPUTY.DAT*************************** THIS FILE CONTAINS THE VALUES OF THE GROWTH AND INFLATION MEASURES TO BE RUN THROUGH THE MSKFPC PROGRAM. THEY ARE AS FOLLOWS. GROWTH = DY.DAT SERIES FOR EACH COUNTRY WHICH ARE REAL INCOME GROWTH RATES. INFLATION = DP.DAT SERIES FOR EACH COUNTRY WHICH ARE INFLATION RATES EXCEPT FOR JAPAN WHICH USES DEFL_2 AND FOR THE U.S. WHICH USES THE DEFLATOR SERIES CREATED BY (YR_2/Y_2)*100. THE DELTA LOGS OF THESE SERIES ARE USED AS THE INFLATION RATES. THERE ARE MANY OUTPUT FILES CREATED BY MSKFPC THAT ARE AUTOMATICALLY SAVED TO THE C DRIVE. HOWEVER, THE ONLY ONE NECESSARY TO REPLICATE THE TABLE IS MSKFPAR.OUT. *******MSKFPAR.OUT*********************** THIS FILE CONTAINS THE TIME-PATH RECURSIVE PARAMETER VECTOR AND ITS ESTIMATED STANDARD ERROR. THESE ARE THE DATA THAT ARE USED TO CREATE THE FINAL RESULTS. THE REST OF THE DATA MANIPULATION IS DONE IN MICRO TSP. THE OUTPUT FROM MSKFPAR.OUT IS READ INTO TSP AND MANIPULATED USING A TSP BATCH PROGRAM CALLED MSKFTSP. *******MSKFTSP*************************** THE FOLLOWING IS THE BATCH PROGRAM; IT IS CHANGED SLIGHTLY ACCORDING TO THE DIFFERENT TIME PERIODS TO BE READ IN. VARIABLES HAVE BEEN INSERTED IN PLACE OF VALUES AND ARE DEFINED AFTER THE LISTING. ****START OF PROGRAM**** CREATE A SYEAR EYEAR READ(O) MSKFPAR.OUT YEAR L SL G SG GENR GAM = (D(L)-G) GENR RHO = D(G) GENR SUB = SQR((GAM+RHO)ª2) ****END OF PROGRAM**** SYEAR = START YEAR OF OUTPUT FROM MSKFPAR.OUT EYEAR = END YEAR OF OUTPUT FROM MSKFPAR.OUT AFTER RUNNING MSKFTSP, THE VARIABLE SUB IS CHECKED FOR OUTLIERS AT THE BEGINNING OF THE SAMPLE WHICH ARE DELETED. AN OUTLIER IS GENERALLY AT THE BEGINNING OF THE SAMPLE AND IS OBVIOUSLY INCONSISTENT WITH THE OTHER OBSERVATIONS. AFTER DELETING THE OUTLIERS, THE SAMPLE IS THEN CHANGED TO MATCH THE TIME PERIODS OF THE TABLE. THE VALUES OF THE TABLE ARE GENERATED BY RUNNING A "COVA" COMMAND ON THE VARIABLE SUB TO OBTAIN ITS MEAN. THIS IS THE MEAN ABSOLUTE ERROR USING THE MULTI-STATE KALMAN FILTER REPORTED IN THE TABLE. ***************************************** *************TABLE 4********************* ***************************************** THIS TABLE IS REPLICATED USING THE FOLLOWING GAUSS PROGRAM. IN THIS COPY OF THE PROGRAM, HOWEVER, SOME SYMBOLS WERE CHANGED FROM THE ORIGINAL. THE CARAT SYMBOLS WERE CHANGED TO DOUBLE ASTERISKS (**) AND THE BRACKETS WERE CHANGED TO PARENTHESIS-BARS ( (|, |) ). ****start of program**** #lineson library nlsys,pgraph; #include nlsys.arc;nlset; ab1=ones(40,1); ab1=cumsumc(ab1); /* Starting Values for System of equations */ x0=ones(4,1); x0(|1,1|) = 4; x0(|2,1|) = 3; x0(|3,1|) = 7; x0(|4,1|) = -1; n=2; /*==========INLEZEN=DATA============*/ load y(||) = a:dy.dat; load p(||) = a:dp.dat; nob = rows(y); b1=zeros(2*n+1,1); b2=b1; s1=0;s2=0; u1 = zeros(nob-n,1); u2 = zeros(nob-n,1); h=zeros(2,2); cm = eye(2); eps = zeros(2,nob-n); /*======Procedure Var ==============================*/ proc(6) = var(y,p,n); local yln,pln,i,c,trend,yr,pr,mat1,b1,b2,u1,u2,v ; yln = zeros(nob-n,n); pln = zeros(nob-n,n); i = 1; do while i<= n; yln(|.,i|) = y(|1+n-i:nob-i,.|); pln(|.,i|) = p(|1+n-i:nob-i,.|); i=i+1; endo; c = ones(nob-n,1); trend = ones(nob-n,1); trend = cumsumc(trend); yr = y(|n+1:nob|); pr = p(|n+1:nob|); mat1 = yln~pln~c; b1 = inv(mat1'mat1)*mat1'yr; b2 = inv(mat1'mat1)*mat1'pr; u1 = yr-mat1*b1; u2 = pr-mat1*b2; v = u1~u2; h = (v'v)/(nob-n); cm(|1,2|) = h(|1,2|)/((h(|1,1|)**0.5)*(h(|2,2|))**0.5); cm(|2,1|) = h(|2,1|)/((h(|1,1|)**0.5)*(h(|2,2|))**0.5); retp(b1,b2,h,cm,u1,u2); endp; /*=====Procedure IMP-RESP======================*/ proc(4) = imprep(b1,b2,C); local i,a,T,v11,v21,v12,v22; v11= zeros(40,1); v21=v11; v12=v11; v22=v11; T=zeros(2*(n+1),2*(n+1)); i = 1; do while i<= n; T(|1,i|) = b1(|i,1|); T(|n+2,i|) = b2(|i,1|); i=i+1; endo; i = n+2; do while i <= 2*(n+1)-1; T(|1,i|) = b1(|i-1,1|); T(|n+2,i|)=b2(|i-1,1|); i=i+1; endo; i = 2; do while i<= n+1; T(|i,i-1|)=1; i=i+1; endo; i=n+3; do while i<= 2*(n+1); T(|i,i-1|)=1; i=i+1; endo; a = zeros(2*(n+1),1); a(|1,1|) = 1*C(|1,1|); a(|n+2,1|) = 1*C(|2,1|); v11(|1,1|) = a(|1,1|); v21(|1,1|) = a(|n+2,1|); i=2; do while i<=40; a=T*a; v11(|i,1|) = a(|1,1|); v21(|i,1|) = a(|n+2,1|); i=i+1; endo; a = zeros(2*(n+1),1); a(|1,1|) = 1*C(|1,2|); a(|n+2,1|) = 1*C(|2,2|); v12(|1,1|) = a(|1,1|); v22(|1,1|) = a(|n+2,1|); i=2; do while i<=40; a=T*a; v12(|i,1|) = a(|1,1|); v22(|i,1|) = a(|n+2,1|); i=i+1; endo; retp(v11,v21,v12,v22); endp; /*==============Solve System of Equations============*/ proc f(var); local c11,c12,c21,c22,eqns; c11=var(|1|); c12=var(|2|); c21=var(|3|); c22=var(|4|); eqns = c11**2 + c12**2 -CM(|1,1|) | C11*C21 + C12*C22 -CM(|1,2|) | c21**2 + c22**2 -CM(|2,2|) | s1*c11 + s2*c21; retp( eqns ); endp; /*=======Decomposition of Variance======*/ proc(3) = decomp(w11,w12); local i,totv,s,p1,p2; totv = zeros(10,1); s = totv; p1 = totv; p2 = p1; totv(|1,1|) = (w11(|1,1|))**2 + (w12(|1,1|))**2; s(|1,1|) = (w11(|1,1|))**2; p1(|1,1|) = 100*s(|1,1|)/totv(|1,1|); p2(|1,1|) = 100-p1(|1,1|); i=2; do while i<= 10; totv(|i,1|) = totv(|i-1,1|) + (w11(|i,1|))**2 + (w12(|i,1|))**2; s(|i,1|) = s(|i-1,1|) + (w11(|i,1|))**2; p1(|i,1|) = 100*s(|i,1|)/totv(|i,1|); p2(|i,1|) = 100-p1(|i,1|); i=i+1; endo; totv=sqrt(totv); retp(totv,p1,p2); endp; /*=================INFORMATION==CRITERIA========*/ proc(0) = aic(n); local aic,sic; n = 1; do while n<=10; {b1,b2,h,cm,u1,u2} = var(y,p,n); AIC = ln(det(h)) + 2*4*n/(nob-n); print n~aic; n = n+1; endo; endp; proc(0) = sic(n); local aic,sic; n = 1; do while n<=10; {b1,b2,h,cm,u1,u2} = var(y,p,n); SIC = ln(det(h)) + 4*n*ln(nob-n)/(nob-n); print n~sic; n = n+1; endo; endp; /*==================MAIN==Program===========*/ {b1,b2,h,cm,u1,u2} = var(y,p,n); C = ones(2,2); C(|2,1|) = 0; C(|1,2|) = 0; {v11,v21,v12,v22} = imprep(b1,b2,C); s1 = sumc(v11); s2 = sumc(v12); {x,fvc,jc,tcode} = nlprt(nlsys(&f,x0)); C = zeros(2,2); C(|1,1|) = x(|1,1|); C(|1,2|) = x(|2,1|); C(|2,1|) = x(|3,1|); C(|2,2|) = x(|4,1|); CI = inv(C); /* Calculate Demand and Supply Shocks */ v = u1~u2; i=1; do while i <= nob-n; eps(|.,i|) = CI*(v(|i,.|)'); i=i+1; endo; /* Calculate Impulse Response Functions Demand and Supply Shocks */ /* Names: w11,w21,w12,w22 */ {w11,w21,w12,w22} = imprep(b1,b2,C); {totv1,p11,p21} = decomp(w11,w12); {totv2,p12,p22} = decomp(w21,w22); z11=abs(w11); z21=abs(w21); z12=abs(w12); z22=abs(w22); som11=(z11'ab1)/sumc(z11); som21=(z21'ab1)/sumc(z21); som12=(z12'ab1)/sumc(z12); som22=(z22'ab1)/sumc(z22); som11; som21; som12; som22; /* w11 = cumsumc(w11); w21 = cumsumc(w21); w12 = cumsumc(w12); w22 = cumsumc(w22); */ /*======WEGSCHRIJVEN RESULTAAT=======*/ format /rd 12,12; outwidth 132; output file = a:shocks1.dat reset; screen off; print "Temporary and Permanent Shocks: "; print " Temporary Permanent"; print eps'; print; print; output file = a:res1.dat reset; print "Decomposition of Variance"; print; print "Variance of Output Variance of Prices"; print; print "Due to (in percentages):"; print " Temporary Permanent Temporary Permanent"; format /rd 8,1; print p11~p21~p12~p22; output off; screen on; format /rd 12,12; outwidth 132; output file = a:out5.prn reset; screen off; print w11~w21~w12~w22; output off; screen on; ****end of program**** DP.DAT AND DY.DAT SERIES ARE THE INPUT FILES FOR THE GAUSS PROGRAM. IT IS RUN OVER THREE TIME PERIODS ONLY -- 1881-1913, 1919-1939, AND 1946-1989. THE ONLY OUTPUT FILE USED IN THIS TABLE IS THE SHOCKS1.DAT FILE WHICH IS AUTOMATICALLY SAVED TO THE A: DRIVE. THIS FILE CONTAINS THE VARIANCES OF THE DEMAND AND SUPPLY SHOCKS. AFTER RUNNING THE PROGRAM, THE OUTPUT FILE IS READ INTO MICRO TSP. A "COVA" COMMAND IS PERFORMED ON THE VARIABLES FROM SHOCKS1.DAT TO OBTAIN THE STANDARD DEVIATION OF THE SHOCKS. TO OBTAIN THE RESULTS FOR THE PERIODS WITHIN THE POST WORLD WAR II PERIOD, THE SAMPLE IS DIVIDED ACCORDING TO THOSE START AND END YEARS BEFORE RUNNING THE COVA. THE AGGREGATE G7 DY.DAT AND DP.DAT ARE CREATED USING THE REAL INCOME AND DEFLATOR SERIES FROM EACH COUNTRY, RESPECTIVELY. EACH SERIES IS CONVERTED TO DOLLARS BY DIVIDING BY THE EXCHANGE RATE AND WEIGHTING THEM USING THE WEIGHTS SUPPLIED FOR THE G7. THE SUM IS TAKEN TO GET THE AGGREGATE G7. THE DELTA LOG OF THESE SERIES ARE THE DY.DAT AND DP.DAT. THE G7* (WEIGHTED G7) SERIES ARE CREATED USING THE WEIGHTS CREATED IN THE FOOTNOTE TO THE TABLE. THE DISPERSION RESULTS ARE CREATED AS DESCRIBED IN THE FOOTNOTE TO THE TABLE. ***************************************** *************TABLE 5********************* ***************************************** THE FOLLOWING GAUSS PROGRAM IS USED TO CREATE TABLE 5. IN THIS COPY OF THE PROGRAM, HOWEVER, SOME SYMBOLS WERE CHANGED FROM THE ORIGINAL. THE CARAT SYMBOLS WERE CHANGED TO DOUBLE ASTERISKS (**) AND THE BRACKETS WERE CHANGED TO PARENTHESIS-BARS ( (|, |) ). IT IS BASICALLY THE SAME PROGRAM AS USED FOR TABLE 4 EXCEPT FOR A SUBTLE YET IMPORTANT CHANGE. IN THE "SOLVE SYSTEM OF EQUATIONS" SECTION, THE CM MATRIX IS CHANGED TO AN H MATRIX. ****start of program**** #lineson library nlsys,pgraph; #include nlsys.arc;nlset; ab1=ones(40,1); ab1=cumsumc(ab1); /* Starting Values for System of equations */ x0=ones(4,1); x0(|1,1|) = 4; x0(|2,1|) = 3; x0(|3,1|) = 7; x0(|4,1|) = -1; n=2; /*==========INLEZEN=DATA============*/ load y(||) = a:dy.dat; load p(||) = a:dp.dat; nob = rows(y); b1=zeros(2*n+1,1); b2=b1; s1=0;s2=0; u1 = zeros(nob-n,1); u2 = zeros(nob-n,1); h=zeros(2,2); cm = eye(2); eps = zeros(2,nob-n); /*======Procedure Var ==============================*/ proc(6) = var(y,p,n); local yln,pln,i,c,trend,yr,pr,mat1,b1,b2,u1,u2,v ; yln = zeros(nob-n,n); pln = zeros(nob-n,n); i = 1; do while i<= n; yln(|.,i|) = y(|1+n-i:nob-i,.|); pln(|.,i|) = p(|1+n-i:nob-i,.|); i=i+1; endo; c = ones(nob-n,1); trend = ones(nob-n,1); trend = cumsumc(trend); yr = y(|n+1:nob|); pr = p(|n+1:nob|); mat1 = yln~pln~c; b1 = inv(mat1'mat1)*mat1'yr; b2 = inv(mat1'mat1)*mat1'pr; u1 = yr-mat1*b1; u2 = pr-mat1*b2; v = u1~u2; h = (v'v)/(nob-n); cm(|1,2|) = h(|1,2|)/((h(|1,1|)**0.5)*(h(|2,2|))**0.5); cm(|2,1|) = h(|2,1|)/((h(|1,1|)**0.5)*(h(|2,2|))**0.5); retp(b1,b2,h,cm,u1,u2); endp; /*=====Procedure IMP-RESP======================*/ proc(4) = imprep(b1,b2,C); local i,a,T,v11,v21,v12,v22; v11= zeros(40,1); v21=v11; v12=v11; v22=v11; T=zeros(2*(n+1),2*(n+1)); i = 1; do while i<= n; T(|1,i|) = b1(|i,1|); T(|n+2,i|) = b2(|i,1|); i=i+1; endo; i = n+2; do while i <= 2*(n+1)-1; T(|1,i|) = b1(|i-1,1|); T(|n+2,i|)=b2(|i-1,1|); i=i+1; endo; i = 2; do while i<= n+1; T(|i,i-1|)=1; i=i+1; endo; i=n+3; do while i<= 2*(n+1); T(|i,i-1|)=1; i=i+1; endo; a = zeros(2*(n+1),1); a(|1,1|) = 1*C(|1,1|); a(|n+2,1|) = 1*C(|2,1|); v11(|1,1|) = a(|1,1|); v21(|1,1|) = a(|n+2,1|); i=2; do while i<=40; a=T*a; v11(|i,1|) = a(|1,1|); v21(|i,1|) = a(|n+2,1|); i=i+1; endo; a = zeros(2*(n+1),1); a(|1,1|) = 1*C(|1,2|); a(|n+2,1|) = 1*C(|2,2|); v12(|1,1|) = a(|1,1|); v22(|1,1|) = a(|n+2,1|); i=2; do while i<=40; a=T*a; v12(|i,1|) = a(|1,1|); v22(|i,1|) = a(|n+2,1|); i=i+1; endo; retp(v11,v21,v12,v22); endp; /*==============Solve System of Equations============*/ proc f(var); local c11,c12,c21,c22,eqns; c11=var(|1|); c12=var(|2|); c21=var(|3|); c22=var(|4|); eqns = c11**2 + c12**2 - h(|1,1|) | c11*c21 + c12*c22 - h(|1,2|) | c21**2 + c22**2 - h(|2,2|) | s1*c11 + s2*c21; retp( eqns ); endp; /*=======Decomposition of Variance======*/ proc(3) = decomp(w11,w12); local i,totv,s,p1,p2; totv = zeros(10,1); s = totv; p1 = totv; p2 = p1; totv(|1,1|) = (w11(|1,1|))**2 + (w12(|1,1|))**2; s(|1,1|) = (w11(|1,1|))**2; p1(|1,1|) = 100*s(|1,1|)/totv(|1,1|); p2(|1,1|) = 100-p1(|1,1|); i=2; do while i<= 10; totv(|i,1|) = totv(|i-1,1|) + (w11(|i,1|))**2 + (w12(|i,1|))**2; s(|i,1|) = s(|i-1,1|) + (w11(|i,1|))**2; p1(|i,1|) = 100*s(|i,1|)/totv(|i,1|); p2(|i,1|) = 100-p1(|i,1|); i=i+1; endo; totv=sqrt(totv); retp(totv,p1,p2); endp; /*=================INFORMATION==CRITERIA========*/ proc(0) = aic(n); local aic,sic; n = 1; do while n<=10; {b1,b2,h,cm,u1,u2} = var(y,p,n); AIC = ln(det(h)) + 2*4*n/(nob-n); print n~aic; n = n+1; endo; endp; proc(0) = sic(n); local aic,sic; n = 1; do while n<=10; {b1,b2,h,cm,u1,u2} = var(y,p,n); SIC = ln(det(h)) + 4*n*ln(nob-n)/(nob-n); print n~sic; n = n+1; endo; endp; /*==================MAIN==Program===========*/ {b1,b2,h,cm,u1,u2} = var(y,p,n); C = ones(2,2); C(|2,1|) = 0; C(|1,2|) = 0; {v11,v21,v12,v22} = imprep(b1,b2,C); s1 = sumc(v11); s2 = sumc(v12); {x,fvc,jc,tcode} = nlprt(nlsys(&f,x0)); C = zeros(2,2); C(|1,1|) = x(|1,1|); C(|1,2|) = x(|2,1|); C(|2,1|) = x(|3,1|); C(|2,2|) = x(|4,1|); CI = inv(C); /* Calculate Demand and Supply Shocks */ v = u1~u2; i=1; do while i <= nob-n; eps(|.,i|) = CI*(v(|i,.|)'); i=i+1; endo; /* Calculate Impulse Response Functions Demand and Supply Shocks */ /* Names: w11,w21,w12,w22 */ {w11,w21,w12,w22} = imprep(b1,b2,C); {totv1,p11,p21} = decomp(w11,w12); {totv2,p12,p22} = decomp(w21,w22); z11=abs(w11); z21=abs(w21); z12=abs(w12); z22=abs(w22); som11=(z11'ab1)/sumc(z11); som21=(z21'ab1)/sumc(z21); som12=(z12'ab1)/sumc(z12); som22=(z22'ab1)/sumc(z22); som11; som21; som12; som22; /* w11 = cumsumc(w11); w21 = cumsumc(w21); w12 = cumsumc(w12); w22 = cumsumc(w22); */ /*======WEGSCHRIJVEN RESULTAAT=======*/ format /rd 12,12; outwidth 132; output file = a:shocks1.dat reset; screen off; print "Temporary and Permanent Shocks: "; print " Temporary Permanent"; print eps'; print; print; output file = a:res1.dat reset; print "Decomposition of Variance"; print; print "Variance of Output Variance of Prices"; print; print "Due to (in percentages):"; print " Temporary Permanent Temporary Permanent"; format /rd 8,1; print p11~p21~p12~p22; output off; screen on; format /rd 12,12; outwidth 132; output file = a:out5.prn reset; screen off; print w11~w21~w12~w22; output off; screen on; ****end of program**** DP.DAT AND DY.DAT SERIES ARE THE INPUT FILES FOR THE GAUSS PROGRAM. THE AGGREGATE G7 USES THE SAME AGGREGATE G7 SERIES CREATED FOR TABLE 4. THE TIME PERIODS FOR THIS TABLE ARE SLIGHTLY DIFFERENT THAN THOSE OF THE OTHER TABLES. THESE TIME PERIODS ARE LISTED BELOW. HOWEVER, IF A SERIES IS NOT AVAILABLE FOR THE ENTIRE TIME PERIOD, THE MISSING OBSERVATIONS ARE DELETED SINCE THE PROGRAM DOES NOT ACCEPT MISSING VALUES. GOLD STANDARD : 1881-1913 INTERWAR : 1919-1939 BRETTON WOODS : 1946-1970 FLOATING EXCHANGE : 1971-1989 POST WORLD WAR II : 1946-1989 ***************************************** *******APPENDIX TABLE 1****************** ***************************************** APPENDIX TABLE 1 IS CREATED USING THE EXACT SAME PROGRAM AS TABLE 4. HOWEVER, THE PROGRAM IS RUN ONCE OVER THE WHOLE TIME PERIOD THEN BROKEN UP IN TSP. THE AGGREGATE G4 DATA ARE CREATED THE SAME WAY THE AGGREGATE G7 IS, ONLY USING THE G4 COUNTRIES AND THE SUPPLIED G4 WEIGHTS. AGAIN, THE WEIGHTED G4 IS CREATED ACCORDING TO THE FOOTNOTE. ******************************************************************* ******************************************************************* ******************************************************************* ******************************************************************* FIGURES 1-21 AND APPENDIX FIGURE 1 ******************************************************************* ***************************************** ******FIGURES 1-9************************ ***************************************** THE DATA FROM THESE FIGURES ARE OBTAINED FROM THE COUNTRY SECTIONS. THEY ARE MANIPULATED THE SAME WAY AS IN TABLE 1, THEN GRAPHED. WHEN CALCULATING THE ABSOLUTE CHANGE IN EXCHANGE RATES FOR FIGURES 8 AND 9, THE ABSOLUTE VALUE OF THE CHANGE OF THE APPROPRIATE EXCHANGE RATE IS USED. ***************************************** ******FIGURE 10************************** ***************************************** THIS TABLE IS REPLICATED USING AN OUTPUT FILE FROM THE GAUSS PROGRAM USED FOR TABLE 5 REPLICATION EXCEPT FOR ONE CHANGE. IN THE "MAIN==PROGRAM" SECTION, THE W11, W21, W12 AND W22 EQUATIONS ARE UNCOMMENTED OUT. HERE IS THE REVISED PROGRAM. IN THIS COPY OF THE PROGRAM, HOWEVER, SOME SYMBOLS WERE CHANGED FROM THE ORIGINAL. THE CARAT SYMBOLS WERE CHANGED TO DOUBLE ASTERISKS (**) AND THE BRACKETS WERE CHANGED TO PARENTHESIS-BARS ( (|, |) ). ****start of program**** #lineson library nlsys,pgraph; #include nlsys.arc;nlset; ab1=ones(40,1); ab1=cumsumc(ab1); /* Starting Values for System of equations */ x0=ones(4,1); x0(|1,1|) = 4; x0(|2,1|) = 3; x0(|3,1|) = 7; x0(|4,1|) = -1; n=2; /*==========INLEZEN=DATA============*/ load y(||) = a:dy.dat; load p(||) = a:dp.dat; nob = rows(y); b1=zeros(2*n+1,1); b2=b1; s1=0;s2=0; u1 = zeros(nob-n,1); u2 = zeros(nob-n,1); h=zeros(2,2); cm = eye(2); eps = zeros(2,nob-n); /*======Procedure Var ==============================*/ proc(6) = var(y,p,n); local yln,pln,i,c,trend,yr,pr,mat1,b1,b2,u1,u2,v ; yln = zeros(nob-n,n); pln = zeros(nob-n,n); i = 1; do while i<= n; yln(|.,i|) = y(|1+n-i:nob-i,.|); pln(|.,i|) = p(|1+n-i:nob-i,.|); i=i+1; endo; c = ones(nob-n,1); trend = ones(nob-n,1); trend = cumsumc(trend); yr = y(|n+1:nob|); pr = p(|n+1:nob|); mat1 = yln~pln~c; b1 = inv(mat1'mat1)*mat1'yr; b2 = inv(mat1'mat1)*mat1'pr; u1 = yr-mat1*b1; u2 = pr-mat1*b2; v = u1~u2; h = (v'v)/(nob-n); cm(|1,2|) = h(|1,2|)/((h(|1,1|)**0.5)*(h(|2,2|))**0.5); cm(|2,1|) = h(|2,1|)/((h(|1,1|)**0.5)*(h(|2,2|))**0.5); retp(b1,b2,h,cm,u1,u2); endp; /*=====Procedure IMP-RESP======================*/ proc(4) = imprep(b1,b2,C); local i,a,T,v11,v21,v12,v22; v11= zeros(40,1); v21=v11; v12=v11; v22=v11; T=zeros(2*(n+1),2*(n+1)); i = 1; do while i<= n; T(|1,i|) = b1(|i,1|); T(|n+2,i|) = b2(|i,1|); i=i+1; endo; i = n+2; do while i <= 2*(n+1)-1; T(|1,i|) = b1(|i-1,1|); T(|n+2,i|)=b2(|i-1,1|); i=i+1; endo; i = 2; do while i<= n+1; T(|i,i-1|)=1; i=i+1; endo; i=n+3; do while i<= 2*(n+1); T(|i,i-1|)=1; i=i+1; endo; a = zeros(2*(n+1),1); a(|1,1|) = 1*C(|1,1|); a(|n+2,1|) = 1*C(|2,1|); v11(|1,1|) = a(|1,1|); v21(|1,1|) = a(|n+2,1|); i=2; do while i<=40; a=T*a; v11(|i,1|) = a(|1,1|); v21(|i,1|) = a(|n+2,1|); i=i+1; endo; a = zeros(2*(n+1),1); a(|1,1|) = 1*C(|1,2|); a(|n+2,1|) = 1*C(|2,2|); v12(|1,1|) = a(|1,1|); v22(|1,1|) = a(|n+2,1|); i=2; do while i<=40; a=T*a; v12(|i,1|) = a(|1,1|); v22(|i,1|) = a(|n+2,1|); i=i+1; endo; retp(v11,v21,v12,v22); endp; /*==============Solve System of Equations============*/ proc f(var); local c11,c12,c21,c22,eqns; c11=var(|1|); c12=var(|2|); c21=var(|3|); c22=var(|4|); eqns = c11**2 + c12**2 - h(|1,1|) | c11*c21 + c12*c22 - h(|1,2|) | c21**2 + c22**2 - h(|2,2|) | s1*c11 + s2*c21; retp( eqns ); endp; /*=======Decomposition of Variance======*/ proc(3) = decomp(w11,w12); local i,totv,s,p1,p2; totv = zeros(10,1); s = totv; p1 = totv; p2 = p1; totv(|1,1|) = (w11(|1,1|))**2 + (w12(|1,1|))**2; s(|1,1|) = (w11(|1,1|))**2; p1(|1,1|) = 100*s(|1,1|)/totv(|1,1|); p2(|1,1|) = 100-p1(|1,1|); i=2; do while i<= 10; totv(|i,1|) = totv(|i-1,1|) + (w11(|i,1|))**2 + (w12(|i,1|))**2; s(|i,1|) = s(|i-1,1|) + (w11(|i,1|))**2; p1(|i,1|) = 100*s(|i,1|)/totv(|i,1|); p2(|i,1|) = 100-p1(|i,1|); i=i+1; endo; totv=sqrt(totv); retp(totv,p1,p2); endp; /*=================INFORMATION==CRITERIA========*/ proc(0) = aic(n); local aic,sic; n = 1; do while n<=10; {b1,b2,h,cm,u1,u2} = var(y,p,n); AIC = ln(det(h)) + 2*4*n/(nob-n); print n~aic; n = n+1; endo; endp; proc(0) = sic(n); local aic,sic; n = 1; do while n<=10; {b1,b2,h,cm,u1,u2} = var(y,p,n); SIC = ln(det(h)) + 4*n*ln(nob-n)/(nob-n); print n~sic; n = n+1; endo; endp; /*==================MAIN==Program===========*/ {b1,b2,h,cm,u1,u2} = var(y,p,n); C = ones(2,2); C(|2,1|) = 0; C(|1,2|) = 0; {v11,v21,v12,v22} = imprep(b1,b2,C); s1 = sumc(v11); s2 = sumc(v12); {x,fvc,jc,tcode} = nlprt(nlsys(&f,x0)); C = zeros(2,2); C(|1,1|) = x(|1,1|); C(|1,2|) = x(|2,1|); C(|2,1|) = x(|3,1|); C(|2,2|) = x(|4,1|); CI = inv(C); /* Calculate Demand and Supply Shocks */ v = u1~u2; i=1; do while i <= nob-n; eps(|.,i|) = CI*(v(|i,.|)'); i=i+1; endo; /* Calculate Impulse Response Functions Demand and Supply Shocks */ /* Names: w11,w21,w12,w22 */ {w11,w21,w12,w22} = imprep(b1,b2,C); {totv1,p11,p21} = decomp(w11,w12); {totv2,p12,p22} = decomp(w21,w22); z11=abs(w11); z21=abs(w21); z12=abs(w12); z22=abs(w22); som11=(z11'ab1)/sumc(z11); som21=(z21'ab1)/sumc(z21); som12=(z12'ab1)/sumc(z12); som22=(z22'ab1)/sumc(z22); som11; som21; som12; som22; w11 = cumsumc(w11); w21 = cumsumc(w21); w12 = cumsumc(w12); w22 = cumsumc(w22); /*======WEGSCHRIJVEN RESULTAAT=======*/ format /rd 12,12; outwidth 132; output file = a:shocks1.dat reset; screen off; print "Temporary and Permanent Shocks: "; print " Temporary Permanent"; print eps'; print; print; output file = a:res1.dat reset; print "Decomposition of Variance"; print; print "Variance of Output Variance of Prices"; print; print "Due to (in percentages):"; print " Temporary Permanent Temporary Permanent"; format /rd 8,1; print p11~p21~p12~p22; output off; screen on; format /rd 12,12; outwidth 132; output file = a:out5.prn reset; screen off; print w11~w21~w12~w22; output off; screen on; ****end of program**** THE PROGRAM IS RUN USING THE G7 DP.DAT AND DY.DAT SERIES FOR EACH INDIVIDUAL TIME PERIOD. THE TIME PERIODS USED ARE THE SAME AS THOSE USED IN TABLE 5. THE OUTPUT FILE CALLED OUT5.PRN IS AUTOMATICALLY SAVED TO THE A: DRIVE. THIS IS READ INTO A MICRO TSP FILE CONSISTING OF 40 UNDATED OBSERVATIONS. THE SERIES ARE LISTED IN THE OUTPUT FILE IN THE FOLLOWING ORDER: DEMAND SHOCK ON OUTPUT, DEMAND SHOCK ON PRICES, SUPPLY SHOCK ON OUTPUT, AND SUPPLY SHOCK ON PRICES. THESE SERIES ARE PLOTTED AS IN THE FIGURE. THE TIME PERIODS USED ARE THE SAME AS THOSE USED IN TABLE 5. ***************************************** ******FIGURE 11 AND 12******************* ***************************************** THESE FIGURES ARE CREATED BY PLOTTING THE SHOCKS1.DAT FILE SERIES OBTAINED DURING REPLICATION OF TABLE 4. THE PROGRAM AND TIME PERIODS ARE THE SAME SO THE SAME SHOCKS1.DAT FILE CAN BE USED. ***************************************** ******FIGURES 13, 14 AND 16-18*********** ***************************************** THESE FIGURES USE DATA SUPPLIED SPECIFICALLY FOR THEM. WHEN A GROWTH RATE IS NECESSARY, THE FORMULA USED IS (X/LAG(X)) - 1, WHERE X IS THE VARIABLE IN QUESTION. ***************************************** ******FIGURE 15************************** ***************************************** THIS FIGURE USES THE DATA IN THE COUNTRY SECTIONS AND ALSO THE G7 WEIGHTS. THE DELTA LOG OF THE DEFLATOR IS USED AS THE INFLATION RATE. JAPAN, HOWEVER, USES THE DELTA LOG OF DEFL_2. TO CREATE THE G7 EXCLUDING THE U.S., THE WEIGHTS HAD TO BE CONVERTED BY MULTIPLYING EACH WEIGHT BY A CONVERSION MEASURE WHICH IS CALCULATED AS (1/(1-WEIGHT FOR U.S.)). THE SERIES IS CREATED LIKE THE AGGREGATE G7 EXCEPT THE NEW WEIGHTS ARE USED AND THE U.S. IS EXCLUDED. ***************************************** ******FIGURE 19************************** ***************************************** THIS FIGURE IS CREATED USING THE GROWTH RATES OF THE MONEY SUPPLY DATA SUPPLIED SPECIFICALLY FOR THIS FIGURE. THESE MONEY SUPPLY FIGURES MUST FIRST BE CONVERTED TO DOLLARS BY USING THE EXCHANGE RATES ALSO SUPPLIED. AGAIN, THE U.S. IS EXCLUDED BY RECALCULATING THE WEIGHTS AS IN FIGURE 15. ***************************************** ******FIGURE 20************************** ***************************************** THIS FIGURE USES THE DATA FROM FIGURE 19 AND THE REAL OUTPUT GROWTH CALCULATED FROM THE YR SERIES FOR EACH COUNTRY. THE SAME CONVERSION MEASURE IS USED TO EXCLUDE THE U.S. AS IN FIGURE 15 AND 19. ***************************************** ******APPENDIX FIGURE 1****************** ***************************************** THIS FIGURE IS CREATED BY PLOTTING THE SHOCKS1.DAT FILE SERIES OBTAINED DURING REPLICATION OF APPENDIX TABLE 1. THE PROGRAM AND THE SINGLE TIME PERIOD USED ARE THE SAME SO THE SAME SHOCKS1.DAT CAN BE USED.