You are on page 1of 16

<CN>CHAPTER 20.

<CT>EXTERNAL LINKAGES AND CONTAGION RISK IN IRISH BANKS

<AU>Elena Duggar and Srobona Mitra

These are example Eviews program codes used to generate the results in this chapter.

Please note that the data on banks distance to default (DD) is generated by the Monetary and Capital
Markets Department of the IMF, referred to in the chapter as MFD FP database, but not widely distributed
given the sensitive nature of the data. But DD may be generated using the methodology given in Box 2 of
the chapter. In this program, the DD data are represented by the codes {Country name} SYSDD for
banking system DDs or by {Country name}BDD{Bank #} for bank DDs.

'This program takes the original data and calculates the coexceedances and the control variables

smpl @all Sample 1/3/1994 to 11/25/2005

'----------------------------------I. Calculating coexceedances---------------------------------------------------

'calculating the weakly change in the daily distances to default for all banks all countries (leave out banks with
little data: uk2, fr2, it5, and it6)

Germany
genr wdbd1= (bdbdd1-bdbdd1(-5))/(@abs(bdbdd1(-5)))
genr wdbd2= (bdbdd2-bdbdd2(-5))/(@abs(bdbdd2(-5)))
genr wdbd3= (bdbdd3-bdbdd3(-5))/(@abs(bdbdd3(-5)))
genr wdbd4= (bdbdd4-bdbdd4(-5))/(@abs(bdbdd4(-5)))
genr wbdsys= (bdsysdd-bdsysdd(-5))/(@abs(bdsysdd(-5)))

Spain
genr wdes1= (esbdd1-esbdd1(-5))/(@abs(esbdd1(-5)))
genr wdes2= (esbdd2-esbdd2(-5))/(@abs(esbdd2(-5)))
genr wdes3= (esbdd3-esbdd3(-5))/(@abs(esbdd3(-5)))
genr wdes4= (esbdd4-esbdd4(-5))/(@abs(esbdd4(-5)))
genr wessys= (essysdd-essysdd(-5))/(@abs(essysdd(-5)))

Eastern European
genr westeur= (esteurav-esteurav(-5))/(@abs(esteurav(-5)))

France
genr wdfr1= (frbdd1-frbdd1(-5))/(@abs(frbdd1(-5)))
'genr wdfr2= (frbdd2-frbdd2(-5))/(@abs(frbdd2(-5)))
genr wdfr3= (frbdd3-frbdd3(-5))/(@abs(frbdd3(-5)))
genr wfrsys= (frsysdd-frsysdd(-5))/(@abs(frsysdd(-5)))

Ireland
genr wdir1= (irbdd1-irbdd1(-5))/(@abs(irbdd1(-5)))
genr wdir2= (irbdd2-irbdd2(-5))/(@abs(irbdd2(-5)))
genr wdir3= (irbdd3-irbdd3(-5))/(@abs(irbdd3(-5)))
genr wirsys= (irsysdd-irsysdd(-5))/(@abs(irsysdd(-5)))

Italy
genr wdit1= (itbdd1-itbdd1(-5))/(@abs(itbdd1(-5)))
genr wdit2= (itbdd2-itbdd2(-5))/(@abs(itbdd2(-5)))
genr wdit3= (itbdd3-itbdd3(-5))/(@abs(itbdd3(-5)))
genr wdit4= (itbdd4-itbdd4(-5))/(@abs(itbdd4(-5)))
'genr wdit5= (itbdd5-itbdd5(-5))/(@abs(itbdd5(-5)))
'genr wdit6= (itbdd6-itbdd6(-5))/(@abs(itbdd6(-5)))
2

genr wdit7= (itbdd7-itbdd7(-5))/(@abs(itbdd7(-5)))


genr wdit8= (itbdd8-itbdd8(-5))/(@abs(itbdd8(-5)))
genr witsys= (itsysdd-itsysdd(-5))/(@abs(itsysdd(-5)))

Netherlands
genr wdnl1= (nlbdd1-nlbdd1(-5))/(@abs(nlbdd1(-5)))
genr wdnl2= (nlbdd2-nlbdd2(-5))/(@abs(nlbdd2(-5)))
genr wnlsys= (nlsysdd-nlsysdd(-5))/(@abs(nlsysdd(-5)))

United Kingdom
genr wduk1= (ukbdd1-ukbdd1(-5))/(@abs(ukbdd1(-5)))
'genr wduk2= (ukbdd2-ukbdd2(-5))/(@abs(ukbdd2(-5)))
genr wduk3= (ukbdd3-ukbdd3(-5))/(@abs(ukbdd3(-5)))
genr wduk4= (ukbdd4-ukbdd4(-5))/(@abs(ukbdd4(-5)))
genr wduk5= (ukbdd5-ukbdd5(-5))/(@abs(ukbdd5(-5)))
genr wduk6= (ukbdd6-ukbdd6(-5))/(@abs(ukbdd6(-5)))
genr wuksys= (uksysdd-uksysdd(-5))/(@abs(uksysdd(-5)))

