Replication File

RDP2023-05: The Impact of Interest Rates on Bank Profitability: A Retrospective Assessment Using New Cross-country Bank-level Data

Import data

Install packages

. * ssc install estout, replace
. * ssc install winsor2, replace

Define panel structure

. drop if period > date("20200720","YMD")
(133 observations deleted)

. egen bankid = group(institution_code)

. egen timeid = group(period)

. xtset bankid timeid
       panel variable:  bankid (unbalanced)
        time variable:  timeid, 1 to 68, but with gaps
                delta:  1 unit

. gen year = year(period)

. encode Bank_type, generate(size)

Cleaning

. foreach i in ROA_qtr Non_interest_income Bad_debt_charge Net_interest_income Deposit_share_of_liabilities Equity_to_asse
> ts Securities_to_assets Liquidity_ratio ST_borrowing_share Cost_to_income_ratio {
  2.         quietly summarize `i', detail
  3.         quietly generate `i'_out = inrange(`i', `r(p1)', `r(p99)')
  4.         keep if `i'_out == 1
  5. } 
(513 observations deleted)
(220 observations deleted)
(216 observations deleted)
(211 observations deleted)
(206 observations deleted)
(203 observations deleted)
(2,336 observations deleted)
(152 observations deleted)
(85 observations deleted)
(148 observations deleted)

. winsor2 Non_interest_income Bad_debt_charge Net_interest_income Deposit_share_of_liabilities Equity_to_assets Securities
> _to_assets Liquidity_ratio ST_borrowing_share, replace 

. drop if observations < 12
(81 observations deleted)

Pattern of panel participation

. xtdes, patterns(10)

  bankid:  1, 2, ..., 285                                    n =        187
  timeid:  2, 3, ..., 68                                     T =         67
           Delta(timeid) = 1 unit
           Span(timeid)  = 67 periods
           (bankid*timeid uniquely identifies each observation)

Distribution of T_i:   min      5%     25%       50%       75%     95%     max
                         1       4      18        41        63      67      67

     Freq.  Percent    Cum. |  Pattern
 ---------------------------+---------------------------------------------------------------------
       22     11.76   11.76 |  1111111111111111111111111111111111111111111111111111111111111111111
        4      2.14   13.90 |  111111111111111111111111...........................................
        4      2.14   16.04 |  11111111111111111111111111111111111111111......................1111
        3      1.60   17.65 |  1111111111111111111................................................
        3      1.60   19.25 |  11111111111111111111111111111111111111111..........................
        2      1.07   20.32 |  ...............................................................1111
        2      1.07   21.39 |  ..............................11111111111......................1111
        2      1.07   22.46 |  .......................111111111111111111......................1111
        2      1.07   23.53 |  .....................11111111111111111111..........................
        2      1.07   24.60 |  ...............11111111111111111111111111......................1111
      141     75.40  100.00 | (other patterns)
 ---------------------------+---------------------------------------------------------------------
      187    100.00         |  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Summary statistics

. g IR_low = interest_rate*low_rates

. replace IR_low = . if IR_low == 0
(5,343 real changes made, 5,343 to missing)

. g YC_low = slope*low_rates
(113 missing values generated)

. replace YC_low = . if IR_low == 0
(0 real changes made)

. 
. mat stats = J(16,6, .)

. mat rown stats = NIM ROA Non-II BDD IR YC IR-low YC-low Dep Equ Liq Sec Cost GDP CPI HP  

. mat coln stats = min p25 p50 mean p75 max

. 
. local i = 1

. 
. foreach x in Net_interest_income ROA_qtr Non_interest_income Bad_debt_charge interest_rate slope IR_low YC_low Deposit_s
> hare_of_liabilities Equity_to_assets Liquidity_ratio Securities_to_assets Cost_to_income_ratio GDP_YE CPI_YE House_price
> _YE { 
  2. 
.         qui tabstat `x', stat(min) save
  3.         mat stats [`i',1] = r(StatTotal) 
  4.         qui tabstat `x', stat(p25) save
  5.         mat stats [`i',2] = r(StatTotal) 
  6.         qui tabstat `x', stat(p50) save
  7.         mat stats [`i',3] = r(StatTotal) 
  8.         qui tabstat `x', stat(mean) save
  9.         mat stats [`i',4] = r(StatTotal) 
 10.         qui tabstat `x', stat(p75) save
 11.         mat stats [`i',5] = r(StatTotal) 
 12.         qui tabstat `x', stat(max) save
 13.         mat stats [`i',6] = r(StatTotal) 
 14. 
.         local i = `i'+1
 15. }

. 
. matlist stats

             |       min        p25        p50       mean        p75        max 
-------------+------------------------------------------------------------------
         NIM |  .3190388   1.958902   2.473907   2.579747   3.178381   5.496604 
         ROA | -2.904024   .3186813   .5378653   .5934071   .8097187   4.209332 
      Non-II | -.2385239   .4630523   .7975479   .9931841   1.310853   4.193133 
         BDD |  -.204739          0   .0403925   .0873728   .1173284   .8826021 
          IR |  .1366667   1.953333   3.716667   3.761155       5.37       7.35 
          YC | -1.025795  -.1446032   .4765128   .4546386   1.013607   2.372897 
      IR-low |  .1366667       1.26        1.5   1.358441   1.503333   1.953333 
      YC-low |         0          0          0   .2119411       .235   1.279032 
         Dep |  27.04726   88.76015   96.33673   89.57199   98.11797   99.28164 
         Equ |  .1458985    6.27523   7.605585   7.833354    9.45254   16.93229 
         Liq |  .9260615   9.017147   14.19326   15.34408    18.8272    54.5832 
         Sec |         0    2.01814   10.29481   10.43601   14.48731   42.01105 
        Cost |  10.48387   63.16951    74.8996   71.65001   84.98034   128.3853 
         GDP | -6.356901   2.124595   2.677995   2.711409   3.244051   4.940627 
         CPI | -.3478261   1.829826   2.309913   2.400369   2.989691   4.988662 
          HP | -7.537486  -.6639602   4.928636   4.352084   8.840688   20.03611 

Variables for regression analysis

. * Variables
. gen major = 0

. replace major = 1 if Bank_type == "Major_bank"
(261 real changes made)

. g irmajor = interest_rate*major

. g irlow = interest_rate*low

. g irmajorlow = interest_rate*major*low_rates

. g slopemajor = slope*major
(113 missing values generated)

. g slopelow = slope*low
(113 missing values generated)

. g slopemajorlow = slope*major*low_rates
(113 missing values generated)

. 
. g irlowforlong = interest_rate*below_200

. g slopelowforlong = slope*below_200
(113 missing values generated)

. g irlowforlongmajor = interest_rate*below_200*major

. g slopelowforlongmajor = slope*below_200*major
(113 missing values generated)

. 
. * Interest rate variables interacted with low and large bank dummy variables
. global IR_vars ///
> interest_rate slope irmajor slopemajor irlow slopelow irmajorlow slopemajorlow i.major i.low_rates i.major#i.low_rates  
>          

. 
. * Interest rate variables interacted with lower-for-longer variable and large bank dummy variable
. global IR_vars_lower4longer ///
> interest_rate slope irmajor slopemajor irlowforlong slopelowforlong irlowforlongmajor slopelowforlongmajor i.major i.low
> _rates i.major#i.low_rates below_200 c.below_200#i.major

. 
. * Lagged bank-level controls
. global controls_lag ///
> L.Deposit_share_of_liabilities L.Equity_to_assets L.Liquidity_ratio 

. 
. * Macroeconomic control variables
. global macro CPI_YE GDP_YE House_price_YE

Results for Table 3

. gsort bankid timeid

. eststo clear

. eststo: qui xtreg Net_interest_income L.Net_interest_income $IR_vars $controls_lag $macro, fe ro
(est1 stored)

. est sto NIM

. eststo: qui xtreg ROA_qtr L.ROA_qtr $IR_vars $controls_lag $macro, fe ro
(est2 stored)

. est sto ROA

. eststo: qui xtreg Non_interest_income L.Non_interest_income $IR_vars $controls_lag $macro, fe ro
(est3 stored)

. est sto NII

. eststo: qui xtreg Bad_debt_charge L.Bad_debt_charge $IR_vars $controls_lag $macro, fe ro
(est4 stored)

. est sto LLP

. esttab NIM ROA NII LLP, mtitle("NIM" "ROA" "NII" "LLP") varwidth(50) onecell nogap not r2 star (* 0.10 ** 0.05 *** 0.01)
>  cells(b(fmt(3) star)) order(interest_rate slope irmajor slopemajor irlow slopelow irmajorlow slopemajorlow L.Deposit_sh
> are_of_liabilities L.Liquidity_ratio L.Equity_to_assets GDP_YE CPI_YE House_price_YE L.Net_interest_income) drop(0.major
>  1.major 0.low_rates 1.low_rates 0.major#0.low_rates 0.major#1.low_rates 1.major#0.low_rates 1.major#1.low_rates) replac
> e

------------------------------------------------------------------------------------------------------------------
                                                            (1)             (2)             (3)             (4)   
                                                            NIM             ROA             NII             LLP   
                                                              b               b               b               b   
------------------------------------------------------------------------------------------------------------------
interest_rate                                             0.070***        0.063***        0.102***        0.015***
slope                                                     0.054***        0.046***        0.059***        0.007*  
irmajor                                                  -0.056***       -0.067***       -0.037**         0.023***
irmajorlow                                                0.021           0.002           0.074***       -0.050*  
slopemajor                                               -0.026**        -0.110***       -0.048**         0.078***
slopemajorlow                                            -0.012           0.265**         0.160**        -0.155***
irlow                                                    -0.024           0.008          -0.050**        -0.039***
slopelow                                                 -0.040***       -0.021          -0.061***        0.008   
L.Deposit_share_of_liabilities                            0.002**         0.001          -0.002           0.000   
L.Liquidity_ratio                                        -0.003**        -0.001           0.001          -0.000   
L.Equity_to_assets                                        0.030***        0.012*          0.029***        0.005*  
GDP_YE                                                    0.013***        0.014***        0.004          -0.008***
CPI_YE                                                   -0.013***       -0.004          -0.048***       -0.012***
House_price_YE                                            0.006***        0.003***       -0.001          -0.000   
L.Net_interest_income                                     0.732***                                                
L.ROA_qtr                                                                 0.217***                                
L.Non_interest_income                                                                     0.469***                
L.Bad_debt_charge                                                                                         0.173***
_cons                                                    -0.052          -0.003           0.167           0.012   
------------------------------------------------------------------------------------------------------------------
N                                                          6490            6490            6490            6490   
R-sq                                                      0.790           0.164           0.439           0.078   
------------------------------------------------------------------------------------------------------------------

Results for Table 4

. eststo clear

. eststo: qui xtreg Net_interest_income L.Net_interest_income $IR_vars_lower4longer $controls_lag $macro, fe ro
(est1 stored)

. est sto NIM

. eststo: qui xtreg ROA_qtr L.ROA_qtr $IR_vars_lower4longer $controls_lag $macro, fe ro
(est2 stored)

. est sto ROA

. eststo: qui xtreg Non_interest_income L.Non_interest_income $IR_vars_lower4longer $controls_lag $macro, fe ro
(est3 stored)

. est sto NII

. eststo: qui xtreg Bad_debt_charge L.Bad_debt_charge $IR_vars_lower4longer $controls_lag $macro, fe ro
(est4 stored)

. est sto LLM

. esttab NIM ROA NII LLP, mtitle("NIM" "ROA" "NII" "LLP") varwidth(50) onecell nogap not r2 star (* 0.10 ** 0.05 *** 0.01)
>  cells(b(fmt(3) star)) order(interest_rate slope irmajor slopemajor irlowforlong slopelowforlong irlowforlongmajor slope
> lowforlongmajor L.Deposit_share_of_liabilities L.Liquidity_ratio L.Equity_to_assets GDP_YE CPI_YE House_price_YE L.Net_i
> nterest_income ) drop(0.major 1.major 0.low_rates 1.low_rates 0.major#0.low_rates 0.major#1.low_rates 1.major#0.low_rate
> s 1.major#1.low_rates below_200 0.major#c.below_200 1.major#c.below_200) replace

------------------------------------------------------------------------------------------------------------------
                                                            (1)             (2)             (3)             (4)   
                                                            NIM             ROA             NII             LLP   
                                                              b               b               b               b   
------------------------------------------------------------------------------------------------------------------
interest_rate                                             0.070***        0.063***        0.102***        0.015***
slope                                                     0.046***        0.036***        0.058***        0.007*  
irmajor                                                  -0.056***       -0.067***       -0.034*          0.023***
irmajorlow                                                                                               -0.050*  
slopemajor                                               -0.026**        -0.109***       -0.041*          0.078***
slopemajorlow                                                                                            -0.155***
irlowforlong                                              0.006***        0.009***       -0.001                   
irlowforlongmajor                                         0.003           0.002           0.001                   
slopelowforlong                                          -0.005***       -0.005***       -0.006***                
slopelowforlongmajor                                     -0.002           0.020**         0.010                   
L.Deposit_share_of_liabilities                            0.002**         0.001          -0.002           0.000   
L.Liquidity_ratio                                        -0.003**        -0.001           0.001          -0.000   
L.Equity_to_assets                                        0.029***        0.011*          0.029***        0.005*  
GDP_YE                                                    0.005           0.003           0.002          -0.008***
CPI_YE                                                   -0.019***       -0.011          -0.049***       -0.012***
House_price_YE                                            0.007***        0.005***       -0.001          -0.000   
L.Net_interest_income                                     0.733***                                                
L.ROA_qtr                                                                 0.218***                                
L.Non_interest_income                                                                     0.469***                
L.Bad_debt_charge                                                                                         0.173***
irlow                                                                                                    -0.039***
slopelow                                                                                                  0.008   
_cons                                                    -0.005           0.056           0.179           0.012   
------------------------------------------------------------------------------------------------------------------
N                                                          6490            6490            6490            6490   
R-sq                                                      0.791           0.166           0.439           0.078   
------------------------------------------------------------------------------------------------------------------