# # 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)]
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\]
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)
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)")
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)")