United States
genr wdus1= (usbdd1-usbdd1(-5))/(@abs(usbdd1(-5)))
genr wdus2= (usbdd2-usbdd2(-5))/(@abs(usbdd2(-5)))
genr wdus3= (usbdd3-usbdd3(-5))/(@abs(usbdd3(-5)))
genr wdus4= (usbdd4-usbdd4(-5))/(@abs(usbdd4(-5)))
genr wdus5= (usbdd5-usbdd5(-5))/(@abs(usbdd5(-5)))
genr wdus6= (usbdd6-usbdd6(-5))/(@abs(usbdd6(-5)))
genr wdus7= (usbdd7-usbdd7(-5))/(@abs(usbdd7(-5)))
genr wdus8= (usbdd8-usbdd8(-5))/(@abs(usbdd8(-5)))
genr wdus9= (usbdd9-usbdd9(-5))/(@abs(usbdd9(-5)))
genr wdus10= (usbdd10-usbdd10(-5))/(@abs(usbdd10(-5)))
genr wdus11= (usbdd11-usbdd11(-5))/(@abs(usbdd11(-5)))
genr wdus12= (usbdd12-usbdd12(-5))/(@abs(usbdd12(-5)))
genr wdus13= (usbdd13-usbdd13(-5))/(@abs(usbdd13(-5)))
genr wdus14= (usbdd14-usbdd14(-5))/(@abs(usbdd14(-5)))
genr wussys= (ussysdd-ussysdd(-5))/(@abs(ussysdd(-5)))

'stack all individual banks to get the bottom 15th percentile of the distribution in a new page, then go back to the
original page, link to use the saved threshold, then unlink to convert the link into a series

pagestack(page=StackedBanks) wd? @date @ wd?


genr threshb = @quantile(wd,0.15)

pageselect Original
link threshbanks.linkto StackedBanks\threshb
unlink threshbanks

'create a group of all banks wd, then convert group into a matrix keeping the NA's (leave out banks with little
data: uk2, fr2, it5, and it6)

group groupbankswd wdbd1 wdbd2 wdbd3 wdbd4 wdes1 wdes2 wdes3 wdes4 wdfr1 wdfr3 wdir1 wdir2
wdir3 wdit1 wdit2 wdit3 wdit4 wdit7 wdit8 wdnl1 wdnl2 wduk1 wduk3 wduk4 wduk5 wduk6 wdus1 wdus2 wdus3
wdus4 wdus5 wdus6 wdus7 wdus8 wdus9 wdus10 wdus11 wdus12 wdus13 wdus14

matrix(3105,40) matrixbankswd
stomna(groupbankswd,matrixbankswd)

vector(3105) vthreshbanks
stomna(threshbanks, vthreshbanks)

'create a dummy matrix to hold the coexceedances for each bank in each country

matrix(3105,40) coexc
3

for !i = 1 to 3105
for !j = 1 to 40
if matrixbankswd(!i,!j) < threshbanks(!i) then
coexc(!i,!j) = 1
else coexc(!i,!j) = 0
endif
next
next

'create a vector for each country to hold the number of coexceedances

vector(3105) coexcger
vector(3105) coexcsp
vector(3105) coexcfr
vector(3105) coexcir
vector(3105) coexcit
vector(3105) coexcnl
vector(3105) coexcuk
vector(3105) coexcus

coexcger = @columnextract(coexc,1) + @columnextract(coexc,2) + @columnextract(coexc,3) +


@columnextract(coexc,4)
coexcsp = @columnextract(coexc,5) + @columnextract(coexc,6) + @columnextract(coexc,7) +
@columnextract(coexc,8)
coexcfr = @columnextract(coexc,9) + @columnextract(coexc,10)
coexcir = @columnextract(coexc,11) + @columnextract(coexc,12) + @columnextract(coexc,13)
coexcit = @columnextract(coexc,14) + @columnextract(coexc,15) + @columnextract(coexc,16) +
@columnextract(coexc,17) + @columnextract(coexc,18) + @columnextract(coexc,19)
coexcnl = @columnextract(coexc,20) + @columnextract(coexc,21)
coexcuk = @columnextract(coexc,22) + @columnextract(coexc,23) + @columnextract(coexc,24) +
@columnextract(coexc,25) + @columnextract(coexc,26)
coexcus = @columnextract(coexc,27) + @columnextract(coexc,28) + @columnextract(coexc,29) +
@columnextract(coexc,30) + @columnextract(coexc,31) + @columnextract(coexc,32) +
@columnextract(coexc,33) + @columnextract(coexc,34) + @columnextract(coexc,35) +
@columnextract(coexc,36) + @columnextract(coexc,37) + @columnextract(coexc,38) +
@columnextract(coexc,39) + @columnextract(coexc,40)

'modify vectors where needed to have only 0,1, or (2 or more) coexceedances

vector(3105) coexcgermod
vector(3105) coexcitmod
vector(3105) coexcspmod
vector(3105) coexcukmod
vector(3105) coexcusmod
vector(3105) coexcirmod

for !i = 1 to 3105
if coexcger(!i) > 2 then
coexcgermod(!i) = 2
else coexcgermod(!i) = coexcger(!i)
endif

if coexcit(!i) > 2 then


coexcitmod(!i) = 2
else coexcitmod(!i) = coexcit(!i)
endif

if coexcsp(!i) > 2 then


