# # 2000 data: NAICS Based Measure
# 
# # NAICS is available in CBP data post 1997.
# 
# 
# # cbp employment raw data
# cbp <- fread(paste0("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/CBP/county/cbp",substr(st_yr,3,4),"co.txt"))
# cbp[,naics:=as.numeric(naics)]
# cbp <- cbp[!is.na(naics)]
# 
# cbp[,imp_emp:=n1_4*2.5+n5_9*7+n10_19*15+n20_49*35+n50_99*75+n100_249*175+n250_499*375+n500_999*750+n1000_1*1250+n1000_2*2000+n1000_3*3750+n1000_4*10000]
# 
# cbp[,imp_emp:=ifelse(!is.na(emp) & emp>0,emp,imp_emp)]
# 
# cbp[,fips:=paste0(str_pad(fipstate,2,"left","0"),str_pad(fipscty,3,"left","0"))]
# 
# cbp <- cbp[,c("fips","naics","imp_emp")]
# 
# naics_sic <- fread("David Dorn/NAICS97_6_to_SIC87_4.csv")
# cbp <- merge(cbp,naics_sic,by.x="naics",by.y="naics6",allow.cartesian = T)
# cbp[,imp_emp:=imp_emp*weight]
# 
# cbp[,emp_sic_n:=sum(imp_emp),by=sic4]
# cbp[,emp_fips:=sum(imp_emp),by=fips]
# 
# 
# 
# 
# us_imports <- fread("David Dorn/Imports_from_China_by_sic87dd_1991_2014.csv")
# us_imports <- us_imports[,c("sic87dd","l_import_usch_2000","l_import_usch_2007")]
# us_imports[,chg_st_ed:=l_import_usch_2007-l_import_usch_2000]
# 
# 
# 
# emp_naics <- merge(cbp,us_imports[,c("chg_st_ed","sic87dd")],by.x="sic4",by.y="sic87dd",all.x=T)
# 
# emp_naics[,chg_per_employee:=chg_st_ed/emp_sic_n]
# 
# emp_naics[,w_chg_per_employee:=chg_per_employee*imp_emp/emp_fips]
# 
# # d_tradeusch_pw_dr is our approximation of d_tradeusch_pw in ADH
# emp_czone <- emp_naics[,.(import_sensitivity=sum(w_chg_per_employee,na.rm=T)),by=fips]
# 
# 
# 
# 
# # Other country IV
# imports_oth <- fread("David Dorn/Imports_from_China_by_sic87dd_1991_2014.csv")
# imports_oth <- imports_oth[,c("sic87dd","l_import_otch_2000","l_import_otch_2007")]
# imports_oth[,chg_st_ed:=l_import_otch_2007-l_import_otch_2000]
# 
# cbp <- fread(paste0("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/CBP/county/cbp",substr(st_yr-2,3,4),"co.txt"))
# cbp[,naics:=as.numeric(naics)]
# cbp <- cbp[!is.na(naics)]
# 
# cbp[,imp_emp:=n1_4*2.5+n5_9*7+n10_19*15+n20_49*35+n50_99*75+n100_249*175+n250_499*375+n500_999*750+n1000_1*1250+n1000_2*2000+n1000_3*3750+n1000_4*10000]
# 
# cbp[,imp_emp:=ifelse(!is.na(emp) & emp>0,emp,imp_emp)]
# 
# cbp[,fips:=paste0(str_pad(fipstate,2,"left","0"),str_pad(fipscty,3,"left","0"))]
# 
# cbp <- cbp[,c("fips","naics","imp_emp")]
# 
# naics_sic <- fread("David Dorn/NAICS97_6_to_SIC87_4.csv")
# cbp <- merge(cbp,naics_sic,by.x="naics",by.y="naics6",allow.cartesian = T)
# cbp[,imp_emp:=imp_emp*weight]
# 
# cbp[,emp_sic_n:=sum(imp_emp),by=sic4]
# cbp[,emp_fips:=sum(imp_emp),by=fips]
# 
# 
# emp_naics_oc <- merge(cbp,imports_oth[,c("chg_st_ed","sic87dd")],by.x="sic4",by.y="sic87dd",all.x=T)
# 
# emp_naics_oc[,chg_per_employee:=chg_st_ed/emp_sic_n]
# 
# emp_naics_oc[,w_chg_per_employee:=chg_per_employee*imp_emp/emp_fips]
# 
# # tradeotch_pw_lag_dr is our approximation of tradeotch_pw_lag in ADH
# emp_naics_oc <- emp_naics_oc[,.(iv_import_sensitivity=sum(w_chg_per_employee,na.rm=T)),by=fips]
# 
# measures <- merge(emp_czone,emp_naics_oc,by="fips")
# 
# measures[,x_bin:=ntile(import_sensitivity,3)]
# measures[,iv_bin:=ntile(iv_import_sensitivity,100)]
# 
# saveRDS(measures,"measures_county_levels_sic87dd.rds")
# pop_data <- list()
# 
# pop_2000 <- get_decennial(geography = "county", variables = "P001001",year = 2000)
# pop_2000 <- pop_2000[,c("GEOID","value")]
# names(pop_2000) <- c("fips","population")
# pop_2000 <- data.table(pop_2000)
# pop_2000[,fips:=as.numeric(fips)]
# pop_2000[,year:=2000]
# pop_data[[1]] <- pop_2000
# 
# #https://repository.duke.edu/catalog/f49b199b-1496-4636-91f3-36226c8e7f80
# pop_csv <- fread("county_population_2000_2010.csv")
# pop_csv <- pop_csv[year %in% 2001:2009, c("fips","tot_pop","year")]
# names(pop_csv) <- c("fips","population","year")
# pop_data[[2]] <- pop_csv
# 
# i=3
# for(yr in 2010:2019){
#   pop <- get_acs(geography = "county", variables = c("B01003_001"), year = yr)
#   pop <- data.table(pop)
#   pop <- dcast(pop,GEOID~variable,value.var = "estimate",fun.aggregate = sum)
#   names(pop) <- c("fips","population")
#   pop[,year:=yr]
#   pop_data[[i]] <- pop
#   i=i+1
# }
# 
# pop_data <- do.call(rbind,pop_data)
# 
# pop_data[,fips:=str_pad(as.character(fips),width = 5,side = "left",pad = "0")]
# 
# 
# 
# #https://apps.bea.gov/regional/downloadzip.cfm
# county_data <- fread("bea_data_1969_2021.csv")
# 
# county_data[,variable:=ifelse(Description=="Personal income (thousands of dollars)","total_income",
#                               ifelse(Description=="Population (persons) 1/","population",
#                                      ifelse(Description=="Per capita personal income (dollars) 2/","income_per_capita","")))]
# 
# county_data <- county_data[variable %in% c("income_per_capita")]
# county_data[,c("GeoName","Region","TableName","LineCode","IndustryClassification","Unit","Description"):=list(NULL)]
# setnames(county_data,"GeoFIPS","fips")
# 
# county_data <- melt(county_data,id.vars = c("fips","variable"))
# county_data[,value:=as.numeric(value)]
# county_data <- dcast(county_data,fips+variable.1~variable,value.var = "value",fun.aggregate = sum)
# county_data[,variable.1:=as.numeric(as.character(variable.1))]
# 
# setnames(county_data,"variable.1","year")
# 
# unemp <- fread("la.data.64.County.txt")
# unemp <- unemp[substr(series_id,1,5)=="LAUCN"]
# unemp[,fips:=substr(series_id,6,10)]
# unemp <- unemp[substr(series_id,19,20)=="03"]
# unemp[,value:=as.numeric(value)]
# unemp <- unemp[,.(unemp_rate=mean(value,na.rm=T)),by=.(fips,year)]
# unemp[,c("series_id","period","footnote_codes"):=list(NULL)]
# 
# county_data <- merge(county_data,unemp,by=c("fips","year"))
# county_data <- merge(county_data,pop_data,by=c("fips","year"))
# 
# saveRDS(county_data,"county_data.rds")
# sod <- list()
# i=1
# for(fl in list.files(path="C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/SOD/data",full.names = T)){
#   sod[[i]] <- fread(fl,select = c("YEAR","CERT","DEPSUMBR","DEPSUM","RSSDHCR","RSSDID","STCNTYBR","ASSET","UNINUMBR","SIMS_ESTABLISHED_DATE","SIMS_LATITUDE","SIMS_LONGITUDE","ADDRESBR"))
#   i=i+1
# }
# 
# sod <- rbindlist(sod,fill=T)
# 
# sod[,DEPSUMBR:=str_remove_all(DEPSUMBR,",")]
# sod[,DEPSUM:=str_remove_all(DEPSUM,",")]
# sod[,ASSET:=str_remove_all(ASSET,",")]
# 
# sod[,DEPSUMBR:= as.numeric(DEPSUMBR)]
# sod[,DEPSUM:= as.numeric(DEPSUM)]
# sod[,ASSET:= as.numeric(ASSET)]
# 
# sod[,fips:=str_pad(STCNTYBR,5,"left","0")]
# sod[,SIMS_ESTABLISHED_DATE:=as.Date(SIMS_ESTABLISHED_DATE,"%m/%d/%Y")]
# 
# sod[,br_id:=paste0(tolower(ADDRESBR),round(SIMS_LATITUDE,1),round(SIMS_LONGITUDE,1))]
# 
# 
# 
# 
# br <- list()
# i <- 1
# for(yr in 2001:2020){
#   temp <- sod[YEAR==yr]
#   temp_p <- sod[YEAR==(yr-1)]
#   temp_a <- sod[YEAR==(yr+1)]
#   
#   # openings <- temp[year(SIMS_ESTABLISHED_DATE)==yr]
#   openings <- temp[DEPSUMBR> 0 & !UNINUMBR %in% temp_p[DEPSUMBR> 0]$UNINUMBR]
#   openings <- rbind(openings,temp[DEPSUMBR> 0 & !br_id %in% temp_p[DEPSUMBR> 0]$br_id])
#   openings <- openings[!duplicated(openings)]
#   openings <- openings[,.(openings=.N),by=fips]
#   
#   
#   closings <- temp[DEPSUMBR> 0 & !UNINUMBR %in% temp_a[DEPSUMBR> 0]$UNINUMBR]
#   closings <- rbind(closings,temp[DEPSUMBR> 0 & !br_id %in% temp_a[DEPSUMBR> 0]$br_id])
#   closings <- closings[!duplicated(closings)]
#   closings <- closings[,.(closings=.N),by=fips]
#   
#   temp<- data.table(fips=unique(sod$fips),YEAR=yr)
#   temp <- merge(temp,openings,by="fips",all.x = T)
#   temp <- merge(temp,closings,by="fips",all.x = T)
#   temp[is.na(temp)] <- 0
#   
#   br[[i]] <- temp
#   i=i+1
# }
# 
# br <- do.call(rbind,br)
# setorder(br,fips,YEAR)
# 
# 
# saveRDS(sod,"sod_sum.rds")
# saveRDS(br,"br_open_close.rds")
measures <- readRDS("measures_county_levels_sic87dd.rds")
measures[,import_sensitivity:=(import_sensitivity-min(measures$import_sensitivity,na.rm=T)+1)]
measures[,iv_import_sensitivity:=(iv_import_sensitivity-min(measures$iv_import_sensitivity,na.rm=T)+1)]
measures[,high_x:=ntile(import_sensitivity,2)-1]
measures[,low_x:=2-high_x]
measures[,rev_x_bin:=3-x_bin]
measures[,is_q:=ntile(import_sensitivity,4)]
measures[,is_top_q:=ifelse(is_q==4,1,0)]
sod <- readRDS("sod_sum.rds")

