# # 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_12MCD10K_weekly.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_summary,by="fips")
reg_sample <- merge(bank_import_exposure,reg_sample,by.x="CERT",by.y="CERT_NBR")
reg_sample[,fips_qt:=paste(fips,qtr)]
reg_sample[,bank_qt:=paste(CERT,qtr)]
reg_sample[,state:=substr(fips,1,2)]
reg_sample[,state_qt:=paste(state,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","size")],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?
cd_rates <- reg_sample[,.(mean_apy=mean(mean_apy),sd_apy=sd(mean_apy),count=.N),by=qtr]
cd_rates <- cd_rates %>%
mutate(
lower_ci = mean_apy - 1.96 * sd_apy ,
upper_ci = mean_apy + 1.96 * sd_apy
)
ggplot(cd_rates, aes(x = qtr, y = mean_apy)) +
geom_line() +
geom_ribbon(aes(ymin = lower_ci, ymax = upper_ci), alpha = 0.3) +
labs(x = "", y = "12 Month 10k CD Rate") +
theme_minimal()
\[ apy=log(import.sensitivity) + State*Week FE+Bank*WeekFE\]
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
max_yr = 2007
r <- list()
reg_formula <- as.formula("mean_apy~log(import_sensitivity)|state_qt+bank_qt|0|CERT")
r[[1]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("median_apy~factor(is_q)|state_qt+bank_qt|0|CERT")
r[[2]] <- felm(reg_formula,data=reg_sample[ year>=min_yr & year<=max_yr])
reg_formula <- as.formula("median_apy~is_top_q|state_qt+bank_qt|0|CERT")
r[[3]] <- felm(reg_formula,data=reg_sample[ year>=min_yr & year<=max_yr])
min_yr = 2008
max_yr = 2019
reg_formula <- as.formula("mean_apy~log(import_sensitivity)|state_qt+bank_qt|0|CERT")
r[[4]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("median_apy~factor(is_q)|state_qt+bank_qt|0|CERT")
r[[5]] <- felm(reg_formula,data=reg_sample[ year>=min_yr & year<=max_yr])
reg_formula <- as.formula("median_apy~is_top_q|state_qt+bank_qt|0|CERT")
r[[6]] <- felm(reg_formula,data=reg_sample[ year>=min_yr & year<=max_yr])
stargazer(r,type="text",column.labels = c("2000-2007","2008-2019"),column.separate = c(3,3),omit.stat = "ser")
##
## ===================================================================================
## Dependent variable:
## -----------------------------------------------------------
## mean_apy median_apy mean_apy median_apy
## 2000-2007 2008-2019
## (1) (2) (3) (4) (5) (6)
## -----------------------------------------------------------------------------------
## log(import_sensitivity) 0.030 -0.047**
## (0.029) (0.019)
##
## factor(is_q)2 0.002 0.002
## (0.013) (0.009)
##
## factor(is_q)3 -0.002 -0.018*
## (0.015) (0.010)
##
## factor(is_q)4 -0.003 -0.021**
## (0.016) (0.010)
##
## is_top_q -0.003 -0.012**
## (0.010) (0.006)
##
## -----------------------------------------------------------------------------------
## Observations 3,187,263 3,187,263 3,187,263 4,316,471 4,316,471 4,316,471
## R2 0.935 0.935 0.935 0.960 0.960 0.960
## Adjusted R2 0.883 0.883 0.883 0.907 0.907 0.907
## ===================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Size=1 => Small Bank
Size=2 => Medium Bank
Size=0
=> Large Bank
min_yr = 2000
max_yr = 2007
r <- list()
reg_formula <- as.formula("mean_apy~log(import_sensitivity)*factor(size)|state_qt+bank_qt|0|CERT")
r[[1]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("mean_apy~is_top_q*factor(size)|state_qt+bank_qt|0|CERT")
r[[2]] <- felm(reg_formula,data=reg_sample[ year>=min_yr & year<=max_yr])
min_yr = 2008
max_yr = 2019
reg_formula <- as.formula("mean_apy~log(import_sensitivity)*factor(size)|state_qt+bank_qt|0|CERT")
r[[3]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr ])
reg_formula <- as.formula("mean_apy~is_top_q*factor(size)|state_qt+bank_qt|0|CERT")
r[[4]] <- felm(reg_formula,data=reg_sample[ year>=min_yr & year<=max_yr])
stargazer(r,type="text",column.labels = c("2000-2007","2008-2019"),column.separate = c(2,2),omit.stat = "ser")
##
## =============================================================================
## Dependent variable:
## ---------------------------------------
## mean_apy
## 2000-2007 2008-2019
## (1) (2) (3) (4)
## -----------------------------------------------------------------------------
## log(import_sensitivity) -0.006 -0.066***
## (0.042) (0.024)
##
## is_top_q -0.024 -0.023***
## (0.015) (0.008)
##
## factor(size)1
## (0.000) (0.000) (0.000) (0.000)
##
## factor(size)2
## (0.000) (0.000) (0.000) (0.000)
##
## log(import_sensitivity):factor(size)1 0.074 0.079
## (0.066) (0.052)
##
## log(import_sensitivity):factor(size)2 0.063 0.011
## (0.068) (0.051)
##
## is_top_q:factor(size)1 0.040* 0.042**
## (0.023) (0.017)
##
## is_top_q:factor(size)2 0.044* 0.009
## (0.024) (0.013)
##
## -----------------------------------------------------------------------------
## Observations 3,187,263 3,187,263 4,316,471 4,316,471
## R2 0.935 0.935 0.960 0.960
## Adjusted R2 0.883 0.883 0.907 0.907
## =============================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
\[ apy=import.sensitivity.top.q \times bank.exposure.top.q + County*Week FE+Bank*Week FE+ ProductTypeFE\]
min_yr = 2000
max_yr = 2007
r <- list()
reg_formula <- as.formula("mean_apy~is_top_q*exp_top_q|fips_qt+bank_qt|0|CERT")
r[[1]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("mean_apy~factor(is_q)*exp_top_q|fips_qt+bank_qt|0|CERT")
r[[2]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("mean_apy~log(import_sensitivity)*log(wa_exposure)|fips_qt+bank_qt|0|CERT")
r[[3]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
min_yr = 2008
max_yr = 2019
reg_formula <- as.formula("mean_apy~is_top_q*exp_top_q|fips_qt+bank_qt|0|CERT")
r[[4]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("mean_apy~factor(is_q)*exp_top_q|fips_qt+bank_qt|0|CERT")
r[[5]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("mean_apy~log(import_sensitivity)*log(wa_exposure)|fips_qt+bank_qt|0|CERT")
r[[6]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
stargazer(r,type="text",column.labels = c("2000-2007","2008-2019"),column.separate = c(3,3),omit.stat = "ser")
##
## ====================================================================================================
## Dependent variable:
## -----------------------------------------------------------
## mean_apy
## 2000-2007 2008-2019
## (1) (2) (3) (4) (5) (6)
## ----------------------------------------------------------------------------------------------------
## is_top_q
## (0.000) (0.000)
##
## factor(is_q)2
## (0.000) (0.000)
##
## factor(is_q)3
## (0.000) (0.000)
##
## factor(is_q)4
## (0.000) (0.000)
##
## exp_top_q
## (0.000) (0.000) (0.000) (0.000)
##
## is_top_q:exp_top_q -0.070*** -0.027*
## (0.023) (0.015)
##
## factor(is_q)2:exp_top_q -0.039 -0.030
## (0.037) (0.031)
##
## factor(is_q)3:exp_top_q -0.032 -0.033
## (0.044) (0.037)
##
## factor(is_q)4:exp_top_q -0.102** -0.057
## (0.046) (0.037)
##
## log(import_sensitivity)
## (0.000) (0.000)
##
## log(wa_exposure)
## (0.000) (0.000)
##
## log(import_sensitivity):log(wa_exposure) -0.195 -0.383**
## (0.183) (0.178)
##
## ----------------------------------------------------------------------------------------------------
## Observations 3,187,263 3,187,263 3,187,263 4,316,471 4,316,471 4,316,471
## R2 0.965 0.965 0.965 0.979 0.979 0.979
## Adjusted R2 0.894 0.894 0.894 0.905 0.905 0.905
## ====================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Size=1 => Small Bank
Size=2 => Medium Bank
Size=0
=> Large Bank
min_yr = 2000
max_yr = 2007
r <- list()
reg_formula <- as.formula("mean_apy~is_top_q*exp_top_q*factor(size)|fips_qt+bank_qt|0|CERT")
r[[1]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("mean_apy~log(import_sensitivity)*log(wa_exposure)*factor(size)|fips_qt+bank_qt|0|CERT")
r[[2]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
min_yr = 2008
max_yr = 2019
reg_formula <- as.formula("mean_apy~is_top_q*exp_top_q*factor(size)|fips_qt+bank_qt|0|CERT")
r[[3]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
reg_formula <- as.formula("mean_apy~log(import_sensitivity)*log(wa_exposure)*factor(size)|fips_qt+bank_qt|0|CERT")
r[[4]] <- felm(reg_formula,data=reg_sample[year>=min_yr & year<=max_yr])
stargazer(r,type="text",column.labels = c("2000-2007","2008-2019"),column.separate = c(2,2),omit.stat = "ser")
##
## ==============================================================================================
## Dependent variable:
## ---------------------------------------
## mean_apy
## 2000-2007 2008-2019
## (1) (2) (3) (4)
## ----------------------------------------------------------------------------------------------
## is_top_q
## (0.000) (0.000)
##
## exp_top_q
## (0.000) (0.000)
##
## log(import_sensitivity)
## (0.000) (0.000)
##
## log(wa_exposure)
## (0.000) (0.000)
##
## factor(size)1
## (0.000) (0.000) (0.000) (0.000)
##
## factor(size)2
## (0.000) (0.000) (0.000) (0.000)
##
## is_top_q:exp_top_q -0.078** -0.019
## (0.039) (0.020)
##
## is_top_q:factor(size)1 0.032 0.061***
## (0.032) (0.022)
##
## is_top_q:factor(size)2 0.082*** 0.009
## (0.029) (0.018)
##
## exp_top_q:factor(size)1
## (0.000) (0.000)
##
## exp_top_q:factor(size)2
## (0.000) (0.000)
##
## is_top_q:exp_top_q:factor(size)1 0.081 -0.028
## (0.054) (0.042)
##
## is_top_q:exp_top_q:factor(size)2 -0.058 -0.030
## (0.055) (0.032)
##
## log(import_sensitivity):log(wa_exposure) -2.114*** -0.529*
## (0.805) (0.293)
##
## log(import_sensitivity):factor(size)1 -6.445*** -0.435
## (2.306) (0.986)
##
## log(import_sensitivity):factor(size)2 -4.824** -0.426
## (2.226) (1.228)
##
## log(wa_exposure):factor(size)1
## (0.000) (0.000)
##
## log(wa_exposure):factor(size)2
## (0.000) (0.000)
##
## log(import_sensitivity):log(wa_exposure):factor(size)1 2.410*** 0.209
## (0.859) (0.366)
##
## log(import_sensitivity):log(wa_exposure):factor(size)2 1.814** 0.141
## (0.830) (0.454)
##
## ----------------------------------------------------------------------------------------------
## Observations 3,187,263 3,187,263 4,316,471 4,316,471
## R2 0.965 0.965 0.979 0.979
## Adjusted R2 0.894 0.894 0.905 0.905
## ==============================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
product_types <- c("CD","SAV","MM","INTCK")
reg_formula <- as.formula("median_apy~is_top_q*exp_top_q|fips_qt+bank_qt|0|CERT")
reg_formula2 <- as.formula("median_apy~log(import_sensitivity)*log(wa_exposure)|fips_qt+bank_qt|0|CERT")
r <- list()
r[[1]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr])
r[[2]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr])
r[[3]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr & size==1])
r[[4]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr & size==1])
r[[5]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr & size==2])
r[[6]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr & size==2])
r[[7]] <- felm(reg_formula,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr & size==0])
r[[8]] <- felm(reg_formula2,data=reg_sample[PRD_TYP_JOIN %in% product_types & year>=min_yr & size==0])
stargazer(r,type="text",column.labels = c("All","Small Banks","Med. Banks","Large Banks"),column.separate = rep(2,4),omit.stat = "ser")
##
## =====================================================================================================================
## Dependent variable:
## ----------------------------------------------------------------------------
## median_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.027* 0.034 0.030 -0.019
## (0.015) (0.063) (0.035) (0.023)
##
## log(import_sensitivity)
## (0.000) (0.000) (0.000) (0.000)
##
## log(wa_exposure)
## (0.000) (0.000) (0.000) (0.000)
##
## log(import_sensitivity):log(wa_exposure) -0.385** -0.534* 0.976*** -0.660**
## (0.178) (0.307) (0.299) (0.316)
##
## ---------------------------------------------------------------------------------------------------------------------
## Observations 4,438,788 4,438,788 2,379,508 2,379,508 828,732 828,732 1,230,548 1,230,548
## R2 0.979 0.979 0.997 0.997 0.990 0.990 0.957 0.957
## Adjusted R2 0.904 0.904 0.914 0.914 0.897 0.897 0.906 0.906
## =====================================================================================================================
## 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.
Note: Deposit fraction for bank \(b\)-county \(c\) for year \(t\) is calculated as \[ \frac{deposits_{b,c,t}}{deposits_{b,t}}\]
\[ change\text{ }in\text{ }deposit\text{ }fraction\text{ }from\text{ }2000\text{ }to\text{ }2007= \frac{deposits_{b,c,2007}}{deposits_{b,2007}}-\frac{deposits_{b,c,2000}}{deposits_{b,2000}} \]
Specification
\[ change\text{ }in\text{ }deposit\text{ }fraction\text{ }from\text{ }2000\text{ }to\text{ }2007_{bank,county} = import.sensitivitity.quartile.dumies \times top\_exp_q+BankFE+County FE \]
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]
Sample restricted to bank-counties where deposit fraction in the beginning year is at least 0.5% of the total deposits of that bank in the beginning year. Banks with exposure to just one county at the beginning year were excluded.
styr= 2000
edyr = 2007
sod_2000 <- sod[YEAR==styr,c("fips","CERT","deposits_fips_frac")]
setnames(sod_2000,"deposits_fips_frac","deposits_fips_frac_2000")
sod_2000 <- sod_2000[deposits_fips_frac_2000>0.005 & deposits_fips_frac_2000<1]
sod_2007 <- sod[YEAR==edyr,c("fips","CERT","deposits_fips_frac")]
setnames(sod_2007,"deposits_fips_frac","deposits_fips_frac_2007")
sod_2000_2007 <- merge(sod_2000,sod_2007,by=c("fips","CERT"))
sod_2000_2007[,chg_deposit_frac:=(deposits_fips_frac_2007-deposits_fips_frac_2000)]
sod_2000_2007 <- sod_2000_2007[chg_deposit_frac/deposits_fips_frac_2000> -1 & chg_deposit_frac<10]
reg_sample <- merge(sod_2000_2007,measures,by="fips")
reg_sample <- merge(bank_import_exposure,reg_sample,by="CERT")
reg_sample <- merge(reg_sample,asset_w[YEAR==2000,c("CERT","w_asset","ASSET","size")],by.x=c("CERT"),by.y=c("CERT"))
reg_formula <- as.formula("chg_deposit_frac~factor(is_q)*exp_top_q|fips+CERT|0|CERT")
r <- list()
r[[1]] <- felm(reg_formula,data=reg_sample) # ,weights = reg_sample[is.finite(chg_deposit_frac) & deposits_fips_frac_2000>0.01]$deposits_fips_frac_2000
r[[2]] <- felm(reg_formula,data=reg_sample[ size==1])
r[[3]] <- felm(reg_formula,data=reg_sample[ size==2])
r[[4]] <- felm(reg_formula,data=reg_sample[ size==0])
stargazer(r,type="text",no.space = T,column.labels = c("All","Small Banks","Med. Banks","Large Banks"),omit.stat = "ser")
##
## ====================================================================
## Dependent variable:
## --------------------------------------------
## chg_deposit_frac
## All Small Banks Med. Banks Large Banks
## (1) (2) (3) (4)
## --------------------------------------------------------------------
## factor(is_q)2
## (0.000) (0.000) (0.000) (0.000)
## factor(is_q)3
## (0.000) (0.000) (0.000) (0.000)
## factor(is_q)4
## (0.000) (0.000) (0.000) (0.000)
## exp_top_q
## (0.000) (0.000) (0.000) (0.000)
## factor(is_q)2:exp_top_q -0.021 0.030 0.034* -0.014
## (0.019) (0.052) (0.017) (0.009)
## factor(is_q)3:exp_top_q -0.011 0.074 0.031 -0.005
## (0.019) (0.049) (0.022) (0.011)
## factor(is_q)4:exp_top_q -0.099*** -0.081* -0.071*** -0.039***
## (0.019) (0.045) (0.018) (0.012)
## --------------------------------------------------------------------
## Observations 9,697 4,202 2,775 2,720
## R2 0.627 0.854 0.763 0.515
## Adjusted R2 0.143 -0.068 -0.109 -0.049
## ====================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Sample restricted to bank-counties where deposit fraction in the beginning year is at least 0.5% of the total deposits of that bank in the beginning year. Banks with exposure to just one county at the beginning year were excluded.
styr= 2007
edyr = 2019
sod_2000 <- sod[YEAR==styr,c("fips","CERT","deposits_fips_frac")]
setnames(sod_2000,"deposits_fips_frac","deposits_fips_frac_2000")
sod_2000 <- sod_2000[deposits_fips_frac_2000>0.005 & deposits_fips_frac_2000<1]
sod_2007 <- sod[YEAR==edyr,c("fips","CERT","deposits_fips_frac")]
setnames(sod_2007,"deposits_fips_frac","deposits_fips_frac_2007")
sod_2000_2007 <- merge(sod_2000,sod_2007,by=c("fips","CERT"))
sod_2000_2007[,chg_deposit_frac:=(deposits_fips_frac_2007-deposits_fips_frac_2000)]
sod_2000_2007 <- sod_2000_2007[chg_deposit_frac/deposits_fips_frac_2000> -1 & chg_deposit_frac<10]
reg_sample <- merge(sod_2000_2007,measures,by="fips")
reg_sample <- merge(bank_import_exposure,reg_sample,by="CERT")
reg_sample <- merge(reg_sample,asset_w[YEAR==2000,c("CERT","w_asset","ASSET","size")],by.x=c("CERT"),by.y=c("CERT"))
r <- list()
r[[1]] <- felm(reg_formula,data=reg_sample) # ,weights = reg_sample[is.finite(chg_deposit_frac) & deposits_fips_frac_2000>0.01]$deposits_fips_frac_2000
r[[2]] <- felm(reg_formula,data=reg_sample[size==1])
r[[3]] <- felm(reg_formula,data=reg_sample[size==2])
r[[4]] <- felm(reg_formula,data=reg_sample[size==0])
stargazer(r,type="text",no.space = T,column.labels = c("All","Small Banks","Med. Banks","Large Banks"),omit.stat = "ser")
##
## ====================================================================
## Dependent variable:
## --------------------------------------------
## chg_deposit_frac
## All Small Banks Med. Banks Large Banks
## (1) (2) (3) (4)
## --------------------------------------------------------------------
## factor(is_q)2
## (0.000) (0.000) (0.000) (0.000)
## factor(is_q)3
## (0.000) (0.000) (0.000) (0.000)
## factor(is_q)4
## (0.000) (0.000) (0.000) (0.000)
## exp_top_q
## (0.000) (0.000) (0.000) (0.000)
## factor(is_q)2:exp_top_q -0.020 -0.008 -0.017 -0.007
## (0.013) (0.030) (0.018) (0.032)
## factor(is_q)3:exp_top_q -0.021 -0.001 -0.047** -0.015
## (0.014) (0.030) (0.021) (0.033)
## factor(is_q)4:exp_top_q -0.101*** -0.128*** -0.103*** -0.038
## (0.014) (0.028) (0.020) (0.034)
## --------------------------------------------------------------------
## Observations 9,262 4,575 2,646 2,041
## R2 0.617 0.828 0.727 0.570
## Adjusted R2 0.148 0.074 -0.134 0.030
## ====================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01