coexcspmod(!i) = 2
else coexcspmod(!i) = coexcsp(!i)
4

endif

if coexcuk(!i) > 2 then


coexcukmod(!i) = 2
else coexcukmod(!i) = coexcuk(!i)
endif

if coexcus(!i) > 2 then


coexcusmod(!i) = 2
else coexcusmod(!i) = coexcus(!i)
endif

if coexcir(!i) > 2 then


coexcirmod(!i) = 2
else coexcirmod(!i) = coexcir(!i)
endif
next

'convert the vectors to series to use in regressions

mtos(coexcir, coexcirser)
mtos(coexcfr, coexcfrser)
mtos(coexcgermod, coexcgermodser)
mtos(coexcitmod, coexcitmodser)
mtos(coexcnl, coexcnlser)
mtos(coexcspmod, coexcspmodser)
mtos(coexcukmod, coexcukmodser)
mtos(coexcusmod, coexcusmodser)
mtos(coexcirmod, coexcirmodser)

'----------------------------------II. Calculating controls---------------------------------------------------


'------------------------------------1. Systemic risk -- Stock markets------------------------------------

'calculate weekly returns

genr wrdowj = log(indu) - log(indu(-5))


genr wriseq = log(iseq) - log(iseq(-5))
genr wrn100 = log(n100) - log(n100(-5))
genr wrnasdaq = log(ccmp) - log(ccmp(-5))

'find the bottom 15 percentile threshold for the stock market controls, and convert them into vectors

genr threshdowj = @quantile(wrdowj,0.15)


genr threshiseq = @quantile(wriseq,0.15)
genr threshn100 = @quantile(wrn100,0.15)
genr threshnasdaq = @quantile(wrnasdaq,0.15)

vector(3105) vthreshdowj
vector(3105) vthreshiseq
vector(3105) vthreshn100
vector(3105) vthreshnasdaq

stomna(threshdowj,vthreshdowj)
stomna(threshiseq,vthreshiseq)
stomna(threshn100,vthreshn100)
stomna(threshnasdaq,vthreshnasdaq)

'convert the returns series into vectors


5

vector(3105) vwrdowj
vector(3105) vwriseq
vector(3105) vwrn100
vector(3105) vwrnasdaq

stomna(wrdowj,vwrdowj)
stomna(wriseq,vwriseq)
stomna(wrn100,vwrn100)
stomna(wrnasdaq,vwrnasdaq)

'create an indicator vector for each stock market control to hold 1 if the return is in the bottom 5 percentile of the
disctribution of weekly returns

vector(3105) inddowj
vector(3105) indiseq
vector(3105) indn100
vector(3105) indnasdaq

for !i = 1 to 3105
if vwrdowj(!i) < vthreshdowj(!i) then
inddowj(!i) = 1
else inddowj(!i) = 0
endif

if vwriseq(!i) < vthreshiseq(!i) then


indiseq(!i) = 1
else indiseq(!i) = 0
endif

if vwrn100(!i) < vthreshn100(!i) then


indn100(!i) = 1
else indn100(!i) = 0
endif

if vwrnasdaq(!i) < vthreshnasdaq(!i) then


indnasdaq(!i) = 1
else indnasdaq(!i) = 0
endif

next

'create indicator vector for all stock market shocksnote that N100 data only starts from 2000, which is why the
variable indstmkt can only take a maximum of 2 before 2000 and a maximum of 3 after 2000.

vector(3105) indstmkt
indstmkt = indiseq + indn100 + indnasdaq

'convert the vectors to series to use in regressions

mtos(indstmkt, indstmktser)

'------------------------------------2. Yield curve -- Ireland--------------------------------------------------

'calculate the weekly change in the slope of the yield curve for Irelandthis was not used in the paper as data on
gigb1yr only started from 2005.

genr yieldcurve = @abs(gigb10yr-gigb1yr) - @abs(gigb10yr(-5)-gigb1yr(-5))


6

'------------------------------------3. Stock market volatility -- Ireland and US----------------------------

'run a GARCH(1,1) using the stock market returns calculated above, and save the variances

equation eqg1.arch wriseq c


eqg1.makegarch variseq

equation eqg2.arch wrnasdaq c


eqg2.makegarch varnasdaq

equation eqg3.arch wrdowj c


eqg3.makegarch vardowj

'calculate the weekly change in the volatility of the stock market

genr voliseq = variseq - variseq(-5)


genr volnasdaq = varnasdaq - varnasdaq(-5)
genr voldowj = vardowj - vardowj(-5)

'correlations b/w dd's of Ireland's and other countries' systems

smpl @all

scalar coriruk=@cor(irsysdd, uksysdd)


scalar corirus=@cor(irsysdd, ussysdd)
scalar corirger=@cor(irsysdd, bdsysdd)
scalar corirfr=@cor(irsysdd, frsysdd)
scalar corires=@cor(irsysdd, essysdd)
scalar coririt=@cor(irsysdd, itsysdd)
scalar corirnl=@cor(irsysdd, nlsysdd)
scalar coriresteur=@cor(irsysdd, esteurav)

smpl 1/03/1994 12/31/1998

scalar coriruk1=@cor(irsysdd, uksysdd)


