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)

1 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)]

1.1 Descriptive Statistics

1.1.1 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    
## ----------------------------------------------------------------------

1.1.2 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    
## ---------------------------------------------------------------------

1.2 Regressions

1.2.1 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
##