asset_w <- sod[,c("CERT","YEAR","ASSET")]
asset_w <- asset_w[!duplicated(asset_w)]
asset_w[,tot_assets:=sum(ASSET,na.rm=T),by=YEAR]
asset_w[,w_asset:=ASSET/tot_assets]
asset_w[,q80:=quantile(ASSET,0.8,na.rm=T),by=YEAR]
asset_w[,q95:=quantile(ASSET,0.95,na.rm=T),by=YEAR]
asset_w[,size:=ifelse(ASSET <q80,1,ifelse(ASSET<q95,2,0))]

bank_import_exposure <- sod[YEAR %in% 1994:2000]

bank_import_exposure <- bank_import_exposure[,.(county_deposits=sum(DEPSUMBR,na.rm=T)),by=.(CERT,fips)]

bank_import_exposure <- merge( bank_import_exposure,measures,by="fips")

bank_import_exposure[,total_deposits:=sum(county_deposits,na.rm=T),by=CERT]

bank_import_exposure[,wa_exposure:=county_deposits*import_sensitivity/total_deposits]

bank_import_exposure <- bank_import_exposure[,.(wa_exposure=sum(wa_exposure,na.rm=T)),by=CERT]

bank_import_exposure[,exp_q:=ntile(wa_exposure,4)]
bank_import_exposure[,exp_top_q:=ifelse(exp_q==4,1,0)]
bank_import_exposure[,exp_bin:=ntile(bank_import_exposure,3)]

