clear all local startyear=2008 local endyear=2018 quietly{ use "...path\iMIR_iBSI1.dta" //Hier Anzahl Monate festlegen, für die pro Jahr Beobachtungen vorliegen müssen, damit Jahr nicht als Missing klassifiziert wird local Min_Numb=12 //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //Kreditwachstum berechnen //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //Nullwerte bei Stocks durch Missings ersetzen replace Stocks_WB=. if Stocks_WB==0 replace Flows_WB=. if Stocks_WB==. replace Stocks_NFU=. if Stocks_NFU==0 replace Flows_NFU=. if Flows_NFU==. //------------------------------------- //Kreditwachstum berechnen //------------------------------------- local varlist="WB NFU" //Stock im Dezember des Vorjahres foreach var of local varlist{ sort mfi year month gen YStocks_`var'_help=0 replace YStocks_`var'_help=Stocks_`var'[_n-1] if month==1 by mfi year: egen YStocks_`var'=max(YStocks_`var'_help) drop Stocks_`var' YStocks_`var'_help replace YStocks_`var'=. if YStocks_`var'==0 //Summe Flows by mfi year: egen YFlows_`var'=sum(Flows_`var') //Beobachtungen mit Missings in Stock-Variable löschen replace YFlows_`var'=. if YStocks_`var'==. //Nur vollständige Jahre behalten gen Obs=0 replace Obs=1 if Flows_`var'!=. by mfi year: egen N_Year_Obs=sum(Obs) replace YFlows_`var'=. if N_Year_Obs<`Min_Numb' drop Obs drop N_Year_Obs //Wachstum berechnen gen Growth_`var'=(YFlows_`var'/YStocks_`var')*100 drop Flows_`var' } //----------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------- //Kreditwachstum klein- und großvolumige Kredite auf Basis der Neugeschäftsvolumina aus der ZiSta //----------------------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------------------- //Berechnung Neugeschäftsvolumina (auch für Jahre mit weniger Beobachtungen als Min_Numb local buckets="_1 _1_5 _5" local categories="_NFUKL _NFUGR" foreach var1 of local buckets{ foreach var2 of local categories{ replace NBV`var2'`var1'=0 if NBV`var2'`var1'==. } } gen NBV_NFUKL=NBV_NFUKL_1+NBV_NFUKL_1_5+NBV_NFUKL_5 gen NBV_NFUGR=NBV_NFUGR_1+NBV_NFUGR_1_5+NBV_NFUGR_5 by mfi year: egen YNBV_NFUKL=sum(NBV_NFUKL) by mfi year: egen YNBV_NFUGR=sum(NBV_NFUGR) //Nur Jahre mit ausreichender Anzahl an Monaten behalten local nfu_types="NFUKL NFUGR" foreach var of local nfu_types{ gen test1=0 replace test1=1 if YNBV_`var'!=0 sort mfi year by mfi year: egen test2=sum(test1) replace YNBV_`var'=. if test2<`Min_Numb' drop test1 drop test2 } gen Growth_NFUKL=(YNBV_NFUKL/YStocks_NFU)*100 gen Growth_NFUGR=(YNBV_NFUGR/YStocks_NFU)*100 drop YNBV_NFUKL drop YNBV_NFUGR //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- //Kreditzinsen und EInlagezinsen berechnen // //Hinweis: falls Volumen einer Kategorie, für die Zinsen berechnet werden, //den Wert Null annehmen sollte, entsteht automatisch Missing-Value, da durch //Null (Volumen) dividiert wird. //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- **Hier die durchschnittlichen Zinsbindungsfristen für die einzelnen Zinsbindungsbuckets angeben local nfc1=0.25 local nfc1_5=3 local nfc5=10 local hh1=0.25 local hh1_5=3 local hh5_10=7 local hh10=13 //------------------------------- //Kreditzinsen NFUs //------------------------------- local buckets="_1 _1_5 _5" local categories="_NFUKL _NFUGR" foreach var1 of local buckets{ foreach var2 of local categories{ replace NBV`var2'`var1'=0 if NBV`var2'`var1'==. replace IR`var2'`var1'=0 if NBV`var2'`var1'==0 replace NBV`var2'`var1'=0 if (IR`var2'`var1'==. & NBV`var2'`var1'!=0) } } gen NBV_NFU=NBV_NFUGR+NBV_NFUKL gen IR_NFUKL=((IR_NFUKL_1*NBV_NFUKL_1)+(IR_NFUKL_1_5*NBV_NFUKL_1_5)+(IR_NFUKL_5*NBV_NFUKL_5))/(NBV_NFUKL) gen IR_NFUGR=((IR_NFUGR_1*NBV_NFUGR_1)+(IR_NFUGR_1_5*NBV_NFUGR_1_5)+(IR_NFUGR_5*NBV_NFUGR_5))/(NBV_NFUGR) gen IR_NFU=((IR_NFUKL_1*NBV_NFUKL_1)+(IR_NFUKL_1_5*NBV_NFUKL_1_5)+(IR_NFUKL_5*NBV_NFUKL_5)+(IR_NFUGR_1*NBV_NFUGR_1)+(IR_NFUGR_1_5*NBV_NFUGR_1_5)+(IR_NFUGR_5*NBV_NFUGR_5))/(NBV_NFU) gen FIX_NFUKL=((`nfc1'*NBV_NFUKL_1)+(`nfc1_5'*NBV_NFUKL_1_5)+(`nfc5'*NBV_NFUKL_5))/(NBV_NFUKL) gen FIX_NFUGR=((`nfc1'*NBV_NFUGR_1)+(`nfc1_5'*NBV_NFUGR_1_5)+(`nfc5'*NBV_NFUGR_5))/(NBV_NFUGR) gen FIX_NFU=((`nfc1'*(NBV_NFUKL_1+NBV_NFUGR_1))+(`nfc1_5'*(NBV_NFUKL_1_5+NBV_NFUGR_1_5))+(`nfc5'*(NBV_NFUKL_5+NBV_NFUGR_5)))/(NBV_NFU) //Nur Jahre mit ausreichender Anzahl an Monaten behalten local nfu_types="NFUKL NFUGR NFU" foreach var of local nfu_types{ gen test1=0 replace test1=1 if (IR_`var'!=. & NBV_`var'!=0) sort mfi year by mfi year: egen test2=sum(test1) replace IR_`var'=. if test2<`Min_Numb' drop test1 drop test2 } //------------------------------- //Kreditzinsen WB-Kredite //------------------------------- local buckets="_1 _1_5 _5_10 _10" foreach var of local buckets{ replace NBV_WB`var'=0 if NBV_WB`var'==. replace IR_WB`var'=0 if NBV_WB`var'==0 replace NBV_WB`var'=0 if (IR_WB`var'==. & NBV_WB`var'!=0) } gen NBV_WB=NBV_WB_1+NBV_WB_1_5+NBV_WB_5_10+NBV_WB_10 gen IR_WB=((IR_WB_1*NBV_WB_1)+(IR_WB_1_5*NBV_WB_1_5)+(IR_WB_5_10*NBV_WB_5_10)+(IR_WB_10*NBV_WB_10))/(NBV_WB) gen FIX_WB=round(((`hh1'*NBV_WB_1)+(`hh1_5'*NBV_WB_1_5)+(`hh5_10'*NBV_WB_5_10)+(`hh10'*NBV_WB_10))/(NBV_WB)) replace FIX_WB=10 if (FIX_WB>10 & FIX_WB!=.) //Nur vollständige Jahre behalten gen test1=0 replace test1=1 if (IR_WB!=. & NBV_WB!=0) sort mfi year by mfi year: egen test2=sum(test1) replace IR_WB=. if test2<12 drop test1 drop test2 //------------------------------- //Einlagenzinsen //------------------------------- local buckets="_ON _1" local categories="_HH _NFU" foreach var1 of local buckets{ foreach var2 of local categories{ replace NBV_DEP`var2'`var1'=0 if NBV_DEP`var2'`var1'==. replace IR_DEP`var2'`var1'=0 if NBV_DEP`var2'`var1'==0 replace NBV_DEP`var2'`var1'=0 if (IR_DEP`var2'`var1'==. & NBV_DEP`var2'`var1'!=0) } } gen NBV_DEP_HH=NBV_DEP_HH_ON+NBV_DEP_HH_1 gen NBV_DEP_NFU=NBV_DEP_NFU_ON+NBV_DEP_NFU_1 gen NBV_DEP=NBV_DEP_HH+NBV_DEP_NFU gen IR_DEP_HH=((IR_DEP_HH_ON*NBV_DEP_HH_ON)+(IR_DEP_HH_1*NBV_DEP_HH_1))/(NBV_DEP_HH) gen IR_DEP_NFU=((IR_DEP_NFU_ON*NBV_DEP_NFU_ON)+(IR_DEP_NFU_1*NBV_DEP_NFU_1))/(NBV_DEP_NFU) gen IR_DEP=((IR_DEP_HH_ON*NBV_DEP_HH_ON)+(IR_DEP_HH_1*NBV_DEP_HH_1)+(IR_DEP_NFU_ON*NBV_DEP_NFU_ON)+(IR_DEP_NFU_1*NBV_DEP_NFU_1))/(NBV_DEP) //Nur vollständige Jahre behalten local nfu_types="DEP_HH DEP_NFU DEP" foreach var of local nfu_types{ gen test1=0 replace test1=1 if (IR_`var'!=. & NBV_`var'!=0) sort mfi year by mfi year: egen test2=sum(test1) replace IR_`var'=. if test2<12 drop test1 drop test2 } //------------------------------------ //Hier monatliche OIS-Rates anspielen //------------------------------------ merge n:1 year month using "...path\OIS_Rates_Monthly.dta" drop if _merge==2 drop _merge sort mfi year month rename oieu10y oieur10y rename oieur3m oieur0y //Spreads und Jahresdurchschnittswerte für Kreditzinsen berechnen (gewichtet mit Neugeschäftsvolumina) local categories="_NFUKL _NFUGR _NFU _WB" foreach var of local categories{ gen OIS`var'=. local i=0 while `i'<11{ replace OIS`var'=oieur`i'y if round(FIX`var')==`i' local i=`i'+1 } gen Spread`var'=IR`var'-OIS`var' by mfi year: egen NBV`var'Y=sum(NBV`var') gen IR1`var'=(IR`var'*NBV`var')/NBV`var'Y gen Spread1`var'=(Spread`var'*NBV`var')/NBV`var'Y gen FIX1`var'=(FIX`var'*NBV`var')/NBV`var'Y by mfi year: egen IR`var'Y=sum(IR1`var') replace IR`var'Y=. if IR1`var'==. by mfi year: egen Spread`var'Y=sum(Spread1`var') replace Spread`var'Y=. if Spread1`var'==. by mfi year: egen FIX`var'Y=sum(FIX1`var') replace FIX`var'Y=. if FIX1`var'==. drop IR1`var' Spread1`var' FIX1`var' } //Jahresdurchschnittswerte für Einlagezinsen berechnen (gewichtet mit Neugeschäftsvolumina) local categories="_DEP_HH _DEP_NFU _DEP" foreach var of local categories{ by mfi year: egen NBV`var'Y=sum(NBV`var') gen IR1`var'=(IR`var'*NBV`var')/NBV`var'Y by mfi year: egen IR`var'Y=sum(IR1`var') replace IR`var'Y=. if IR1`var'==. } //---------------------------------------------- //Nur relevante Variablen behalten //---------------------------------------------- keep mfi year month Growth_WB Growth_NFU Spread_NFUKLY Spread_NFUGRY Spread_NFUY IR_NFUKLY IR_NFUGRY IR_NFUY IR_WBY Spread_WBY IR_DEP_HHY IR_DEP_NFUY IR_DEPY FIX_NFUKLY FIX_NFUGRY FIX_NFUY FIX_WBY Growth_NFUKL Growth_NFUGR NBV_NFU NBV_WB YStocks_WB YFlows_WB YStocks_NFU YFlows_NFU local varlist="Spread_NFUKL Spread_NFUGR Spread_NFU IR_NFUKL IR_NFUGR IR_NFU IR_WB Spread_WB IR_DEP_HH IR_DEP_NFU IR_DEP FIX_NFUKL FIX_NFUGR FIX_NFU FIX_WB" foreach var of local varlist{ rename `var'Y `var' } order Growth_NFU, after(month) order Growth_NFUKL, after(Growth_NFU) order Growth_NFUGR, after(Growth_NFUKL) order Growth_WB, after(Growth_NFUGR) order IR_NFU, after(Growth_WB) order IR_NFUKL, after(IR_NFU) order IR_NFUGR, after(IR_NFUKL) order Spread_NFU, after(IR_NFUGR) order Spread_NFUKL, after(Spread_NFU) order Spread_NFUGR, after(Spread_NFUKL) order IR_WB, after(Spread_NFUGR) order Spread_WB, after(IR_WB) order IR_DEP, before(IR_DEP_HH) //Jahresdaten erstellen - nur Beobachtungen aus einem Monat (hier Januar, Wahl aber beliebig, behalten) drop if month!=1 drop month } sort mfi year //***Some further data processing, code cannot be shown due to data confidentiality save "...path\iMIR_iBSI_Final.dta", replace