HMDA Sample
cbsa_bnk <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_bnk_2.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 or more", "3. 5pct or more"))))]
#
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 - or more", "3. 5pct - or more"))))]
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)
files <- NULL
files <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/pre2004/OO_NP/",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_NP/",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 <- hmda[actiontaken != "6"]
hmda[,lender:=paste0(agencycode,"-",respondentid)]
hmda[,countycode:=paste0(state,countycode)]
hmda[,approved:=ifelse(actiontaken %in% c("1"),1,0)]
hmda[,rejected:=ifelse(actiontaken %in% c("3"),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[,medianincome:=median(applicantincome,na.rm=T),by=asofdate]
hmda[,lowincome:=ifelse(applicantincome<medianincome,1,0)]
hmda[,racecat:=ifelse(hispanic==1,"hispanic",
ifelse(applicantrace1=="5","0white",
ifelse(applicantrace1=="3","black",
ifelse(applicantrace1 %in% c("2","4"),"asian/other","na"))))]
hmda[, hispanic_black:= ifelse(hispanic==1 | applicantrace1=="3",1,0)]
hmda[,racecat2:=ifelse(hispanic==1,"hispanic",
ifelse(applicantrace1=="5","0ther",
ifelse(applicantrace1=="3","black",
ifelse(applicantrace1 %in% c("2","4"),"0ther","0ther"))))]
hmda[,msa_yr:=paste(asofdate,cbsa)]
hmda[,bank_yr:=paste(bank,asofdate)]
hmda[,suc_share:=ifelse(is.na(suc_share),0,suc_share)]
conflimit <- fread("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/conforminglimits.csv")
names(conflimit) <- c("asofdate","conflimit")
conflimit[,conflimit:=floor(conflimit/1000)]
hmda <- merge(hmda,conflimit,by="asofdate")
hmda[,jumbo:=ifelse(typeofloan==1 & amountofloan>conflimit,1,ifelse(typeofloan==1,0,NA))]
hmda[,county_year:=paste(countycode,asofdate)]
hmda1 <- hmda[typeofloan %in% 1:2 & actiontaken<=3,c("approved","msinc13","racecat2","msinc46","applicantincome","amountofloan","suc_share","county_year","bank","lowincome","msa","typeofloan","countycode","asofdate")]
# hmdanpgse <- hmda[typeofpurchaser %in% c("1","3")]
# write_fst(hmdanpgse,path="C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/hmda_np_gse.fst",compress = 100)
cbsa_bnk <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_bnk_2.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 or more", "3. 5pct or more"))))]
#
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 or more", "3. 5pct or more"))))]
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)
files <- NULL
# files <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/pre2004/OO_NP/",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_NP/",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[,medianincome:=median(applicantincome,na.rm=T),by=asofdate]
hmda[,lowincome:=ifelse(applicantincome<medianincome,1,0)]
hmda[,racecat:=ifelse(hispanic==1,"hispanic",
ifelse(applicantrace1=="5","0white",
ifelse(applicantrace1=="3","black",
ifelse(applicantrace1 %in% c("2","4"),"asian/other","na"))))]
hmda[,msa_yr:=paste(asofdate,cbsa)]
hmda[,bank_yr:=paste(bank,asofdate)]
hmda[,suc_share:=ifelse(is.na(suc_share),0,suc_share)]
hmda[,county_year:=paste(countycode,asofdate)]
hmda[, hispanic_black:= ifelse(hispanic==1 | applicantrace1=="3",1,0)]
hmda[,racecat2:=ifelse(hispanic==1,"hispanic",
ifelse(applicantrace1=="5","0ther",
ifelse(applicantrace1=="3","black",
ifelse(applicantrace1 %in% c("2","4"),"0ther","0ther"))))]
conflimit <- fread("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/conforminglimits.csv")
names(conflimit) <- c("asofdate","conflimit")
conflimit[,conflimit:=floor(conflimit/1000)]
hmda <- merge(hmda,conflimit,by="asofdate")
hmda[,jumbo:=ifelse(typeofloan==1 & amountofloan>conflimit,1,ifelse(typeofloan==1,0,NA))]
hmda2 <- hmda[typeofloan %in% 1:2 & actiontaken<=3,c("approved","msinc13","racecat2","msinc46","applicantincome","amountofloan","suc_share","county_year","bank","lowincome","msa","typeofloan","countycode","asofdate")]
hmda2[,refinance:=1]
hmda1[,refinance:=0]
# hmda1[,rejected:=list(NULL)]
hmda <- rbind(hmda1,hmda2)
rm(hmda1)
rm(hmda2)
hmda[,msinc13_black:=ifelse(racecat2=="black",msinc13,0)]
hmda[,msinc13_hispanic:=ifelse(racecat2=="hispanic",msinc13,0)]
hmda[,msinc46_black:=ifelse(racecat2=="black",msinc46,0)]
hmda[,msinc46_hispanic:=ifelse(racecat2=="hispanic",msinc46,0)]
hmda[,hispanic:=ifelse(racecat2=="hispanic",1,0)]
hmda[,black:=ifelse(racecat2=="black",1,0)]
hmda[,bank_county:=paste(bank,countycode)]
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2927614 156.4 5438765 290.5 3830625 204.6
## Vcells 2292954881 17493.9 10011532867 76382.0 12514416083 95477.5
r <- list()
r[[1]] <- felm(approved~msinc13+msinc46+log(applicantincome)+log(amountofloan)+factor(racecat2)+suc_share+refinance|bank_county+asofdate|0|msa,data=hmda[ typeofloan==1])
r[[2]] <- felm(approved~msinc13+msinc46+log(applicantincome)+log(amountofloan)+factor(racecat2)+suc_share+refinance|bank_county+asofdate|0|msa,data=hmda[ typeofloan==2])
r[[3]] <- felm(approved~msinc13*lowincome+msinc46*lowincome+log(amountofloan)+factor(racecat2)+suc_share+refinance|bank_county+asofdate|0|msa,data=hmda[typeofloan==1 ])
r[[4]] <- felm(approved~msinc13*lowincome+msinc46*lowincome+log(amountofloan)+factor(racecat2)+suc_share+refinance|bank_county+asofdate|0|msa,data=hmda[typeofloan==2])
r[[5]] <- felm(approved~msinc13*factor(racecat2)+msinc46*factor(racecat2)+log(applicantincome)+log(amountofloan)+suc_share+refinance|bank_county+asofdate|0|msa,data=hmda[typeofloan==1 ])
r[[6]] <- felm(approved~msinc13*factor(racecat2)+msinc46*factor(racecat2)+log(applicantincome)+log(amountofloan)+suc_share+refinance|bank_county+asofdate|0|msa,data=hmda[typeofloan==2])
covlabs <- c("MSInc1-3","Low income","MSInc4-6","log(Income '000)","log(Loan amount '000)","Black","Hispanic","Acquirer share","Refinance","MSInc1-3*Low income","MSInc4-6*Low income","MSInc1-3*Black", "MSInc1-3*Hispanic","MSInc4-6*Black", "MSInc4-6*Hispanic")
stargazer(r,no.space = T,align = T,omit.stat=c("ser","f", "rsq"),style = "qje",omit.table.layout = "n", dep.var.labels.include = FALSE,type="text",covariate.labels = covlabs,
column.labels=c("Conventional","FHA","Conventional","FHA","Conventional","FHA"),
add.lines = list(c("Year*County", rep("Y",6)),c("Bank", rep("Y",6)))
)
##
## =============================================================================================
## Conventional FHA Conventional FHA Conventional FHA
## (1) (2) (3) (4) (5) (6)
## ---------------------------------------------------------------------------------------------
## MSInc1-3 0.821*** -0.743*** 0.875*** -0.505*** 0.907*** -0.649***
## (0.078) (0.050) (0.094) (0.055) (0.081) (0.048)
## Low income -0.048*** -0.038***
## (0.001) (0.002)
## MSInc4-6 1.838*** -0.999*** 2.179*** -0.676*** 1.993*** -0.904***
## (0.121) (0.151) (0.142) (0.179) (0.122) (0.151)
## log(Income '000) 0.054*** 0.078*** 0.054*** 0.078***
## (0.001) (0.002) (0.001) (0.002)
## log(Loan amount '000) -0.012*** -0.007*** -0.002** 0.031*** -0.012*** -0.007***
## (0.001) (0.002) (0.001) (0.002) (0.001) (0.002)
## Black -0.076*** -0.062*** -0.079*** -0.065*** -0.074*** -0.061***
## (0.003) (0.002) (0.003) (0.002) (0.003) (0.002)
## Hispanic -0.047*** -0.028*** -0.050*** -0.034*** -0.045*** -0.027***
## (0.004) (0.002) (0.003) (0.002) (0.003) (0.002)
## Acquirer share -0.040** 0.157*** -0.042** 0.159*** -0.042** 0.156***
## (0.017) (0.018) (0.017) (0.018) (0.017) (0.018)
## Refinance -0.066*** -0.161*** -0.066*** -0.155*** -0.066*** -0.161***
## (0.004) (0.003) (0.004) (0.003) (0.004) (0.003)
## MSInc1-3*Low income -0.155*** -0.370***
## (0.048) (0.053)
## MSInc4-6*Low income -0.751*** -0.448***
## (0.108) (0.097)
## MSInc1-3*Black -0.765*** -0.340***
## (0.083) (0.075)
## MSInc1-3*Hispanic -0.656*** -0.301***
## (0.107) (0.075)
## MSInc4-6*Black -1.444*** -0.401***
## (0.119) (0.123)
## MSInc4-6*Hispanic -1.685*** -0.291
## (0.241) (0.177)
## Year*County Y Y Y Y Y Y
## Bank Y Y Y Y Y Y
## N 93,205,979 12,946,772 93,205,979 12,946,772 93,205,979 12,946,772
## Adjusted R2 0.227 0.231 0.225 0.228 0.227 0.231
## =============================================================================================