scalar corirus1=@cor(irsysdd, ussysdd)
scalar corirger1=@cor(irsysdd, bdsysdd)
scalar corirfr1=@cor(irsysdd, frsysdd)
scalar corires1=@cor(irsysdd, essysdd)
scalar coririt1=@cor(irsysdd, itsysdd)
scalar corirnl1=@cor(irsysdd, nlsysdd)
scalar coriresteur1=@cor(irsysdd, esteurav)

smpl 1/01/1999 9/11/2001

scalar coriruk2=@cor(irsysdd, uksysdd)


scalar corirus2=@cor(irsysdd, ussysdd)
scalar corirger2=@cor(irsysdd, bdsysdd)
scalar corirfr2=@cor(irsysdd, frsysdd)
scalar corires2=@cor(irsysdd, essysdd)
scalar coririt2=@cor(irsysdd, itsysdd)
scalar corirnl2=@cor(irsysdd, nlsysdd)
scalar coriresteur2=@cor(irsysdd, esteurav)

smpl 9/12/2001 11/25/2005

scalar coriruk3=@cor(irsysdd, uksysdd)


scalar corirus3=@cor(irsysdd, ussysdd)
scalar corirger3=@cor(irsysdd, bdsysdd)
7

scalar corirfr3=@cor(irsysdd, frsysdd)


scalar corires3=@cor(irsysdd, essysdd)
scalar coririt3=@cor(irsysdd, itsysdd)
scalar corirnl3=@cor(irsysdd, nlsysdd)
scalar coriresteur3=@cor(irsysdd, esteurav)

'----------------------------------------------------------------------------------
'correlations b/w the change in dd's of Ireland's and other countries' systems

smpl @all

scalar wcoriruk=@cor(wirsys, wuksys)


scalar wcorirus=@cor(wirsys, wussys)
scalar wcorirger=@cor(wirsys, wbdsys)
scalar wcorirfr=@cor(wirsys, wfrsys)
scalar wcorires=@cor(wirsys, wessys)
scalar wcoririt=@cor(wirsys, witsys)
scalar wcorirnl=@cor(wirsys, wnlsys)
scalar wcoriresteur=@cor(wirsys, westeur)

smpl 1/03/1994 12/31/1998

scalar wcoriruk1=@cor(wirsys, wuksys)


scalar wcorirus1=@cor(wirsys, wussys)
scalar wcorirger1=@cor(wirsys, wbdsys)
scalar wcorirfr1=@cor(wirsys, wfrsys)
scalar wcorires1=@cor(wirsys, wessys)
scalar wcoririt1=@cor(wirsys, witsys)
scalar wcorirnl1=@cor(wirsys, wnlsys)
scalar wcoriresteur1=@cor(wirsys, westeur)

smpl 1/01/1999 9/11/2001

scalar wcoriruk2=@cor(wirsys, wuksys)


scalar wcorirus2=@cor(wirsys, wussys)
scalar wcorirger2=@cor(wirsys, wbdsys)
scalar wcorirfr2=@cor(wirsys, wfrsys)
scalar wcorires2=@cor(wirsys, wessys)
scalar wcoririt2=@cor(wirsys, witsys)
scalar wcorirnl2=@cor(wirsys, wnlsys)
scalar wcoriresteur2=@cor(wirsys, westeur)

smpl 9/12/2001 11/25/2005

scalar wcoriruk3=@cor(wirsys, wuksys)


scalar wcorirus3=@cor(wirsys, wussys)
scalar wcorirger3=@cor(wirsys, wbdsys)
scalar wcorirfr3=@cor(wirsys, wfrsys)
scalar wcorires3=@cor(wirsys, wessys)
scalar wcoririt3=@cor(wirsys, witsys)
scalar wcorirnl3=@cor(wirsys, wnlsys)
scalar wcoriresteur3=@cor(wirsys, westeur)

'-----------------------------------------------------------------------------
'correlations b/w the % change in dd's of Ireland's and lags of other countries' systems

smpl @all

scalar wcorirukl=@cor(wirsys, wuksys(-5))


scalar wcorirusl=@cor(wirsys, wussys(-5))
8

'--------------------------------------------------------------------------------
'compute rolling correlations b/w dd's of Ireland's and other countries' systems - for all country pairs

smpl @all

vector(3105) rolcoriruk
vector(3105) rolcorirus
vector(3105) rolcorirger
vector(3105) rolcorirnl
vector(3105) rolcorirfr
vector(3105) rolcoririt
vector(3105) rolcorirsp

vector(3105) rolcorukus
vector(3105) rolcorukger
vector(3105) rolcoruknl
vector(3105) rolcorukfr
vector(3105) rolcorukit
vector(3105) rolcoruksp

vector(3105) rolcorusger
vector(3105) rolcorusnl
vector(3105) rolcorusfr
vector(3105) rolcorusit
vector(3105) rolcorussp

vector(3105) rolcorgernl
vector(3105) rolcorgerfr
vector(3105) rolcorgerit
vector(3105) rolcorgersp

vector(3105) rolcornlfr
vector(3105) rolcornlit
vector(3105) rolcornlsp
vector(3105) rolcorfrit
vector(3105) rolcorfrsp

vector(3105) rolcoritsp

for !k=0 to (3104-259)