1 Deposit Rates

rw_inst <- fread("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/RateWatch/Deposit_InstitutionDetails.txt")
rw_inst <- rw_inst[,c("ACCT_NBR","RSSD_ID","CERT_NBR","STATE_FPS","CNTY_FPS")]
rw_inst[,fips:=paste0(str_pad(STATE_FPS,2,"left","0"),str_pad(CNTY_FPS,3,"left","0"))]
rw_inst[,c("STATE_FPS","CNTY_FPS"):=list(NULL)]

rw_summary <- readRDS("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/RateWatch/rate_watch_summary.rds")
rw_summary[,year:=year(qtr)]
rw_summary <- rw_summary[,.(mean_apy=mean(mean_apy,na.rm=T),median_apy=median(median_apy,na.rm=T)),by=.(year,ACCOUNTNUMBER,PRD_TYP_JOIN)]

rw_summary <- merge(rw_summary,rw_inst,by.x="ACCOUNTNUMBER",by.y="ACCT_NBR")

rw_bank <- rw_summary[,.(mean_apy=mean(mean_apy,na.rm=T),median_apy=median(median_apy,na.rm = T)),by=.(year,PRD_TYP_JOIN,CERT_NBR)]
rw_county <- rw_summary[,.(mean_apy=mean(mean_apy,na.rm=T),median_apy=median(median_apy,na.rm = T)),by=.(year,PRD_TYP_JOIN,fips)]
rw_bank_county <- rw_summary[,.(mean_apy=mean(mean_apy,na.rm=T),median_apy=median(median_apy,na.rm = T)),by=.(year,PRD_TYP_JOIN,CERT_NBR,fips)]
reg_sample <- merge(measures,rw_bank_county,by="fips")
reg_sample <- merge(bank_import_exposure,reg_sample,by.x="CERT",by.y="CERT_NBR")
reg_sample[,high_exposure:=ifelse(wa_exposure>14,1,0)]

