cbsa_bnk <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_bnk.fst",as.data.table = T)
cbsa_bnk[,msinc13Q:=ifelse(msinc13<=0.0001,"Q0",
ifelse(msinc13<0.0027235,"Q1",
ifelse(msinc13<0.0112596,"Q2",
ifelse(msinc13<0.0366354,"Q3","Q4"))))]
cbsa_bnk[,msinc13G:=ifelse(msinc13<=0.0001,"0. 0",
ifelse(msinc13<0.01,"1. Less than 1pct",
ifelse(msinc13<0.05,"2. 1 - 5pct",
ifelse(msinc13<0.1,"3. 5pct - 10pct", "4. More than 10pct"))))]
cbsa_bnk[,msinc46Q:=ifelse(msinc46<=0.0001,"Q0",
ifelse(msinc46<0.0027235,"Q1",
ifelse(msinc46<0.0112596,"Q2",
ifelse(msinc46<0.0366354,"Q3","Q4"))))]
cbsa_bnk[,msinc46G:=ifelse(msinc46<=0.0001,"0. 0",
ifelse(msinc46<0.01,"1. Less than 1pct",
ifelse(msinc46<0.05,"2. 1 - 5pct",
ifelse(msinc46<0.1,"3. 5pct - 10pct", "4. More than 10pct"))))]
#
cbsa_share<- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_share.fst",as.data.table = T)
cbsa_share[,msinc13G:=ifelse(msinc13<=0.0001,"0. 0",
ifelse(msinc13<0.01,"1. Less than 1pct",
ifelse(msinc13<0.05,"2. 1 - 5pct",
ifelse(msinc13<0.1,"3. 5pct - 10pct", "4. More than 10pct"))))]
cbsa_bnk_partrend <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_bnk_partrend.fst",as.data.table = T)
cbsa_share_partrend <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_share_partrend.fst",as.data.table = T)
HMDA Data: Refinances
files <- NULL
files <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/pre2004/OO_RF/",full.names = TRUE)
# files <- c(files,list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/pre2004/OO_RF/",full.names = TRUE))
files <- c(files,list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/OO_RF/",full.names = TRUE))
# files <- c(files,list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/OO_RF/",full.names = TRUE))
files <- files[substr(files,100,103) %in% as.character(2000:2017)] #c("2014","2015","2016","2017","2018")
hmda = lapply(files, read_fst, as.data.table = TRUE,
columns=c("asofdate","respondentid","agencycode","state","countycode","msa","actiontaken","applicantrace1","applicantincome","amountofloan","typeofpurchaser","typeofloan","applicantethnicity"))
hmda <- do.call(rbind , hmda)
# hmda <- hmda[asofd•ate>=2000 & asofdate<2017]
hmda[,lender:=paste0(agencycode,"-",respondentid)]
hmda[,countycode:=paste0(state,countycode)]
hmda[,approved:=ifelse(actiontaken %in% c("1"),1,0)]
hmda[,sold:=ifelse(typeofpurchaser !="0" & actiontaken=="1",1,ifelse(actiontaken=="1",0,NA))]
hmda[,nonwhite:=ifelse(applicantrace1=="5",0,1)]
lender_bank <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/lender_bank.fst",as.data.table = T)
hmda <- merge(hmda,lender_bank,by="lender",all.x=T)
cbsa_fips <- fread("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Crosswalk Files/cbsa_countyfips.csv")
cbsa_fips[,fips:=ifelse(nchar(fips)==4,paste0("0",fips),paste0(fips))]
hmda <- merge(hmda,cbsa_fips,by.x="countycode",by.y="fips",all.x=T)
hmda <- merge(hmda,cbsa_bnk,by.x=c("bank","cbsa","asofdate"),by.y=c("bank","cbsa","acyr"),all.x=T)
hmda[,msinc13:=ifelse(is.na(msinc13),0.00001,msinc13)]
hmda[,msinc46:=ifelse(is.na(msinc46),0.00001,msinc46)]
hmda[,bank:=ifelse(is.na(bank),lender,bank)]
hmda[,msinc13G:=ifelse(is.na(msinc13G),"0. 0",msinc13G)]
hmda[,msinc46G:=ifelse(is.na(msinc46G),"0. 0",msinc46G)]
hmda[,bank_msa:=paste(bank,cbsa)]
hmda <- hmda[!is.na(cbsa)]
hmda[,applicantincome:=as.numeric(applicantincome)]
hmda[,amountofloan:=as.numeric(amountofloan)]
hmda <- hmda[applicantincome>0 & amountofloan>0]
hmda[,msinc13G:=factor(msinc13G)]
# hmda <- within(hmda, msinc13G <- relevel(msinc13G, ref = 1))
hmda[,msinc46G:=as.factor(msinc46G)]
hmda[,hispanic:=ifelse(applicantethnicity=="1",1,0)]
hmda[,race:=ifelse(hispanic==1,"hispanic",ifelse(applicantrace1=="5","0white",ifelse(applicantrace1=="3","black","other")))]
hmda[,black:=ifelse(applicantrace1=="3",1,0)]
hmda[,actiontaken:=as.numeric(actiontaken)]
hmda[,denied:=ifelse(actiontaken %in% c(3,7),1,0)]
hmda[,typeofloan:=as.numeric(typeofloan)]
hmda[,incomelessthan70k:=ifelse(applicantincome<70,1,0)]
Descriptive Statistics
Conventional Loans
vars <- c("amountofloan","applicantincome","approved","sold","nonwhite","asofdate","hispanic","black")
stargazer(hmda[typeofloan==1,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
##
## ======================================================================
## Statistic N Mean St. Dev. Pctl(25) Median Pctl(75)
## ----------------------------------------------------------------------
## amountofloan 82,209,193 212.382 285.331 104 171 276
## applicantincome 82,209,193 99.165 132.650 50 76 116
## approved 82,209,193 0.464 0.499 0 0 1
## sold 38,168,320 0.725 0.447 0.000 1.000 1.000
## nonwhite 82,209,193 0.321 0.467 0 0 1
## asofdate 82,209,193 2,008.789 3.943 2,005 2,008 2,012
## hispanic 82,209,193 0.091 0.288 0 0 0
## black 82,209,193 0.071 0.257 0 0 0
## ----------------------------------------------------------------------
FHA Loans
stargazer(hmda[typeofloan==2,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
##
## =====================================================================
## Statistic N Mean St. Dev. Pctl(25) Median Pctl(75)
## ---------------------------------------------------------------------
## amountofloan 6,505,227 186.141 116.601 118 164 230
## applicantincome 6,505,227 71.889 72.572 43 62 88
## approved 6,505,227 0.329 0.470 0 0 1
## sold 2,139,587 0.920 0.271 1.000 1.000 1.000
## nonwhite 6,505,227 0.311 0.463 0 0 1
## asofdate 6,505,227 2,011.043 3.278 2,009 2,010 2,013
## hispanic 6,505,227 0.097 0.295 0 0 0
## black 6,505,227 0.114 0.318 0 0 0
## ---------------------------------------------------------------------
Regressions
Main Result
r <- list()
r[[1]] <- felm(approved~msinc13+msinc46+log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[actiontaken<=3 & typeofloan==1])
r[[2]] <- felm(approved~msinc13+msinc46+log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[actiontaken<=3 & typeofloan==2])
r[[3]] <- felm(approved~msinc13*incomelessthan70k+msinc46*incomelessthan70k+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[typeofloan==1 & actiontaken<=3])
r[[4]] <- felm(approved~msinc13*incomelessthan70k+msinc46*incomelessthan70k+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[typeofloan==2 & actiontaken<=3])
r[[5]] <- felm(approved~msinc13*factor(race)+msinc46*factor(race)+log(applicantincome)+log(amountofloan)|bank_msa+asofdate,data=hmda[typeofloan==1 & actiontaken<=3])
r[[6]] <- felm(approved~msinc13*factor(race)+msinc46*factor(race)+log(applicantincome)+log(amountofloan)|bank_msa+asofdate,data=hmda[typeofloan==2 & actiontaken<=3])
.printtable(r,column.labels = c("Conventional","FHA","Conventional","FHA","Conventional","FHA"),lines = list(c("Fixed Effects",rep("MSA*Bank, Yr",6))))
##
## ==========================================================================================================
## Dependent variable:
## -----------------------------------------------------------------------------
## Conventional FHA Conventional FHA Conventional FHA
## (1) (2) (3) (4) (5) (6)
## ----------------------------------------------------------------------------------------------------------
## msinc13 0.969*** -0.730*** 1.071*** -0.695*** 0.976*** -0.682***
## (0.007) (0.034) (0.009) (0.041) (0.009) (0.039)
## incomelessthan70k -0.062*** -0.065***
## (0.0001) (0.001)
## msinc46 2.323*** -1.543*** 2.505*** -1.614*** 2.414*** -1.457***
## (0.014) (0.077) (0.017) (0.088) (0.015) (0.080)
## log(applicantincome) 0.065*** 0.086*** 0.065*** 0.085***
## (0.0001) (0.0005) (0.0001) (0.0005)
## log(amountofloan) -0.021*** -0.024*** -0.009*** 0.001* -0.022*** -0.024***
## (0.0001) (0.001) (0.0001) (0.001) (0.0001) (0.001)
## msinc13:factor(race)black -0.767*** -0.462***
## (0.025) (0.071)
## msinc13:factor(race)hispanic -0.629*** -0.227***
## (0.022) (0.072)
## msinc13:factor(race)other 0.329*** 0.163***
## (0.014) (0.059)
## factor(race)black:msinc46 -1.363*** -0.666***
## (0.046) (0.098)
## factor(race)hispanic:msinc46 -1.361*** -0.440***
## (0.050) (0.131)
## factor(race)other:msinc46 0.172*** 0.099
## (0.031) (0.092)
## factor(race)black -0.097*** -0.086*** -0.101*** -0.088*** -0.095*** -0.085***
## (0.0002) (0.001) (0.0002) (0.001) (0.0002) (0.001)
## factor(race)hispanic -0.078*** -0.056*** -0.082*** -0.060*** -0.076*** -0.055***
## (0.0002) (0.001) (0.0002) (0.001) (0.0002) (0.001)
## factor(race)other -0.081*** -0.071*** -0.082*** -0.072*** -0.082*** -0.071***
## (0.0002) (0.001) (0.0002) (0.001) (0.0002) (0.001)
## msinc13:incomelessthan70k -0.330*** -0.054
## (0.012) (0.045)
## incomelessthan70k:msinc46 -0.539*** 0.124*
## (0.022) (0.064)
## ----------------------------------------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 59,698,491 3,996,517 59,698,491 3,996,517 59,698,491 3,996,517
## Adjusted R2 0.241 0.258 0.239 0.255 0.241 0.258
## ==========================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##