smpl 1/03/1994+!k 1/03/1994+!k+259

rolcoriruk(!k+1+259)=@cor(irsysdd, uksysdd)
rolcorirus(!k+1+259)=@cor(irsysdd, ussysdd)

rolcorirger(!k+1+259)=@cor(irsysdd, bdsysdd)
rolcorirnl(!k+1+259)=@cor(irsysdd, nlsysdd)
rolcorirfr(!k+1+259)=@cor(irsysdd, frsysdd)
rolcoririt(!k+1+259)=@cor(irsysdd, itsysdd)
rolcorirsp(!k+1+259)=@cor(irsysdd, essysdd)

rolcorukus(!k+1+259)=@cor(uksysdd, ussysdd)
rolcorukger(!k+1+259)=@cor(uksysdd, bdsysdd)
rolcoruknl(!k+1+259)=@cor(uksysdd, nlsysdd)
rolcorukfr(!k+1+259)=@cor(uksysdd, frsysdd)
rolcorukit(!k+1+259)=@cor(uksysdd, itsysdd)
rolcoruksp(!k+1+259)=@cor(uksysdd, essysdd)

rolcorusger(!k+1+259)=@cor(ussysdd, bdsysdd)
rolcorusnl(!k+1+259)=@cor(ussysdd, nlsysdd)
9

rolcorusfr(!k+1+259)=@cor(ussysdd, frsysdd)
rolcorusit(!k+1+259)=@cor(ussysdd, itsysdd)
rolcorussp(!k+1+259)=@cor(ussysdd, essysdd)

rolcorgernl(!k+1+259)=@cor(bdsysdd, nlsysdd)
rolcorgerfr(!k+1+259)=@cor(bdsysdd, frsysdd)
rolcorgerit(!k+1+259)=@cor(bdsysdd, itsysdd)
rolcorgersp(!k+1+259)=@cor(bdsysdd, essysdd)

rolcornlfr(!k+1+259)=@cor(nlsysdd, frsysdd)
rolcornlit(!k+1+259)=@cor(nlsysdd, itsysdd)
rolcornlsp(!k+1+259)=@cor(nlsysdd, essysdd)

rolcorfrit(!k+1+259)=@cor(frsysdd, itsysdd)
rolcorfrsp(!k+1+259)=@cor(frsysdd, essysdd)

rolcoritsp(!k+1+259)=@cor(itsysdd, essysdd)
next

'fing the average rolling correlation across all country pairs

vector(3105) rolcoravg

for !i = 1 to 3105
rolcoravg(!i) = (rolcoriruk(!i) + rolcorirus(!i) + rolcorirger(!i) + rolcorirnl(!i) + rolcorirfr(!i) + rolcoririt(!i) +
rolcorirsp(!i) + rolcorukus(!i) + rolcorukger(!i) + rolcoruknl(!i) + rolcorukfr(!i) + rolcorukit(!i) + rolcoruksp(!i) +
rolcorusger(!i) + rolcorusnl(!i) + rolcorusfr(!i) + rolcorusit(!i) + rolcorussp(!i) + rolcorgernl(!i) + rolcorgerfr(!i) +
rolcorgerit(!i) + rolcorgersp(!i) + rolcornlfr(!i) + rolcornlit(!i) + rolcornlsp(!i) + rolcorfrit(!i) + rolcorfrsp(!i) +
rolcoritsp(!i))/28
next

smpl @all

mtos(rolcoravg, rolcoravgser)
mtos(rolcoriruk, rolcorirukser)
mtos(rolcorirus, rolcorirusser)
mtos(rolcorirger, rolcorirgerser)
mtos(rolcorirnl, rolcorirnlser)
mtos(rolcorirfr, rolcorirfrser)
mtos(rolcoririt, rolcoriritser)
mtos(rolcorirsp, rolcorirspser)

'HP filter
for %C avg iruk irus irger irnl irfr irit irsp
rolcor{%C}ser.hpf hpt_rolcor{%C}
next

'---------------------------------------------------------------------------------------------------------------
'compute rolling correlations b/w the % change in dd's of Ireland's and other countries' systems - for all country
pairs

smpl @all

vector(3105) wrolcoriruk
vector(3105) wrolcorirus
vector(3105) wrolcorirger
vector(3105) wrolcorirnl
vector(3105) wrolcorirfr
vector(3105) wrolcoririt
vector(3105) wrolcorirsp
10

vector(3105) wrolcorukus
vector(3105) wrolcorukger
vector(3105) wrolcoruknl
vector(3105) wrolcorukfr
vector(3105) wrolcorukit
vector(3105) wrolcoruksp

vector(3105) wrolcorusger
vector(3105) wrolcorusnl
vector(3105) wrolcorusfr
vector(3105) wrolcorusit
vector(3105) wrolcorussp

vector(3105) wrolcorgernl
vector(3105) wrolcorgerfr
vector(3105) wrolcorgerit
vector(3105) wrolcorgersp

vector(3105) wrolcornlfr
vector(3105) wrolcornlit
vector(3105) wrolcornlsp
vector(3105) wrolcorfrit
vector(3105) wrolcorfrsp

vector(3105) wrolcoritsp

for !k=0 to (3104-259)