reg_sample[,fips_yr:=paste(fips,year)]
reg_sample[,bank_yr:=paste(CERT,year)]
reg_sample[,state:=substr(fips,1,2)]
reg_sample[,state_yr:=paste(CERT,year)]

reg_sample <- reg_sample[log(1+wa_exposure)>=2 & log(1+wa_exposure)<=4 & log(import_sensitivity)>=2 & log(import_sensitivity)<=4]

reg_sample <- merge(reg_sample,asset_w[,c("CERT","YEAR","w_asset","ASSET")],by.x=c("CERT","year"),by.y=c("CERT","YEAR"))

Data: The following results are based on RateWatch data. RateWatch data starts in 2001, and provides deposit rates for different products offered by each branch weekly.

Sample: Bank-county-year-product level. For each, bank-county-year-product, mean_apy, was calculated and was used as the dependent variable. Key product types are CD, SAV, MM, and INTCK (checking).

Key variables:

  • import_sensitivity: County-level sensitivity to Chinese imports based on Autor et al, 2013

  • is_top_q: This is a dummy variable that takes the value 1 if the import_sensitivity is in the forth quartile

  • wa_exposure: This is a bank-level variable, which calculates the weighted average exposure to chinese imports based on the county-level deposit composition

  • exp_top_q: takes the value 1 if wa_exposure is in the forth quartile

