This is the program file for Tables 2-7 in "The Asian Crisis and the Exposure of Large U.S. Firms" by William R. Emmons and Frank A Schmid in the January/February 2000 issue of the Federal Reserve Bank of St. Louis Review. This file contains: Gauss programs to create tables 2 through 7. ********************* **Program Run Order** ********************* a) tab2.prg b) tab3_4.prg c) tab5.prg d) tab6.prg e) tab7.prg @**************************************************************************************@ @Create Table 2@ @**************************************************************************************@ @ program tab2.prg @ new; #lineson; save path=d:\data\asia1\gauss; output file=c:\prg\asia4\tab2.out reset; str=datestr(0); tr=timestr(0); "GAUSS time ";; tr;; " date (US) ";; str; ?;"input file: tab2.prg"; twodigit=1; @ 1: take two-digit codes; else: four-digit codes @ ?;format /rd 4,0; screen on; @ read data @ @ sort files by ticker symbol @ dataset="d:\\data\\asia1\\asc\\asia1"; open f1=^dataset; rw=rowsf(f1); asia1=readr(f1,rw); @ do not sort! (41 rows) @ f1=close(f1); dataset="d:\\data\\asia1\\asc\\asia2"; open f1=^dataset; rw=rowsf(f1); asia2=readr(f1,rw); @ do not sort! (80 rows) @ f1=close(f1); dataset="d:\\data\\asia1\\asc\\industry"; open f1=^dataset; rw=rowsf(f1); industry=sortcc(readr(f1,rw),2); f1=close(f1); if twodigit==1; industry[.,3]=floor(industry[.,3]./1e2); endif; dataset="d:\\data\\asia1\\asc\\div97"; open f1=^dataset; rw=rowsf(f1); div97=sortcc(readr(f1,rw),2); f1=close(f1); dataset="d:\\data\\asia1\\asc\\div98"; open f1=^dataset; rw=rowsf(f1); div98=sortcc(readr(f1,rw),2); f1=close(f1); dataset="d:\\data\\asia1\\asc\\sales95"; open f1=^dataset; rw=rowsf(f1); sales95=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\sales96"; open f1=^dataset; rw=rowsf(f1); sales96=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\sales97"; open f1=^dataset; rw=rowsf(f1); sales97=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\sales98"; open f1=^dataset; rw=rowsf(f1); sales98=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\debt95"; open f1=^dataset; rw=rowsf(f1); debt95=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\debt96"; open f1=^dataset; rw=rowsf(f1); debt96=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\debt97"; open f1=^dataset; rw=rowsf(f1); debt97=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\debt98"; open f1=^dataset; rw=rowsf(f1); debt98=sortcc(readr(f1,rw),1); f1=close(f1); dataset="d:\\data\\asia1\\asc\\jpmweek"; open f1=^dataset; rw=rowsf(f1); jpm=readr(f1,rw); f1=close(f1); dataset="d:\\data\\asia1\\asc\\tb3week"; open f1=^dataset; rw=rowsf(f1); tb3=readr(f1,rw); f1=close(f1); dataset="d:\\data\\asia1\\asc\\ftweek"; open f1=^dataset; rw=rowsf(f1); ft=readr(f1,rw); f1=close(f1); @ create matrix of dummy variables (second column: firm id) @ indus=unique(industry[.,3],1); @ SIC codes @ indu97=industry[.,2]~(industry[.,3].==indus'); indu98=indu97; clear industry; @ count # of SIC four-digit entries @ ex=(div98[.,3:cols(div98)]./=-9); div98=div98[.,2]~(sumc(ex')); ex=(div97[.,3:cols(div97)]./=-9); div97=div97[.,2]~(sumc(ex')); @ calculate sales and debt variables variables @ @ dummies @ s95=sales95; s96=sales96; s97=sales97; d95=debt95; d96=debt96; d97=debt97; @ fill in dummies @ k=0; do while k0; indu97=delif(indu97',ex)'; indu98=delif(indu98',ex)'; endif; clear ex; @ define sales (lagged; fractions) @ s_usa = (sales97[.,3]./sales97[.,12]) ~(sales96[.,3]./sales96[.,12]); s_euro= (sales97[.,5]./sales97[.,12]) ~(sales96[.,5]./sales96[.,12]); s_asia= (sales97[.,7]./sales97[.,12]) ~(sales96[.,7]./sales96[.,12]); s_debt= ( debt97[.,2]./ debt97[.,3]) ~( debt96[.,2]./ debt96[.,3]); clear sales97,sales98,debt95,debt96,debt97,debt98; @ check @ if maxc(maxc(s_debt))>1 or minc(minc(s_debt))<0; "error in s_debt -- wait"; wait; endif; if maxc(maxc(s_asia))>1 or minc(minc(s_asia))<0; "error in s_asia -- wait"; wait; endif; @ calculate herf of sales @ s_herf= sumc(((s_usa[.,1]~s_euro[.,1]~s_asia[.,1]).^2)') @ 1997 @ ~sumc(((s_usa[.,2]~s_euro[.,2]~s_asia[.,2]).^2)'); @ 1996 @ @ ranks @ rs_herf=s_herf; rcap=cap; rmtb=mtb; rs_usa=s_usa; rs_euro=s_euro; rs_asia=s_asia; rs_debt=s_debt; @ dummies @ k=2; do while k0; indu97=delif(indu97',ex)'; indu98=delif(indu98',ex)'; endif; clear ex; @ define sales (lagged; fractions) @ s_usa = (sales97[.,3]./sales97[.,12]) ~(sales96[.,3]./sales96[.,12]); s_euro= (sales97[.,5]./sales97[.,12]) ~(sales96[.,5]./sales96[.,12]); s_asia= (sales97[.,7]./sales97[.,12]) ~(sales96[.,7]./sales96[.,12]); s_debt= ( debt97[.,2]./ debt97[.,3]) ~( debt96[.,2]./ debt96[.,3]); /* s_debt= ( debt97[.,3]./ (debt97[.,3]-debt97[.,2])) ~( debt96[.,3]./ (debt96[.,3]-debt96[.,2])); s_debt=ln(s_debt); */ clear sales97,sales98,debt95,debt96,debt97,debt98; @ check @ if minc(minc(s_debt))<0 or maxc(maxc(s_debt))>1; "error in s_debt -- wait"; wait; endif; if maxc(maxc(s_asia))>1 or minc(minc(s_asia))<0; "error in s_asia -- wait"; wait; endif; @ calculate herf of sales @ s_herf= sumc(((s_usa[.,1]~s_euro[.,1]~s_asia[.,1]).^2)') @ 1997 @ ~sumc(((s_usa[.,2]~s_euro[.,2]~s_asia[.,2]).^2)'); @ 1996 @ @ ranks period by period @ rs_herf=s_herf; rcap=cap; rmtb=mtb; rs_usa=s_usa; rs_euro=s_euro; rs_asia=s_asia; rs_debt=s_debt; @ dummies @ k=2; do while k1; ?; "-----------------------------------------------------------------------------"; ?; endif; if iss2==1; "jpm"; elseif iss2==2; "ft"; endif; if iss==1; "betas for <1998> and <1997>"; elseif iss==2; "betas for <1997 and 1998> difference of 1997 betas to them"; endif; format /rd 4,0; "Number of equations: " dmu; wks=cols(rates)-2; @ number of weekly observations @ l=floor(4.*((wks./100).^(2./9))); @ lag for Ljung-Box and Newey-West @ @ const has to be in last column @ i=0; ki=0; if sample==1; firms=4; else; firms=40; endif; do while i2; rx=rz~@ones(rows(x),1)~@rx; clear rz; @ ...with instruments @ x= z~@ones(rows(x),1)~@ x; clear z; @ add "factors", common alpha @ endif; y=ymat; clear ymat; w=wmat; clear wmat; @ set up matrices for Wald-tests and F-tests @ if numerair==1; @ beta @ rb=zeros(cols(x),cols(x)); i=exogs+1; do while i1; critvec=abs((bnew-bold)./bold); format /rd 5,0; "iteration # & iss" (iti-1)~iss; format /re 10,3; " ...convergence:" sumc(critvec); if sumc(critvec)0; @ ex2'; wait; @ xh=(delif(xh',ex2))'; rxh=(delif(rxh',ex2))'; endif; bh=inv(rxh'xh)*rxh'yh; @ IV approach @ bh=bh[1]; @ drop other coefficients because of zero columns, i.e, missing coefficients @ if i==1; create f1=^dtset1 with ^vnames,cols(bh'),8; call writer(f1,bh'); f3=close(f1); elseif i==2; open f1=^dtset1 for append; call writer(f1,bh'); else; call writer(f1,bh'); endif; endo; f1=close(f1); @--------------------------------------------------@ open f1=^dtset1; rw=rowsf(f1); testvec1=sortc(readr(f1,rw),1); f1=close(f1); ?; format /rd 4,0; "iss=" iss; i=0; do while i