smpl 1/03/1994+!k 1/03/1994+!k+259

wrolcoriruk(!k+1+259)=@cor(wirsys, wuksys)
wrolcorirus(!k+1+259)=@cor(wirsys, wussys)

wrolcorirger(!k+1+259)=@cor(wirsys, wbdsys)
wrolcorirnl(!k+1+259)=@cor(wirsys, wnlsys)
wrolcorirfr(!k+1+259)=@cor(wirsys, wfrsys)
wrolcoririt(!k+1+259)=@cor(wirsys, witsys)
wrolcorirsp(!k+1+259)=@cor(wirsys, wessys)

wrolcorukus(!k+1+259)=@cor(wuksys, wussys)
wrolcorukger(!k+1+259)=@cor(wuksys, wbdsys)
wrolcoruknl(!k+1+259)=@cor(wuksys, wnlsys)
wrolcorukfr(!k+1+259)=@cor(wuksys, wfrsys)
wrolcorukit(!k+1+259)=@cor(wuksys, witsys)
wrolcoruksp(!k+1+259)=@cor(wuksys, wessys)

wrolcorusger(!k+1+259)=@cor(wussys, wbdsys)
wrolcorusnl(!k+1+259)=@cor(wussys, wnlsys)
wrolcorusfr(!k+1+259)=@cor(wussys, wfrsys)
wrolcorusit(!k+1+259)=@cor(wussys, witsys)
wrolcorussp(!k+1+259)=@cor(wussys, wessys)

wrolcorgernl(!k+1+259)=@cor(wbdsys, wnlsys)
wrolcorgerfr(!k+1+259)=@cor(wbdsys, wfrsys)
wrolcorgerit(!k+1+259)=@cor(wbdsys, witsys)
wrolcorgersp(!k+1+259)=@cor(wbdsys, wessys)

wrolcornlfr(!k+1+259)=@cor(wnlsys, wfrsys)
wrolcornlit(!k+1+259)=@cor(wnlsys, witsys)
wrolcornlsp(!k+1+259)=@cor(wnlsys, wessys)

wrolcorfrit(!k+1+259)=@cor(wfrsys, witsys)
11

wrolcorfrsp(!k+1+259)=@cor(wfrsys, wessys)

wrolcoritsp(!k+1+259)=@cor(witsys, wessys)
next

'fing the average rolling correlation across all country pairs

vector(3105) wrolcoravg

for !i = 1 to 3105
wrolcoravg(!i) = (wrolcoriruk(!i) + wrolcorirus(!i) + wrolcorirger(!i) + wrolcorirnl(!i) + wrolcorirfr(!i) +
wrolcoririt(!i) + wrolcorirsp(!i) + wrolcorukus(!i) + wrolcorukger(!i) + wrolcoruknl(!i) + wrolcorukfr(!i) + wrolcorukit(!i)
+ wrolcoruksp(!i) + wrolcorusger(!i) + wrolcorusnl(!i) + wrolcorusfr(!i) + wrolcorusit(!i) + wrolcorussp(!i) +
wrolcorgernl(!i) + wrolcorgerfr(!i) + wrolcorgerit(!i) + wrolcorgersp(!i) + wrolcornlfr(!i) + wrolcornlit(!i) +
wrolcornlsp(!i) + wrolcorfrit(!i) + wrolcorfrsp(!i) + wrolcoritsp(!i))/28
next

smpl @all

mtos(wrolcoravg, wrolcoravgser)
mtos(wrolcoriruk, wrolcorirukser)
mtos(wrolcorirus, wrolcorirusser)
mtos(wrolcorirger, wrolcorirgerser)
mtos(wrolcorirnl, wrolcorirnlser)
mtos(wrolcorirfr, wrolcorirfrser)
mtos(wrolcoririt, wrolcoriritser)
mtos(wrolcorirsp, wrolcorirspser)

'HP filter
for %C avg iruk irus irger irnl irfr irit irsp
wrolcor{%C}ser.hpf hpt_wrolcor{%C}
next

'---------------------------------------------------------------------------------------------------------------
'compute rolling correlations b/w dd's of the Irish banks and US, UK, and GER

smpl @all

vector(3105) rolcorir1uk
vector(3105) rolcorir2uk
vector(3105) rolcorir3uk

vector(3105) rolcorir1us
vector(3105) rolcorir2us
vector(3105) rolcorir3us

vector(3105) rolcorir1ger
vector(3105) rolcorir2ger
vector(3105) rolcorir3ger

for !k=0 to (3104-259)


smpl 1/03/1994+!k 1/03/1994+!k+259

rolcorir1uk(!k+1+259)=@cor(irbdd1, uksysdd)
rolcorir1us(!k+1+259)=@cor(irbdd1, ussysdd)
rolcorir1ger(!k+1+259)=@cor(irbdd1, bdsysdd)

rolcorir2uk(!k+1+259)=@cor(irbdd2, uksysdd)
rolcorir2us(!k+1+259)=@cor(irbdd2, ussysdd)
rolcorir2ger(!k+1+259)=@cor(irbdd2, bdsysdd)
12

rolcorir3uk(!k+1+259)=@cor(irbdd3, uksysdd)
rolcorir3us(!k+1+259)=@cor(irbdd3, ussysdd)
rolcorir3ger(!k+1+259)=@cor(irbdd3, bdsysdd)
next