Specification: County, Year, Bank, and Product type fixed effects. Standard errors clustered at bank level

Main takeaway: Banks that are more exposed to Chinese imports (based on wa_exposure) offer higher rates in counties that are less exposed to Chinese imports?

\[ apy=log(import.sensitivity) + State*Year FE+Bank FE+ ProductTypeFE\]

1.1 Effect of County Exposure on deposit rates

Q: “Before going to the interaction of county exposure and bank exposure, did you first examine the effect of county exposure alone on deposit rates? Basically the same regression with county, year, bank and product type fixed effects.”



A: Not able to use county fixed effects since import sensitivity is not time varying. Used state*yr fixed effects instead

min_yr = 2000
reg_formula <- as.formula("mean_apy~log(import_sensitivity)|state_yr+CERT+PRD_TYP_JOIN|0|CERT")


r <- list()

r[[1]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="CD" & year>=min_yr])
r[[2]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="SAV" & year>=min_yr])
r[[3]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="MM" & year>=min_yr])
r[[4]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="INTCK" & year>=min_yr])
r[[5]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr])

stargazer(r,type="text",column.labels = c("CD","SAV","MM","INTCK","All"),omit.stat = "ser")
## 
## ===============================================================
##                                   Dependent variable:          
##                         ---------------------------------------
##                                        mean_apy                
##                           CD      SAV     MM     INTCK    All  
##                           (1)     (2)     (3)     (4)     (5)  
## ---------------------------------------------------------------
## log(import_sensitivity) -0.019  -0.010  -0.006   0.001  -0.006 
##                         (0.019) (0.018) (0.023) (0.014) (0.015)
##                                                                
## ---------------------------------------------------------------
## Observations            154,434 153,297 146,775 148,502 603,008
## R2                       0.977   0.894   0.891   0.853   0.781 
## Adjusted R2              0.950   0.773   0.767   0.686   0.747 
## ===============================================================
## Note:                               *p<0.1; **p<0.05; ***p<0.01

\[ apy=import.sensitivity.top.q \times bank.exposure.top.q + County*Year FE+Bank FE+ ProductTypeFE\] ## Effect of Bank and County Exposure on deposit rates

min_yr = 2000
reg_formula <- as.formula("mean_apy~is_top_q*exp_top_q|fips_yr+CERT+PRD_TYP_JOIN|0|CERT")
reg_formula2 <- as.formula("mean_apy~log(import_sensitivity):log(wa_exposure)|fips_yr+CERT+PRD_TYP_JOIN|0|CERT")


r <- list()

r[[1]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="CD" & year>=min_yr])
r[[2]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN=="CD" & year>=min_yr])
r[[3]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="SAV" & year>=min_yr])
r[[4]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN=="SAV" & year>=min_yr])
r[[5]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="MM" & year>=min_yr])
r[[6]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN=="MM" & year>=min_yr])
r[[7]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="INTCK" & year>=min_yr])
r[[8]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN=="INTCK" & year>=min_yr])
r[[9]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr])
r[[10]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr])

