# # 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)]
measures[,low_x:=2-high_x]
measures[,rev_x_bin:=3-x_bin]
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_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[,high_x:=high_x-1]
reg_sample[,fips_yr:=paste(fips,year)]
reg_sample[,bank_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
low_x: This is a dummy variable that takes the value 1 if the import_sensitivity is less than the median
rev_x_bin: similar to low_x above, but three categories. 2: lowest sensitivity, 1: medium sensitivity, and 0: highest sensitivity to Chinese imports
wa_exposure: This is a bank-level variable, which calculates the weighted average exposure to chinese imports based on the county-level deposit composition
high_exposure: takes the value 1 if wa_exposure is greater than the median.
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?
min_yr = 2000
reg_formula <- as.formula("mean_apy~low_x*high_exposure|fips+CERT+year+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"))
##
## =======================================================================================================================
## Dependent variable:
## ---------------------------------------------------------------------------------------------------
## mean_apy
## CD SAV MM INTCK All
## (1) (2) (3) (4) (5)
## -----------------------------------------------------------------------------------------------------------------------
## low_x
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## high_exposure
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## low_x:high_exposure -0.001 0.018 0.032** 0.018* 0.017*
## (0.014) (0.011) (0.014) (0.009) (0.010)
##
## -----------------------------------------------------------------------------------------------------------------------
## Observations 154,434 153,297 146,775 148,502 603,008
## R2 0.952 0.804 0.795 0.717 0.762
## Adjusted R2 0.950 0.794 0.784 0.702 0.759
## Residual Std. Error 0.300 (df = 146852) 0.270 (df = 145745) 0.366 (df = 139411) 0.240 (df = 141095) 0.511 (df = 595412)
## =======================================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Sample: All banks
reg_formula <- as.formula("mean_apy~factor(rev_x_bin)*log(wa_exposure)|fips+year+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"))
##
## =======================================================================================================================================
## Dependent variable:
## ---------------------------------------------------------------------------------------------------
## mean_apy
## CD SAV MM INTCK All
## (1) (2) (3) (4) (5)
## ---------------------------------------------------------------------------------------------------------------------------------------
## factor(rev_x_bin)1
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)2
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## log(wa_exposure)
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)1:log(wa_exposure) 0.031 0.115* 0.245*** 0.105** 0.140***
## (0.057) (0.063) (0.077) (0.053) (0.050)
##
## factor(rev_x_bin)2:log(wa_exposure) 0.199** 0.147** 0.366*** 0.115* 0.217***
## (0.080) (0.069) (0.079) (0.060) (0.055)
##
## ---------------------------------------------------------------------------------------------------------------------------------------
## Observations 154,434 153,297 146,775 148,502 603,008
## R2 0.952 0.804 0.795 0.717 0.762
## Adjusted R2 0.950 0.794 0.784 0.702 0.759
## Residual Std. Error 0.300 (df = 146671) 0.270 (df = 145563) 0.366 (df = 139220) 0.240 (df = 140910) 0.511 (df = 595232)
## =======================================================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
# coef_plot_1reg(r[[1]],"high_x:high_exposure:factor(year)",2001)
Sample: Banks with total assets less than 1 billion in 2022
reg_formula <- as.formula("mean_apy~factor(rev_x_bin)*log(wa_exposure)|fips+year+CERT+PRD_TYP_JOIN|0|CERT")
r <- list()
r[[1]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="CD" & year>=min_yr & ASSET <1e6])
r[[2]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="SAV" & year>=min_yr & ASSET <1e6])
r[[3]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="MM" & year>=min_yr & ASSET <1e6])
r[[4]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="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 <1e6])
stargazer(r,type="text",column.labels = c("CD","SAV","MM","INTCK","All"))
##
## ===================================================================================================================================
## Dependent variable:
## -----------------------------------------------------------------------------------------------
## mean_apy
## CD SAV MM INTCK All
## (1) (2) (3) (4) (5)
## -----------------------------------------------------------------------------------------------------------------------------------
## factor(rev_x_bin)1
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)2
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## log(wa_exposure)
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)1:log(wa_exposure) -0.059 -0.053 -0.016 0.022 -0.004
## (0.075) (0.088) (0.114) (0.077) (0.069)
##
## factor(rev_x_bin)2:log(wa_exposure) 0.200* 0.122 0.375*** 0.074 0.195**
## (0.108) (0.110) (0.119) (0.086) (0.082)
##
## -----------------------------------------------------------------------------------------------------------------------------------
## Observations 101,090 100,653 95,162 96,518 393,423
## R2 0.959 0.849 0.831 0.780 0.788
## Adjusted R2 0.956 0.837 0.817 0.763 0.784
## Residual Std. Error 0.277 (df = 93783) 0.253 (df = 93367) 0.340 (df = 88068) 0.229 (df = 89381) 0.492 (df = 386101)
## ===================================================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Sample: Banks with total assets1-10 billion in 2022
reg_formula <- as.formula("mean_apy~factor(rev_x_bin)*log(wa_exposure)|fips+year+CERT+PRD_TYP_JOIN|0|CERT")
r <- list()
r[[1]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="CD" & year>=min_yr & ASSET <1e7 & ASSET>1e6])
r[[2]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="SAV" & year>=min_yr & ASSET <1e7 & ASSET>1e6])
r[[3]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="MM" & year>=min_yr & ASSET <1e7 & ASSET>1e6])
r[[4]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="INTCK" & year>=min_yr & ASSET <1e7 & 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])
stargazer(r,type="text",column.labels = c("CD","SAV","MM","INTCK","All"))
##
## ===================================================================================================================================
## Dependent variable:
## -----------------------------------------------------------------------------------------------
## mean_apy
## CD SAV MM INTCK All
## (1) (2) (3) (4) (5)
## -----------------------------------------------------------------------------------------------------------------------------------
## factor(rev_x_bin)1
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)2
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## log(wa_exposure)
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)1:log(wa_exposure) 0.045 0.181 0.509*** 0.091 0.200**
## (0.134) (0.133) (0.145) (0.110) (0.096)
##
## factor(rev_x_bin)2:log(wa_exposure) 0.237 0.110 0.509*** 0.111 0.243**
## (0.214) (0.121) (0.190) (0.125) (0.107)
##
## -----------------------------------------------------------------------------------------------------------------------------------
## Observations 27,849 27,461 27,146 27,005 109,461
## R2 0.955 0.783 0.782 0.671 0.743
## Adjusted R2 0.950 0.760 0.758 0.636 0.736
## Residual Std. Error 0.296 (df = 25206) 0.263 (df = 24839) 0.382 (df = 24530) 0.234 (df = 24396) 0.524 (df = 106812)
## ===================================================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Sample: Banks with total greater than10 billion in 2022
reg_formula <- as.formula("mean_apy~factor(rev_x_bin)*log(wa_exposure)|fips+year+CERT+PRD_TYP_JOIN|0|CERT")
r <- list()
r[[1]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="CD" & year>=min_yr & ASSET>1e7])
r[[2]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="SAV" & year>=min_yr & ASSET>1e7])
r[[3]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="MM" & year>=min_yr & ASSET>1e7])
r[[4]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN=="INTCK" & year>=min_yr & ASSET>1e7])
r[[5]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% c("CD","SAV","MM","INTCK") & year>=min_yr & ASSET>1e7])
stargazer(r,type="text",column.labels = c("CD","SAV","MM","INTCK","All"))
##
## ==================================================================================================================================
## Dependent variable:
## ----------------------------------------------------------------------------------------------
## mean_apy
## CD SAV MM INTCK All
## (1) (2) (3) (4) (5)
## ----------------------------------------------------------------------------------------------------------------------------------
## factor(rev_x_bin)1
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)2
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## log(wa_exposure)
## (0.000) (0.000) (0.000) (0.000) (0.000)
##
## factor(rev_x_bin)1:log(wa_exposure) 0.386** 0.208* 0.296** 0.086 0.273***
## (0.149) (0.116) (0.148) (0.087) (0.099)
##
## factor(rev_x_bin)2:log(wa_exposure) 0.198 0.068 0.145 0.085 0.143
## (0.224) (0.175) (0.178) (0.135) (0.137)
##
## ----------------------------------------------------------------------------------------------------------------------------------
## Observations 25,495 25,183 24,467 24,979 100,124
## R2 0.956 0.750 0.761 0.623 0.690
## Adjusted R2 0.953 0.733 0.744 0.598 0.685
## Residual Std. Error 0.292 (df = 23893) 0.216 (df = 23594) 0.365 (df = 22887) 0.189 (df = 23404) 0.536 (df = 98519)
## ==================================================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
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[,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"))
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 \]
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|0|CERT,data=reg_sample)
r[[2]] <- felm(log(0.0001+deposits_fips_frac)~I(rev_x_bin==0)*log(wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample)
# stargazer(r,type="text")
coef_plot_1reg(r[[1]],"log(import_sensitivity):log(wa_exposure):factor(YEAR)",1994)
coef_plot_1reg(r[[2]],"I(rev_x_bin == 0)TRUE:log(wa_exposure):factor(YEAR)",1994)
Sample: Banks with total assets less than 1 billion in 2022
r <- list()
r[[1]] <- felm(log(0.0001+deposits_fips_frac)~log(import_sensitivity)*log(wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==1])
r[[2]] <- felm(log(0.0001+deposits_fips_frac)~I(rev_x_bin==0)*log(wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==1])
# stargazer(r,type="text")
coef_plot_1reg(r[[1]],"log(import_sensitivity):log(wa_exposure):factor(YEAR)",1994)
coef_plot_1reg(r[[2]],"I(rev_x_bin == 0)TRUE:log(wa_exposure):factor(YEAR)",1994)
Sample: Banks with total assets 1-10 billion in 2022
r <- list()
r[[1]] <- felm(log(0.0001+deposits_fips_frac)~log(import_sensitivity)*log(wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==2])
r[[2]] <- felm(log(0.0001+deposits_fips_frac)~I(rev_x_bin==0)*log(wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==2])
# stargazer(r,type="text")
coef_plot_1reg(r[[1]],"log(import_sensitivity):log(wa_exposure):factor(YEAR)",1994)
coef_plot_1reg(r[[2]],"I(rev_x_bin == 0)TRUE:log(wa_exposure):factor(YEAR)",1994)
Sample: Banks with total assets greater than 10 billion in 2022
r <- list()
r[[1]] <- felm(log(0.0001+deposits_fips_frac)~log(import_sensitivity)*log(wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==0])
r[[2]] <- felm(log(0.0001+deposits_fips_frac)~I(rev_x_bin==0)*log(wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==0])
# stargazer(r,type="text")
coef_plot_1reg(r[[1]],"log(import_sensitivity):log(wa_exposure):factor(YEAR)",1994)
coef_plot_1reg(r[[2]],"I(rev_x_bin == 0)TRUE:log(wa_exposure):factor(YEAR)",1994)
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(branches_bank_frac~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample)
r[[2]] <- felm(log(0.0001+branches_bank_frac)~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample)
# r[[2]] <- felm(deposits_fips_frac~x_bin*exp_bin*factor(YEAR)|CERT|0|CERT,data=reg_sample)
# stargazer(r,type="text")
# coef_plot_1reg(r[[1]],"log(import_sensitivity):log(1 + wa_exposure):factor(YEAR)",1994)
coef_plot_1reg(r[[2]],"log(import_sensitivity):log(1 + wa_exposure):factor(YEAR)",1994)
# coef_plot_1reg(r[[2]],"x_bin:exp_bin:factor(YEAR)",1994)
Sample: Banks with total assets less than 1 billion in 2022
r <- list()
r[[1]] <- felm(branches_bank_frac~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==1])
r[[2]] <- felm(log(0.0001+branches_bank_frac)~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==1])
coef_plot_1reg(r[[2]],"log(import_sensitivity):log(1 + wa_exposure):factor(YEAR)",1994)
# coef_plot_1reg(r[[1]],"log(import_sensitivity):log(1 + wa_exposure):factor(YEAR)",1994)
Sample: Banks with total assets 1 to 10 billion in 2022
r <- list()
r[[1]] <- felm(branches_bank_frac~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==2])
r[[2]] <- felm(log(0.0001+branches_bank_frac)~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==2])
coef_plot_1reg(r[[2]],"log(import_sensitivity):log(1 + wa_exposure):factor(YEAR)",1994)
Sample: Banks with total assets greater than 10 billion in 2022
r <- list()
r[[1]] <- felm(branches_bank_frac~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==0])
r[[2]] <- felm(log(0.0001+branches_bank_frac)~log(import_sensitivity)*log(1+wa_exposure)*factor(YEAR)|bank_fips|0|CERT,data=reg_sample[size==0])
coef_plot_1reg(r[[2]],"log(import_sensitivity):log(1 + wa_exposure):factor(YEAR)",1994)