smpl @all

mtos(rolcorir1uk, rolcorir1ukser)
mtos(rolcorir1us, rolcorir1usser)
mtos(rolcorir1ger, rolcorir1gerser)
mtos(rolcorir2uk, rolcorir2ukser)
mtos(rolcorir2us, rolcorir2usser)
mtos(rolcorir2ger, rolcorir2gerser)
mtos(rolcorir3uk, rolcorir3ukser)
mtos(rolcorir3us, rolcorir3usser)
mtos(rolcorir3ger, rolcorir3gerser)

'---------------------------------------------------------------------------------------------------------------
'compute rolling correlations b/w the % change in dd's of Irish banks and US, UK, and GER

smpl @all

vector(3105) wrolcorir1uk
vector(3105) wrolcorir1us
vector(3105) wrolcorir1ger

vector(3105) wrolcorir2uk
vector(3105) wrolcorir2us
vector(3105) wrolcorir2ger

vector(3105) wrolcorir3uk
vector(3105) wrolcorir3us
vector(3105) wrolcorir3ger

for !k=0 to (3104-259)


smpl 1/03/1994+!k 1/03/1994+!k+259

wrolcorir1uk(!k+1+259)=@cor(wdir1, wuksys)
wrolcorir1us(!k+1+259)=@cor(wdir1, wussys)
wrolcorir1ger(!k+1+259)=@cor(wdir1, wbdsys)

wrolcorir2uk(!k+1+259)=@cor(wdir2, wuksys)
wrolcorir2us(!k+1+259)=@cor(wdir2, wussys)
wrolcorir2ger(!k+1+259)=@cor(wdir2, wbdsys)

wrolcorir3uk(!k+1+259)=@cor(wdir3, wuksys)
wrolcorir3us(!k+1+259)=@cor(wdir3, wussys)
wrolcorir3ger(!k+1+259)=@cor(wdir3, wbdsys)
next

smpl @all

mtos(wrolcorir1uk, wrolcorir1ukser)
mtos(wrolcorir1us, wrolcorir1usser)
mtos(wrolcorir1ger, wrolcorir1gerser)
mtos(wrolcorir2uk, wrolcorir2ukser)
mtos(wrolcorir2us, wrolcorir2usser)
13

mtos(wrolcorir2ger, wrolcorir2gerser)
mtos(wrolcorir3uk, wrolcorir3ukser)
mtos(wrolcorir3us, wrolcorir3usser)
mtos(wrolcorir3ger, wrolcorir3gerser)

'This section runs the ordered logit regressions

smpl @all

'------------------------Ireland: cross-country contagion-------------------------------------------------------

'Ordered logit regression: Options: d=arg (default="n"): Specify likelihood: normal likelihood function, ordered
probit ("n" ), logistic likelihood function, ordered logit ("l"), Type I extreme value likelihood function, ordered
Gompit ("x").

'equation eql1.ordered(d=l) coexcirser c coexcirser(-1) indstmktser yieldcurve voliseq volnasdaq ---------- add
yield curve when available

'equation eql2.ordered(d=l) coexcirser c coexcirser(-1) indstmktser yieldcurve voliseq volnasdaq coexcfrser(-1)


coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcukmodser(-1) coexcusmodser(-
1) ---------- add yield curve when available

'equation eql1.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq

'equation eql2.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq


coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcukmodser(-1)
coexcusmodser(-1)

'----------------------------------------------------------------------------------------
'add interest rate

genr intrate=gigb10yr - gigb10yr(-5)

'equation eqli1.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq intrate

'equation eqli2.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq intrate


coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcukmodser(-1)
coexcusmodser(-1)

'------------------------Ireland: in-country contagion-------------------------------------------------------

'generate and convert the Irish banks coexceedances to vectors

'vector(3105) coexcbankir1
'vector(3105) coexcbankir2
'vector(3105) coexcbankir3
'coexcbankir1=@columnextract(coexc,11)
'coexcbankir2=@columnextract(coexc,12)
'coexcbankir3=@columnextract(coexc,13)
'mtos(coexcbankir1,coexcbankir1ser)
'mtos(coexcbankir2,coexcbankir2ser)
14

'mtos(coexcbankir3,coexcbankir3ser)

'ordered logit regression, --- interest rate not in shorter regressions !!!:

'equation eql3.ordered(d=l) coexcbankir1ser c coexcbankir1ser(-1) indstmktser voliseq volnasdaq


coexcukmodser(-1) coexcusmodser(-1) coexcbankir2ser(-1) coexcbankir3ser(-1)

'equation eql3e.ordered(d=l) coexcbankir1ser c coexcbankir1ser(-1) indstmktser voliseq volnasdaq


intrate coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1)
coexcukmodser(-1) coexcusmodser(-1) coexcbankir2ser(-1) coexcbankir3ser(-1)

'equation eql4.ordered(d=l) coexcbankir2ser c coexcbankir2ser(-1) indstmktser voliseq volnasdaq


coexcukmodser(-1) coexcusmodser(-1) coexcbankir1ser(-1) coexcbankir3ser(-1)