stargazer(r,type="text",column.labels = c("CD","SAV","MM","INTCK","All"),column.separate = rep(2,5),omit.stat = "ser")
## 
## ==============================================================================================================================
##                                                                           Dependent variable:                                 
##                                          -------------------------------------------------------------------------------------
##                                                                                mean_apy                                       
##                                                 CD               SAV              MM              INTCK             All       
##                                             (1)      (2)     (3)     (4)      (5)      (6)     (7)     (8)      (9)     (10)  
## ------------------------------------------------------------------------------------------------------------------------------
## is_top_q                                                                                                                      
##                                           (0.000)          (0.000)          (0.000)          (0.000)          (0.000)         
##                                                                                                                               
## exp_top_q                                                                                                                     
##                                           (0.000)          (0.000)          (0.000)          (0.000)          (0.000)         
##                                                                                                                               
## is_top_q:exp_top_q                       -0.040***         -0.019          -0.068***         -0.011          -0.037***        
##                                           (0.014)          (0.013)          (0.017)          (0.011)          (0.011)         
##                                                                                                                               
## log(import_sensitivity):log(wa_exposure)           -0.113          -0.034            -0.239          -0.159*           -0.165 
##                                                    (0.116)         (0.103)           (0.213)         (0.096)           (0.114)
##                                                                                                                               
## ------------------------------------------------------------------------------------------------------------------------------
## Observations                              154,434  154,434 153,297 153,297  146,775  146,775 148,502 148,502  603,008  603,008
## R2                                         0.972    0.972   0.875   0.875    0.869    0.869   0.827   0.827    0.778    0.778 
## Adjusted R2                                0.958    0.958   0.811   0.811    0.799    0.799   0.736   0.736    0.757    0.757 
## ==============================================================================================================================
## Note:                                                                                              *p<0.1; **p<0.05; ***p<0.01
reg_formula <- as.formula("mean_apy~is_top_q*exp_top_q|fips_yr+CERT+PRD_TYP_JOIN|0|CERT")
reg_formula2 <- as.formula("mean_apy~log(import_sensitivity):log(wa_exposure)|fips_yr+CERT+PRD_TYP_JOIN|0|CERT")
r <- list()

r[[1]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr])
r[[2]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr])
r[[3]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr & ASSET <1e6])
r[[4]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr & ASSET <1e6])
r[[5]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr & ASSET <1e7 & ASSET>1e6])
r[[6]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr & ASSET <1e7 & ASSET>1e6])
r[[7]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr  & ASSET>1e7])
r[[8]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr  & ASSET>1e7])

stargazer(r,type="text",column.labels = c("All","Small Banks","Med. Banks","Large Banks"),column.separate = rep(2,4),omit.stat = "ser")
## 
## =============================================================================================================
##                                                                  Dependent variable:                         
##                                          --------------------------------------------------------------------
##                                                                        mean_apy                              
##                                                 All          Small Banks       Med. Banks       Large Banks  
##                                             (1)      (2)     (3)     (4)      (5)      (6)      (7)     (8)  
## -------------------------------------------------------------------------------------------------------------
## is_top_q                                                                                                     
##                                           (0.000)          (0.000)          (0.000)           (0.000)        
##                                                                                                              
## exp_top_q                                                                                                    
##                                           (0.000)          (0.000)          (0.000)           (0.000)        
##                                                                                                              
## is_top_q:exp_top_q                       -0.037***         -0.033          -0.067***          -0.032         
##                                           (0.011)          (0.020)          (0.020)           (0.022)        
##                                                                                                              
## log(import_sensitivity):log(wa_exposure)           -0.165           0.181            -0.684**         -0.370 
##                                                    (0.114)         (0.194)           (0.326)          (0.252)
##                                                                                                              
## -------------------------------------------------------------------------------------------------------------
## Observations                              603,008  603,008 393,423 393,423  109,461  109,461  100,124 100,124
## R2                                         0.778    0.778   0.806   0.806    0.768    0.767    0.712   0.712 
## Adjusted R2                                0.757    0.757   0.780   0.780    0.721    0.721    0.667   0.667 
## =============================================================================================================
## Note:                                                                             *p<0.1; **p<0.05; ***p<0.01
# coef_plot_1reg(r[[1]],"high_x:high_exposure:factor(year)",2001)