'equation eql4e.ordered(d=l) coexcbankir2ser c coexcbankir2ser(-1) indstmktser voliseq volnasdaq


intrate coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1)
coexcukmodser(-1) coexcusmodser(-1) coexcbankir1ser(-1) coexcbankir3ser(-1)

'equation eql5.ordered(d=l) coexcbankir3ser c coexcbankir3ser(-1) indstmktser voliseq volnasdaq


coexcukmodser(-1) coexcusmodser(-1) coexcbankir1ser(-1) coexcbankir2ser(-1)

'equation eql5e.ordered(d=l) coexcbankir3ser c coexcbankir3ser(-1) indstmktser voliseq volnasdaq


intrate coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1)
coexcukmodser(-1) coexcusmodser(-1) coexcbankir1ser(-1) coexcbankir2ser(-1)

'----------------------The basic regression for the in-country regressions above:

'equation eql3b.ordered(d=l) coexcbankir1ser c coexcbankir1ser(-1) indstmktser voliseq volnasdaq


intrate

'equation eql4b.ordered(d=l) coexcbankir2ser c coexcbankir2ser(-1) indstmktser voliseq volnasdaq


intrate

'equation eql5b.ordered(d=l) coexcbankir3ser c coexcbankir3ser(-1) indstmktser voliseq volnasdaq


intrate

'------------------------Other countries: cross-country contagion------------------------------------------

'equation eqloc1.ordered(d=l) coexcusmodser c coexcusmodser(-1) indstmktser volnasdaq coexcfrser(-


1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcukmodser(-1)
coexcirmodser(-1)

'equation eqloc2.ordered(d=l) coexcukmodser c coexcukmodser(-1) indstmktser volnasdaq coexcfrser(-


1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcusmodser(-1)
coexcirmodser(-1)

'equation eqloc3.ordered(d=l) coexcfrser c coexcfrser(-1) indstmktser volnasdaq coexcukmodser(-1)


coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcusmodser(-1) coexcirmodser(-1)

'equation eqloc4.ordered(d=l) coexcgermodser c coexcgermodser(-1) indstmktser volnasdaq


coexcukmodser(-1) coexcfrser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcusmodser(-1)
coexcirmodser(-1)

'equation eqloc5.ordered(d=l) coexcnlser c coexcnlser(-1) indstmktser volnasdaq coexcukmodser(-1)


coexcfrser(-1) coexcitmodser(-1) coexcgermodser(-1) coexcspmodser(-1) coexcusmodser(-1) coexcirmodser(-1)
15

'equation eqloc6.ordered(d=l) coexcitmodser c coexcitmodser(-1) indstmktser volnasdaq


coexcukmodser(-1) coexcfrser(-1) coexcgermodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcusmodser(-1)
coexcirmodser(-1)

'equation eqloc7.ordered(d=l) coexcspmodser c coexcspmodser(-1) indstmktser volnasdaq


coexcukmodser(-1) coexcfrser(-1) coexcgermodser(-1) coexcnlser(-1) coexcitmodser(-1) coexcusmodser(-1)
coexcirmodser(-1)

'------------------The basic regressions for the above extended versions:

'equation eqloc1b.ordered(d=l) coexcusmodser c coexcusmodser(-1) indstmktser volnasdaq

'equation eqloc2b.ordered(d=l) coexcukmodser c coexcukmodser(-1) indstmktser volnasdaq

'equation eqloc3b.ordered(d=l) coexcfrser c coexcfrser(-1) indstmktser volnasdaq

'equation eqloc4b.ordered(d=l) coexcgermodser c coexcgermodser(-1) indstmktser volnasdaq

'equation eqloc5b.ordered(d=l) coexcnlser c coexcnlser(-1) indstmktser volnasdaq

'equation eqloc6b.ordered(d=l) coexcitmodser c coexcitmodser(-1) indstmktser volnasdaq

'equation eqloc7b.ordered(d=l) coexcspmodser c coexcspmodser(-1) indstmktser volnasdaq

'------------------------Ireland: cross-country contagion, split sample-------------------------------

'----------- short version of model does not contain interest rates !!!!!:

smpl 03/01/1994 12/31/1998

'equation eqlsam11.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq

'equation eqlsam21.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq


coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcukmodser(-1)
coexcusmodser(-1)

smpl 01/01/1999 11/25/2005

'equation eqlsam12.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq

'equation eqlsam22.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq


coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1) coexcukmodser(-1)
coexcusmodser(-1)

smpl 03/01/1994 12/31/1998

'equation eqlsam31.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq

'equation eqlsam41.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq


intrate coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1)
coexcukmodser(-1) coexcusmodser(-1)

smpl 01/01/1999 9/11/2001

'equation eqlsam32.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq


16

'equation eqlsam42.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq


intrate coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1)
coexcukmodser(-1) coexcusmodser(-1)

smpl 9/12/2001 11/25/2005

'equation eqlsam33.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq

'equation eqlsam43.ordered(d=l) coexcirmodser c coexcirmodser(-1) indstmktser voliseq volnasdaq


intrate coexcfrser(-1) coexcgermodser(-1) coexcitmodser(-1) coexcnlser(-1) coexcspmodser(-1)
coexcukmodser(-1) coexcusmodser(-1)

You might also like