2 Deposit Composition

Data: This analysis is based on SOD data.

sod <- readRDS("sod_sum.rds")
sod <- sod[,.(deposits_bank_fips=sum(DEPSUMBR,na.rm=T)),by=.(YEAR,CERT,fips)]
sod[,total_deposits_bank:=sum(deposits_bank_fips,na.rm=T),by=.(YEAR,CERT)]
sod[,deposits_fips_frac:=deposits_bank_fips/total_deposits_bank]
reg_sample <- merge(measures,sod,by="fips")
reg_sample <- merge(bank_import_exposure,reg_sample,by="CERT")
reg_sample[,high_exposure:=ifelse(wa_exposure>14,1,0)]
reg_sample[,fips_yr:=paste(fips,YEAR)]
reg_sample[,bank_yr:=paste(CERT,YEAR)]
reg_sample[,bank_fips:=paste(fips,CERT)]

reg_sample <- reg_sample[log(1+wa_exposure)>=2 & log(1+wa_exposure)<=4 & log(import_sensitivity)>=2 & log(import_sensitivity)<=4]
reg_sample <- merge(reg_sample,asset_w[,c("CERT","YEAR","w_asset","ASSET","size")],by.x=c("CERT","YEAR"),by.y=c("CERT","YEAR"))

Following plot looks at the fraction of aggregate deposits in counties that are most sensitive (rev_x_bin=0), moderately sensitive (rev_x_bin=1), and least sensitive (rev_x_bin=3) of banks that are least exposed to (plot 1), moderately exposed to (plot 2), and most exposed to (plot 3).

Takeaway: Most exposed banks reduced the deposit share in most exposed counties after 2000, after China joined the WTO.

univar <- reg_sample[,.(total_depoits_x_y=sum(deposits_bank_fips,na.rm=T)),by=.(YEAR,rev_x_bin,exp_bin)]
univar[,total_depoits:=sum(total_depoits_x_y,na.rm=T),by=.(YEAR,exp_bin)]
univar[,deposit_frac:=total_depoits_x_y/total_depoits]

ggplot(univar,aes(x=YEAR,y=deposit_frac,color=factor(rev_x_bin)))+geom_line()+facet_wrap(~exp_bin,nrow = 1)+theme(legend.position = "bottom")

This regression is based on a bank-county-year sample.

The dependent variable is log(deposit_fips_frac) which is the fraction of deposit of a given bank coming from a county in a given year.

Specification:

\[ log(deposit.fips.frac) = log(import.sensitivity)\times log(wa.exposure) \times Year.Dummies+Bank*County FE+YearFE \] or \[ log(deposit.fips.frac) = is\_top\_q\times exp\_top\_q \times Year.Dummies+Bank*County FE+YearFE \] Takeaway: The deposit share from less exposed counties for more exposed banks started increasing around 2007. Larger effect in smaller banks.

r <- list()

r[[1]] <- felm(log(0.0001+deposits_fips_frac)~log(import_sensitivity)*log(wa_exposure)*factor(YEAR)|bank_fips+YEAR|0|CERT,data=reg_sample)
r[[2]] <- felm(log(0.0001+deposits_fips_frac)~is_top_q*exp_top_q*factor(YEAR)|bank_fips+YEAR|0|CERT,data=reg_sample)

# stargazer(r,type="text")

coef_plot_1reg(r[[1]],"log(import_sensitivity):log(wa_exposure):factor(YEAR)",1994)+ggtitle("Beta of log(import_sensitivity)*log(wa_exposure)*factor(YEAR)")

coef_plot_1reg(r[[2]],"is_top_q:exp_top_q:factor(YEAR)",1994)+ggtitle("Beta of is_top_q*exp_top_q*factor(YEAR)")

Sample: By bank size

reg_formula <- as.formula("log(0.0001+deposits_fips_frac)~is_top_q*exp_top_q*factor(YEAR)|bank_fips+YEAR|0|CERT")

r <- list()

r[[1]] <- felm(reg_formula,data=reg_sample[size==1])
r[[2]] <- felm(reg_formula,data=reg_sample[size==2])
r[[3]] <- felm(reg_formula,data=reg_sample[size==0])
# stargazer(r,type="text")


coef_plot_3reg(r[[1]],"Small banks",r[[2]],"Medium banks",r[[3]],"Large banks","is_top_q:exp_top_q:factor(YEAR)",1994)+
  ggtitle("Beta of is_top_q*exp_top_q*factor(YEAR)")

3 Branch Composition

This part is same as the one above, except, now we are looking at the number of branches, not total deposits.

sod <- readRDS("sod_sum.rds")
sod <- sod[DEPSUMBR>0]
sod <- sod[,.(branches_bank_fips=.N),by=.(YEAR,CERT,fips)]
sod[,total_branches_bank:=sum(branches_bank_fips,na.rm=T),by=.(YEAR,CERT)]
sod[,branches_bank_frac:=branches_bank_fips/total_branches_bank]
reg_sample <- merge(measures,sod,by="fips")
reg_sample <- merge(bank_import_exposure,reg_sample,by="CERT")
reg_sample[,high_exposure:=ifelse(wa_exposure>14,1,0)]
reg_sample[,high_x:=high_x-1]
reg_sample[,fips_yr:=paste(fips,YEAR)]
reg_sample[,bank_yr:=paste(CERT,YEAR)]
reg_sample[,bank_fips:=paste(fips,CERT)]

reg_sample <- reg_sample[log(1+wa_exposure)>=2 & log(1+wa_exposure)<=4 & log(import_sensitivity)>=2 & log(import_sensitivity)<=4]
reg_sample <- merge(reg_sample,asset_w[,c("CERT","YEAR","w_asset","ASSET","size")],by.x=c("CERT","YEAR"),by.y=c("CERT","YEAR"))
r <- list()

r[[1]] <- felm(log(0.0001+branches_bank_frac)~log(import_sensitivity)*log(wa_exposure)*factor(YEAR)|bank_fips+YEAR|0|CERT,data=reg_sample)
r[[2]] <- felm(log(0.0001+branches_bank_frac)~is_top_q*exp_top_q*factor(YEAR)|bank_fips+YEAR|0|CERT,data=reg_sample)

# stargazer(r,type="text")

coef_plot_1reg(r[[1]],"log(import_sensitivity):log(wa_exposure):factor(YEAR)",1994)+ggtitle("Beta of log(import_sensitivity)*log(wa_exposure)*factor(YEAR)")

coef_plot_1reg(r[[2]],"is_top_q:exp_top_q:factor(YEAR)",1994)+ggtitle("Beta of is_top_q*exp_top_q*factor(YEAR)")

Sample: By bank size

reg_formula <- as.formula("log(0.0001+branches_bank_frac)~is_top_q*exp_top_q*factor(YEAR)|bank_fips+YEAR|0|CERT")

r <- list()

r[[1]] <- felm(reg_formula,data=reg_sample[size==1])
r[[2]] <- felm(reg_formula,data=reg_sample[size==2])
r[[3]] <- felm(reg_formula,data=reg_sample[size==0])
# stargazer(r,type="text")


coef_plot_3reg(r[[1]],"Small banks",r[[2]],"Medium banks",r[[3]],"Large banks","is_top_q:exp_top_q:factor(YEAR)",1994)+
  ggtitle("Beta of is_top_q*exp_top_q*factor(YEAR)")