files = paste0("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/Ultimate Panel Data/",c("2014.fst","2015.fst","2016.fst","2017.fst","2018.fst","2019.fst"))

panel = lapply(files, read_fst, as.data.table = TRUE,columns=c("asofdate","respondentid","rssd","agencycode","reportername","topholderrssdid","parentrssd")) 
panel <- do.call(rbind , panel)

panel[,rssd:=as.numeric(rssd)]
panel[,parentrssd:=as.numeric(parentrssd)]
panel[,topholderrssdid:=as.numeric(topholderrssdid)]
panel[,asofdate:=as.integer(asofdate)]
panel[,hmda_id:=ifelse(asofdate<=2017,paste0(agencycode,"-",respondentid),respondentid)]

panel <- panel[!duplicated(panel[,c("hmda_id","asofdate")])]

panelcomplete1 <- panel[,c("hmda_id","rssd","parentrssd","topholderrssdid")]
panelcomplete1 <- panelcomplete1[!duplicated(panelcomplete1[,c("hmda_id")])]



files = paste0("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/Ultimate Panel Data/",paste0(as.character(2004:2013),".fst"))

panel = lapply(files, read_fst, as.data.table = TRUE,columns=c("asofdate","respondentid","rssd","agencycode","parentidentifier")) 
panel <- do.call(rbind , panel)

panel[,rssd:=as.numeric(rssd)]
panel[,parentrssd:=as.numeric(parentidentifier)]
panel[,asofdate:=as.integer(asofdate)]
panel[,hmda_id:=ifelse(asofdate<=2017,paste0(agencycode,"-",respondentid),respondentid)]

panel <- panel[!duplicated(panel[,c("hmda_id","asofdate")])]

panel <- panel[,c("hmda_id","rssd","parentrssd")]
panel[,topholderrssdid:=NA]
panel <- panel[!duplicated(panel[,c("hmda_id")])]

panel <- panel[!hmda_id %in% panelcomplete1$hmda_id]

panelcomplete1 <- rbind(panelcomplete1,panel)



files = paste0("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/Ultimate Panel Data/",paste0(as.character(1995:2019),".fst"))

panel = lapply(files, read_fst, as.data.table = TRUE,columns=c("asofdate","respondentid","agencycode")) 
panel <- do.call(rbind , panel)

panel[,asofdate:=as.integer(asofdate)]
panel[,hmda_id:=ifelse(asofdate<=2017,paste0(agencycode,"-",respondentid),respondentid)]

panel <- panel[!duplicated(panel[,c("hmda_id","asofdate")])]

panel <- merge(panel,panelcomplete1,by="hmda_id",all.x = T)

panel[is.na(panel)]<-0

panel[,unique_id:=ifelse(parentrssd>0,parentrssd,ifelse(rssd>0,rssd,hmda_id))]

panel <- panel[!duplicated(panel[,c("hmda_id")])]
setkey(panel,hmda_id)

rm(panelcomplete1)

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


hmda = lapply(files, read_fst, as.data.table = TRUE, columns=c("asofdate","respondentid","agencycode","actiontaken","censustract","purposeofloan"))
hmda <- do.call(rbind , hmda)

hmda <- hmda[actiontaken=="1"]

hmda[,hmda_id:=ifelse(asofdate<=2017,paste0(agencycode,"-",respondentid),respondentid)]

hmda <- hmda[nchar(censustract)==11]

hmda[,countycode:=substr(censustract,1,5)]

setkey(hmda,countycode)

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))]
setkey(cbsa_fips,fips)

hmda <- merge(hmda,cbsa_fips,by.x="countycode",by.y="fips",all.x=T)

setkey(hmda,hmda_id)

hmda <- merge(hmda,panel[,c("hmda_id","unique_id")],by=c("hmda_id"))

1 Market Share of Top Lenders

1.1 National

1.1.1 All loans

yearrank <- hmda[,.N,by=.(asofdate,unique_id)]
yearrank[,rank:=frankv(N,order=-1),by=asofdate]
yearrank[,rank:=ifelse(rank<=5,"top 5",ifelse(rank<=10,"top 5 to 10","other"))]
yearrank <- yearrank[,.(N=sum(N)),by=.(asofdate,rank)]
yearrank <- dcast(yearrank,asofdate~rank)
yearrank[,top5pct:=`top 5`/(other+`top 5`+`top 5 to 10`)]
yearrank[,top10pct:=(`top 5`+`top 5 to 10`)/(other+`top 5`+`top 5 to 10`)]

yearrank <- yearrank[,c("asofdate","top5pct","top10pct")]
yearrank <- melt(yearrank,id.vars = c("asofdate"))
yearrank[,variable:=as.character(variable)]
yearrank[,variable:=ifelse(variable=="top5pct","Top 5 lenders","Top 10 lenders")]
yearrank[,value:=value*100]
ggplot(yearrank)+geom_line(aes(x=asofdate,y=value,color=variable),size=1)+theme_minimal()+scale_color_manual(values=c('royalblue','darkgreen'))+theme(legend.position = "bottom", legend.title = element_blank(), 
      panel.border = element_blank(), axis.line.x = element_line(color = "gray80"), 
      axis.text.x = element_text(angle = 90, hjust = 1))+labs(x="",y="% of loans") +scale_x_continuous(breaks = 1990:2019)

1.1.2 New purchases

yearrank <- hmda[purposeofloan=="1",.N,by=.(asofdate,unique_id)]
yearrank[,rank:=frankv(N,order=-1),by=asofdate]
yearrank[,rank:=ifelse(rank<=5,"top 5",ifelse(rank<=10,"top 5 to 10","other"))]
yearrank <- yearrank[,.(N=sum(N)),by=.(asofdate,rank)]
yearrank <- dcast(yearrank,asofdate~rank)
yearrank[,top5pct:=`top 5`/(other+`top 5`+`top 5 to 10`)]
yearrank[,top10pct:=(`top 5`+`top 5 to 10`)/(other+`top 5`+`top 5 to 10`)]

yearrank <- yearrank[,c("asofdate","top5pct","top10pct")]
yearrank <- melt(yearrank,id.vars = c("asofdate"))
yearrank[,variable:=as.character(variable)]
yearrank[,variable:=ifelse(variable=="top5pct","Top 5 lenders","Top 10 lenders")]
yearrank[,value:=value*100]
ggplot(yearrank)+geom_line(aes(x=asofdate,y=value,color=variable),size=1)+theme_minimal()+scale_color_manual(values=c('royalblue','darkgreen'))+theme(legend.position = "bottom", legend.title = element_blank(), 
      panel.border = element_blank(), axis.line.x = element_line(color = "gray80"), 
      axis.text.x = element_text(angle = 90, hjust = 1))+labs(x="",y="% of loans") +scale_x_continuous(breaks = 1990:2019)

1.1.3 Refinances

yearrank <- hmda[purposeofloan!="1",.N,by=.(asofdate,unique_id)]
yearrank[,rank:=frankv(N,order=-1),by=asofdate]
yearrank[,rank:=ifelse(rank<=5,"top 5",ifelse(rank<=10,"top 5 to 10","other"))]
yearrank <- yearrank[,.(N=sum(N)),by=.(asofdate,rank)]
yearrank <- dcast(yearrank,asofdate~rank)
yearrank[,top5pct:=`top 5`/(other+`top 5`+`top 5 to 10`)]
yearrank[,top10pct:=(`top 5`+`top 5 to 10`)/(other+`top 5`+`top 5 to 10`)]

yearrank <- yearrank[,c("asofdate","top5pct","top10pct")]
yearrank <- melt(yearrank,id.vars = c("asofdate"))
yearrank[,variable:=as.character(variable)]
yearrank[,variable:=ifelse(variable=="top5pct","Top 5 lenders","Top 10 lenders")]
yearrank[,value:=value*100]
ggplot(yearrank)+geom_line(aes(x=asofdate,y=value,color=variable),size=1)+theme_minimal()+scale_color_manual(values=c('royalblue','darkgreen'))+theme(legend.position = "bottom", legend.title = element_blank(), 
      panel.border = element_blank(), axis.line.x = element_line(color = "gray80"), 
      axis.text.x = element_text(angle = 90, hjust = 1))+labs(x="",y="% of loans") +scale_x_continuous(breaks = 1990:2019)

1.2 MSA Level

1.2.1 All loans

yearrank <- hmda[,.N,by=.(asofdate,unique_id)]
yearrank[,rank:=frankv(N,order=-1),by=asofdate]
yearrank[,rank:=ifelse(rank<=5,"top5","other")]
yearrank[,N:=NULL]


msarank <- hmda[,.N,by=.(asofdate,cbsa,unique_id)]
msarank <- merge(msarank,yearrank,by=c("asofdate","unique_id"))
msarank <- msarank[!is.na(cbsa)]
msarank <- msarank[,.(N=sum(N)),by=.(asofdate,cbsa,rank)]
msarank <- dcast(msarank,asofdate+cbsa~rank)
msarank[is.na(msarank)] <- 0
msarank[,top5:=top5/(top5+other)]
msarank[,top5:=top5*100]

msarank <- msarank[,.(P25=quantile(top5,0.25,na.rm = T),P50=quantile(top5,0.5,na.rm = T),P75=quantile(top5,0.75,na.rm = T)),by=asofdate]

msarank <- melt(msarank,id.vars = c("asofdate"))
msarank[,variable:=as.character(variable)]

ggplot(msarank)+geom_line(aes(x=asofdate,y=value,color=variable),size=1)+theme_minimal()+scale_color_manual(values=c('royalblue','darkgreen',"darkred"))+theme(legend.position = "bottom", legend.title = element_blank(), 
      panel.border = element_blank(), axis.line.x = element_line(color = "gray80"), 
      axis.text.x = element_text(angle = 90, hjust = 1))+labs(x="",y="% of loans") +scale_x_continuous(breaks = 1990:2019)

1.2.2 New purchases

yearrank <- hmda[purposeofloan=="1",.N,by=.(asofdate,unique_id)]
yearrank[,rank:=frankv(N,order=-1),by=asofdate]
yearrank[,rank:=ifelse(rank<=5,"top5","other")]
yearrank[,N:=NULL]


msarank <- hmda[purposeofloan=="1",.N,by=.(asofdate,cbsa,unique_id)]
msarank <- merge(msarank,yearrank,by=c("asofdate","unique_id"))
msarank <- msarank[!is.na(cbsa)]
msarank <- msarank[,.(N=sum(N)),by=.(asofdate,cbsa,rank)]
msarank <- dcast(msarank,asofdate+cbsa~rank)
msarank[is.na(msarank)] <- 0
msarank[,top5:=top5/(top5+other)]
msarank[,top5:=top5*100]

msarank <- msarank[,.(P25=quantile(top5,0.25,na.rm = T),P50=quantile(top5,0.5,na.rm = T),P75=quantile(top5,0.75,na.rm = T)),by=asofdate]

msarank <- melt(msarank,id.vars = c("asofdate"))
msarank[,variable:=as.character(variable)]

ggplot(msarank)+geom_line(aes(x=asofdate,y=value,color=variable),size=1)+theme_minimal()+scale_color_manual(values=c('royalblue','darkgreen',"darkred"))+theme(legend.position = "bottom", legend.title = element_blank(), 
      panel.border = element_blank(), axis.line.x = element_line(color = "gray80"), 
      axis.text.x = element_text(angle = 90, hjust = 1))+labs(x="",y="% of loans") +scale_x_continuous(breaks = 1990:2019)

1.2.3 Refinances

yearrank <- hmda[purposeofloan!="1",.N,by=.(asofdate,unique_id)]
yearrank[,rank:=frankv(N,order=-1),by=asofdate]
yearrank[,rank:=ifelse(rank<=5,"top5","other")]
yearrank[,N:=NULL]


msarank <- hmda[purposeofloan!="1",.N,by=.(asofdate,cbsa,unique_id)]
msarank <- merge(msarank,yearrank,by=c("asofdate","unique_id"))
msarank <- msarank[!is.na(cbsa)]
msarank <- msarank[,.(N=sum(N)),by=.(asofdate,cbsa,rank)]
msarank <- dcast(msarank,asofdate+cbsa~rank)
msarank[is.na(msarank)] <- 0
msarank[,top5:=top5/(top5+other)]
msarank[,top5:=top5*100]

msarank <- msarank[,.(P25=quantile(top5,0.25,na.rm = T),P50=quantile(top5,0.5,na.rm = T),P75=quantile(top5,0.75,na.rm = T)),by=asofdate]

msarank <- melt(msarank,id.vars = c("asofdate"))
msarank[,variable:=as.character(variable)]

ggplot(msarank)+geom_line(aes(x=asofdate,y=value,color=variable),size=1)+theme_minimal()+scale_color_manual(values=c('royalblue','darkgreen',"darkred"))+theme(legend.position = "bottom", legend.title = element_blank(), 
      panel.border = element_blank(), axis.line.x = element_line(color = "gray80"), 
      axis.text.x = element_text(angle = 90, hjust = 1))+labs(x="",y="% of loans") +scale_x_continuous(breaks = 1990:2019)

# files = list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/Ultimate Panel Data/",full.names = TRUE)
# 
# panel = lapply(files, read_fst, as.data.table = TRUE)
# panel <- do.call(rbind , panel)
# 
# 
# panel <- panel[,c("respondentid","agencycode","reportername","asofdate","parentname","parentidentifier","reporterhomecity","reporterhomestate","rssd")]
# panel[,asofdate:=as.integer(asofdate)]
# panel <- panel[!duplicated(panel[,c("respondentid","agencycode","asofdate")])]
# panel[,parentidentifier:=stri_trim(parentidentifier)]
# 
# panel[,rssd:=as.numeric(rssd)]
# 
# panel[,hmda_id:=paste0(agencycode,"-",respondentid)]
# 
# 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))
# 
# hmda = lapply(files, read_fst, as.data.table = TRUE,
#               columns=c("asofdate","respondentid","agencycode","state","countycode","msa"))
# hmda <- do.call(rbind , hmda)
# hmda[,lender:=paste0(agencycode,"-",respondentid)]
# hmda[,countycode:=paste0(state,countycode)]
# 
# 
# 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[,c("agencycode","respondentid"):=list(NULL)]
# 
# gc()
# 
# 
# 
# mergers <- list()
# 
# temp <- list(1,"BANK ONE - JPMORGAN CHASE 2004",
#              c("1-0000000008","1-0000007621","1-0000003106","1-0000011230","1-0000013655","1-0000013759","1-0000013914","1-0000014320","1-0000015184","1-0000018785","1-0000021969","1-0000023237","2-0000331647","3-0000002487"),
#              unique(c(unique(panel[parentidentifier %in% c("0000002370","0000000008","0001039502","0000852218","0001040795"),]$hmda_id),"2-0000852218","1-0000023160","2-0000043557","1-22-1092200","1-0000000008")),
#              2000,"JPMORGAN CHASE BANK, NA",2004)
# mergers[[1]] <- temp
# 
# temp <- list(2,"COUNTRYWIDE - BANK OF AMERIC 2009" ,c("1-0000024141","2-0001644643","2-0003267484","7-20-2241771"),c("1-0000013044"),
#              2005,"BANK OF AMERICA, N.A.",2009)
# mergers[[2]] <- temp
# 
# temp <- list(3,"FLEET NA - BANK OF AMERICA 2005",c("1-0000000200"),c("1-0000013044"),
#              2003,"BANK OF AMERICA, N.A.",2005)
# mergers[[3]] <- temp
# 
# temp <- list(4,"WACHOVIA BK NA - WELLS FARGO 2010", c("1-0000000001","1-0000022559","1-56-0811711"), panel[substr(reportername,1,7)=="WELLS F"]$hmda_id,
#              2005,"WELLS FARGO BANK, N.A.",2009)
# mergers[[4]] <- temp
# 
# temp <- list(5,"LASALLE BK - BANK OF AMERICA 2008",panel[substr(reportername,1,7)=="LASALLE" & asofdate<=2005]$hmda_id,c("1-0000013044"),
#              2005,"BANK OF AMERICA, N.A.",2008)
# mergers[[5]] <- temp
# 
# 
# temp <- list(6,"ABN AMRO MTG GROUP - CITI BANK 2007",c("1-36-3744610"),unique(panel[parentidentifier=="0001951350"]$hmda_id),
#              2004,"CITIMORTGAGE, INC.",2007)
# mergers[[6]] <- temp
# 
# temp <- list(7,"UNION PLANTERS BANK - REGIONS FINANCIAL CORP 2004",
#              c("1-0000013349"),
#              c("9-0000233031","2-0000233031"),
#              2002,c("REGIONS BANK"),2004)
# mergers[[7]] <- temp
# 
# temp <- list(8,"AmSouth Bancorporation - REGIONS FINANCIAL CORP 2006",
#              c("2-0000245333"),
#              c("9-0000233031","2-0000233031"),
#              2004,c("REGIONS BANK"),2006)
# mergers[[8]] <- temp
# 
# 
# temp <- list(9,"Washington Mutual - JPMORGAN CHASE 2008",
#              c("4-0000008551","4-0000011905"),
#              unique(c(unique(panel[parentidentifier %in% c("0000002370","0000000008","0001039502","0000852218","0001040795"),]$hmda_id),"2-0000852218","1-0000023160","2-0000043557","1-22-1092200","1-0000000008")),
#              2005,"JPMORGAN CHASE BANK, NA",
#              2008)
# mergers[[9]] <- temp
# 
# 
# ## target operated in only 2 counties
# temp <- list(10,"Century Bancshares - Wells Fargo 2007",
#              c("1-0000005636"),
#              panel[substr(reportername,1,7)=="WELLS F"]$hmda_id,
#              2000,c("WELLS FARGO BANK, N.A."),2007)
# mergers[[10]] <- temp
# 
# 
# ## target operated in 5 msas; small share.
# temp <- list(11,"Placer Sierra Bank - Wells Fargo 2007",
#              c("2-0000033772"),
#              panel[substr(reportername,1,7)=="WELLS F"]$hmda_id,
#              2002,c("WELLS FARGO BANK, N.A."),2007)
# mergers[[11]] <- temp
# 
# 
# ## target operated in 5 msas; small share.
# temp <- list(12,"Greater Bay Bank - Wells Fargo 2007",
#              c("1-0000024489"),
#              panel[substr(reportername,1,7)=="WELLS F"]$hmda_id,
#              2005,c("WELLS FARGO BANK, N.A."),2007)
# mergers[[12]] <- temp
# 
# 
# temp <- list(13,"MBNA NA - BANK OF AMERICA 2005",c("1-0000024095"),c("1-0000013044"),
#              2003,"BANK OF AMERICA, N.A.",2005)
# mergers[[13]] <- temp
# 
# temp <- list(14,"Merrill Lynch - BANK OF AMERICA 2008",c("2-0000421203","7-13-3403204","3-13-3098068","3-13-3399559"),c("1-0000013044"),
#              2005,"BANK OF AMERICA, N.A.",2008)
# mergers[[14]] <- temp
# 
# 
# #This is the 2nd mortgage division to be named PNC Mortgage. In 2001, PNC sold the original PNC Mortgage to Washington Mutual due to volatility in the market.[7] In 2005, PNC began outsourcing mortgages to Wells Fargo until the National City dea
# temp <- list(15,"National City - PNC Bank 2007",
#              c("1-0000000786"),
#              c("1-0000001316","2-0000083311"),
#              2004,c("PNC BANK, N.A."),2007)
# mergers[[15]] <- temp
# 
# 
# 
# 
# cbsas <- unique(hmda$cbsa)
# yrs <- 2000:2016
# acqbanks <- NULL
# for(i in 1:length(mergers)) {
#   acqbanks <- c(acqbanks,mergers[[i]][6][[1]])
# }
# acqbanks <- c(unique(acqbanks),"other")
# 
# cbsas1 <- merge(cbsas,yrs)
# cbsas2 <- merge(cbsas,acqbanks)
# 
# cbsas <- merge(cbsas1,cbsas2,by="x")
# names(cbsas) <- c("cbsa","acyr","bank")
# cbsas <- data.table(cbsas)
# 
# cbsas[,bank:=as.character(bank)]
# cbsas[,acqbank:=0]
# cbsas[,pred_share:=0]
# 
# 
# cbsa_bnk <- NULL
# lender_bank <- NULL
# for(i in 1:length(mergers)) {
#   # print(i)
#   mid=mergers[[i]][1][[1]]
#   mname=mergers[[i]][2][[1]]
#   pred_hmda_id=mergers[[i]][3][[1]]
#   suc_hmda_id=mergers[[i]][4][[1]]
#   yr=mergers[[i]][5][[1]]
#   acname = mergers[[i]][6][[1]]
#   acyr = mergers[[i]][7][[1]]
# 
#   temp <- hmda[asofdate == yr ]
#   temp[,pred:=ifelse(lender %in% pred_hmda_id,1,0)]
#   temp[,suc:=ifelse(lender %in% suc_hmda_id,1,0)]
# 
#   cw <- temp[,.(pred_share=mean(pred),suc_share=mean(suc)),by=.(cbsa)]
#   cw <- cw[!is.na(cbsa)]
#   cw[,joint_share:=pred_share+suc_share]
#   cw[,bank:=acname]
#   cw[,acyr:=acyr]
# 
#   # sumtable1 <- c(mname,
#   #               sum(temp$pred)/nrow(temp),
#   #               nrow(cw[pred_share>0]),
#   #               length(unique(temp[pred==1]$state)),
#   #               quantile(cw$pred_share,0.01,na.rm=T),
#   #               quantile(cw$pred_share,0.1,na.rm=T),
#   #               quantile(cw$pred_share,0.25,na.rm=T),
#   #               quantile(cw$pred_share,0.5,na.rm=T),
#   #               quantile(cw$pred_share,0.75,na.rm=T),
#   #               quantile(cw$pred_share,0.90,na.rm=T),
#   #               quantile(cw$pred_share,0.99,na.rm=T))
#   # sumtable2 <- c("",
#   #               sum(temp$suc)/nrow(temp),
#   #               nrow(cw[suc_share>0]),
#   #               length(unique(temp[suc==1]$state)),
#   #               quantile(cw$suc_share,0.01,na.rm=T),
#   #               quantile(cw$suc_share,0.1,na.rm=T),
#   #               quantile(cw$suc_share,0.25,na.rm=T),
#   #               quantile(cw$suc_share,0.5,na.rm=T),
#   #               quantile(cw$suc_share,0.75,na.rm=T),
#   #               quantile(cw$suc_share,0.90,na.rm=T),
#   #               quantile(cw$suc_share,0.99,na.rm=T))
#   # sumtable3 <- c("",
#   #               "",
#   #               "",
#   #               length(unique(temp[suc==1 | pred==1]$state)),
#   #               quantile(cw$joint_share,0.01,na.rm=T),
#   #               quantile(cw$joint_share,0.1,na.rm=T),
#   #               quantile(cw$joint_share,0.25,na.rm=T),
#   #               quantile(cw$joint_share,0.5,na.rm=T),
#   #               quantile(cw$joint_share,0.75,na.rm=T),
#   #               quantile(cw$joint_share,0.90,na.rm=T),
#   #               quantile(cw$joint_share,0.99,na.rm=T))
#   #
#   # sumtable <- rbind(sumtable,sumtable1)
#   # sumtable <- rbind(sumtable,sumtable2)
#   # sumtable <- rbind(sumtable,sumtable3)
# 
#   cw[,c("suc_share","joint_share"):=list(NULL)]
#   cbsa_bnk <- rbind(cbsa_bnk,cw)
#   
#   a <- data.frame(lender=mergers[[i]][4][[1]],bank=rep(mergers[[i]][6][[1]],length(mergers[[i]][4][[1]])))
#   if(is.null(lender_bank)) {
#     lender_bank <- a
#   } else {
#     lender_bank <- rbind(lender_bank,a)
#   }
# }
# 
# lender_bank <- lender_bank[!duplicated(lender_bank),]
# write_fst(lender_bank,"C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/lender_bank.fst",compress = 100)
# 
# # write.csv(sumtable,file="C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/merger_summaries.csv",row.names = F)
# cbsa_bnk[,acqbank:=1]
# 
# 
# cbsa_bnk <- rbind(cbsa_bnk,cbsas)
# cbsa_bnk <- cbsa_bnk[!duplicated(cbsa_bnk[,c("cbsa","acyr","bank")])]
# cbsa_bnk <- cbsa_bnk[!is.na(cbsa)]
# 
# 
# cbsa_bnk_1 <- cbsa_bnk[,c("cbsa","pred_share","bank","acyr")]
# 
# names(cbsa_bnk_1) <- c("cbsa","pred_share_1","bank","acyr")
# cbsa_bnk_1[,acyr:=acyr+1]
# cbsa_bnk <- merge(cbsa_bnk,cbsa_bnk_1,by=c("cbsa","bank","acyr"),all.x = T)
# 
# names(cbsa_bnk_1) <- c("cbsa","pred_share_2","bank","acyr")
# cbsa_bnk_1[,acyr:=acyr+1]
# cbsa_bnk <- merge(cbsa_bnk,cbsa_bnk_1,by=c("cbsa","bank","acyr"),all.x = T)
# 
# names(cbsa_bnk_1) <- c("cbsa","pred_share_3","bank","acyr")
# cbsa_bnk_1[,acyr:=acyr+1]
# cbsa_bnk <- merge(cbsa_bnk,cbsa_bnk_1,by=c("cbsa","bank","acyr"),all.x = T)
# 
# names(cbsa_bnk_1) <- c("cbsa","pred_share_4","bank","acyr")
# cbsa_bnk_1[,acyr:=acyr+1]
# cbsa_bnk <- merge(cbsa_bnk,cbsa_bnk_1,by=c("cbsa","bank","acyr"),all.x = T)
# 
# names(cbsa_bnk_1) <- c("cbsa","pred_share_5","bank","acyr")
# cbsa_bnk_1[,acyr:=acyr+1]
# cbsa_bnk <- merge(cbsa_bnk,cbsa_bnk_1,by=c("cbsa","bank","acyr"),all.x = T)
# 
# names(cbsa_bnk_1) <- c("cbsa","pred_share_6","bank","acyr")
# cbsa_bnk_1[,acyr:=acyr+1]
# cbsa_bnk <- merge(cbsa_bnk,cbsa_bnk_1,by=c("cbsa","bank","acyr"),all.x = T)
# 
# cbsa_bnk[,pred_share_1:=ifelse(is.na(pred_share_1),0,pred_share_1)]
# cbsa_bnk[,pred_share_2:=ifelse(is.na(pred_share_2),0,pred_share_2)]
# cbsa_bnk[,pred_share_3:=ifelse(is.na(pred_share_3),0,pred_share_3)]
# cbsa_bnk[,pred_share_4:=ifelse(is.na(pred_share_4),0,pred_share_4)]
# cbsa_bnk[,pred_share_5:=ifelse(is.na(pred_share_5),0,pred_share_5)]
# cbsa_bnk[,pred_share_6:=ifelse(is.na(pred_share_6),0,pred_share_6)]
# 
# cbsa_bnk[,msinc13:=pred_share_1+pred_share_2+pred_share_3+0.00001]
# cbsa_bnk[,msinc46:=pred_share_4+pred_share_5+pred_share_6+0.00001]
# 
# cbsa_share <- cbsa_bnk[,.(msinc13=sum(msinc13,na.rm=T)),by=.(cbsa,acyr)]
# 
# write_fst(cbsa_bnk,"C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_bnk.fst",compress = 100)
# 
# write_fst(cbsa_share,"C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_share.fst",compress = 100)

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_share[,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"))))]

2 List of Mergers

3 Summary Statistics

3.1 Freddie

freddie <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Freddie/Acq",full.names = TRUE)
freddie = lapply(freddie, read_fst,as.data.table=T, columns = c("fico","dt_first_pi","cd_msa","ltv","dti","orig_upb","int_rt","prop_type","zipcode","id_loan","orig_loan_term","seller_name"))
freddie <- do.call(rbind , freddie)

freddie <- freddie[orig_loan_term==360 & prop_type=="SF"]
freddie[,loanyr:=year(dt_first_pi)]
freddie[,msa:=cd_msa]
freddie[,c("orig_loan_term","dt_first_pi","prop_type","cd_msa"):=list(NULL)]
freddie[,seller_name:= ifelse(seller_name %in% c("JPMORGAN CHASE BANK, NA","JPMORGAN CHASE BANK, NATIONAL ASSOCIATION","CHASE MANHATTAN MORTGAGE CORPORATION","CHASE HOME FINANCE LLC","CHASE HOME FINANCE","CHASE HOME FINANCE, LLC","JPMORGAN CHASE BANK, NATIONAL ASSOCIATION","JPMORGAN CHASE BANK, N.A."),"JPMORGAN CHASE BANK, NA",seller_name)]
freddie[,seller_name:= ifelse(seller_name %in%  c("CITIMORTGAGE, INC.","ABN AMRO, NKA CITIMORTGAGE INC.","CITIMORTGAGE, INC."),"CITIMORTGAGE, INC.",seller_name)]
freddie[,seller_name:= ifelse(seller_name %in% c("WELLS FARGO HOME MORTGAGE, INC.","WELLS FARGO BANK, N.A."),"WELLS FARGO BANK, N.A.",seller_name)]

freddie[,bank:=seller_name]
freddie[,bank:=ifelse(bank %in% unique(cbsa_bnk$bank),bank,"other")]
vars <- c("fico","ltv","dti","orig_upb","int_rt","loanyr")

stargazer(freddie[,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
## 
## ======================================================================
## Statistic     N         Mean      St. Dev.   Pctl(25) Median  Pctl(75)
## ----------------------------------------------------------------------
## fico      16,245,111   748.509     395.911     695      741     776   
## ltv       16,245,111   73.367      17.035       66      78       80   
## dti       16,245,111   47.668      113.969      26      35       43   
## orig_upb  16,245,111 189,852.800 107,056.600 111,000  165,000 245,000 
## int_rt    16,245,111    5.699       1.234     4.750    5.875   6.625  
## loanyr    16,245,111  2,007.242     5.630     2,003    2,006   2,012  
## ----------------------------------------------------------------------

3.2 Fannie

fannie <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Fannie/Acq",full.names = TRUE)
fannie = lapply(fannie, read_fst,as.data.table=T, columns = c("loan_identifier","seller_name","original_interest_rate","original_upb","original_loan_term","origination_date","original_ltv","original_dti","credit_score","property_type","property_state","zip_code","msa"))
fannie <- do.call(rbind , fannie)

fannie <- fannie[original_loan_term==360 & property_type=="SF"]
fannie[,loanyr:=year(origination_date)]
fannie[,seller_name:= ifelse(seller_name %in% c("JPMORGAN CHASE BANK, NA","JPMORGAN CHASE BANK, NATIONAL ASSOCIATION","CHASE MANHATTAN MORTGAGE CORPORATION","CHASE HOME FINANCE LLC","CHASE HOME FINANCE","CHASE HOME FINANCE, LLC","JPMORGAN CHASE BANK, NATIONAL ASSOCIATION","JPMORGAN CHASE BANK, N.A."),"JPMORGAN CHASE BANK, NA",seller_name)]
fannie[,seller_name:= ifelse(seller_name %in%  c("CITIMORTGAGE, INC.","ABN AMRO, NKA CITIMORTGAGE INC.","CITIMORTGAGE, INC."),"CITIMORTGAGE, INC.",seller_name)]
fannie[,seller_name:= ifelse(seller_name %in% c("WELLS FARGO HOME MORTGAGE, INC.","WELLS FARGO BANK, N.A."),"WELLS FARGO BANK, N.A.",seller_name)]

fannie[,int_rt:=original_interest_rate]
fannie[,dti:=original_dti]
fannie[,ltv:=original_ltv]
fannie[,fico:=credit_score]
fannie[,orig_upb:= original_upb]

fannie[,c("original_interest_rate","original_dti","original_ltv","credit_score","original_upb","original_loan_term"):=list(NULL)]

fannie[,bank:=seller_name]
fannie[,bank:=ifelse(bank %in% unique(cbsa_bnk$bank),bank,"other")]
vars <- c("fico","ltv","dti","orig_upb","int_rt","loanyr")

stargazer(fannie[,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
## 
## ======================================================================
## Statistic     N         Mean      St. Dev.   Pctl(25) Median  Pctl(75)
## ----------------------------------------------------------------------
## fico      20,265,085   736.414     54.521    700.000  747.000 781.000 
## ltv       20,356,584   73.223      16.210     65.000  78.000   80.000 
## dti       19,932,370   34.426      11.429     26.000  35.000   42.000 
## orig_upb  20,356,594 197,387.300 111,665.400 115,000  172,000 254,000 
## int_rt    20,356,591    5.543       1.240     4.500    5.625   6.375  
## loanyr    20,356,594  2,007.757     5.679     2,003    2,007   2,013  
## ----------------------------------------------------------------------

3.3 Moodys

moodys <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Moodys/0001/LoanChars.fst",as.data.table = TRUE, columns=c("loanid","loanoriginationdate","zipcode","originalloanbalance","originalcltv","state","originator","armflag","originalfico","originalterm","originalltv","documentationtype","originalinterestrate")) 

cbsa <- fread("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Crosswalk Files/ZIP_CBSA.csv")
cbsa[,ZIP:=ifelse(nchar(ZIP)==3,paste0("00",ZIP),ifelse(nchar(ZIP)==4,paste0("0",ZIP),paste0(ZIP)))]
setorder(cbsa,ZIP,-RES_RATIO)
cbsa <- cbsa[!duplicated(cbsa[,c("ZIP")])]
cbsa[,c("RES_RATIO","BUS_RATIO","OTH_RATIO","TOT_RATIO"):=list(NULL)]
names(cbsa) <- c("zipcode","msa")
moodys <- merge(moodys,cbsa,by=c("zipcode"))

moodys <- moodys[originalterm==360 & armflag=="F"]
moodys[,loanyr:=as.numeric(substr(loanoriginationdate,1,4))]
moodys[,seller_name:= originator]
moodys[,seller_name:= ifelse(seller_name %in% c("JPMORGAN CHASE BANK, NA","JPMORGAN CHASE BANK, NATIONAL ASSOCIATION","CHASE MANHATTAN MORTGAGE CORPORATION","CHASE HOME FINANCE LLC","CHASE HOME FINANCE","CHASE HOME FINANCE, LLC","JPMORGAN CHASE BANK, NATIONAL ASSOCIATION","JPMORGAN CHASE BANK, N.A.","JP MORGAN CHASE BANK NA","CHASE MANHATTAN MORTGAGE CORP"),"JPMORGAN CHASE BANK, NA",seller_name)]
moodys[,seller_name:= ifelse(seller_name %in%  c("B OF A"),"BANK OF AMERICA, N.A.",seller_name)]
moodys[,seller_name:= ifelse(seller_name %in% c("WELLS FARGO HOME MORTGAGE, INC.","WELLS FARGO BANK, N.A.","WELLS FARGO BANK N.A"," WELLS FARGO HOME MTG, INC"),"WELLS FARGO BANK, N.A.",seller_name)]

moodys[,int_rt:=originalinterestrate]
moodys[,dti:=0]
moodys[,ltv:=originalltv]
moodys[,fico:=originalfico]
moodys[,orig_upb:= originalloanbalance]

moodys[,c("originalinterestrate","originalltv","originalfico","originalloanbalance","msacode","csacode","divcode","loanoriginationdate","armflag","originalterm"):=list(NULL)]

moodys[,fulldocumentation:=ifelse(documentationtype=="FU",1,0)]
gc()
##             used   (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells  18514075  988.8   42716182  2281.3   29942361  1599.1
## Vcells 467497758 3566.8 1912360305 14590.2 5825536989 44445.4
moodys[,bank:=seller_name]
moodys[,bank:=ifelse(bank %in% unique(cbsa_bnk$bank),bank,"other")]
vars <- c("fico","ltv","dti","orig_upb","int_rt","loanyr","fulldocumentation")

stargazer(moodys[,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
## 
## ======================================================================================
## Statistic             N        Mean      St. Dev.    Pctl(25)    Median     Pctl(75)  
## --------------------------------------------------------------------------------------
## fico              3,931,302   681.319     69.930     632.000     684.000     737.000  
## ltv               4,322,951   70.640      23.984      63.600     79.700      80.000   
## dti               4,399,462    0.000       0.000        0           0           0     
## orig_upb          4,398,108 232,097.600 213,490.700 84,980.000 161,000.000 332,000.000
## int_rt            4,391,198    7.441       2.059      6.250       6.890       8.400   
## loanyr            4,385,059  2,004.073     3.607    2,004.000   2,005.000   2,006.000 
## fulldocumentation 4,399,462    0.397       0.489        0           0           1     
## --------------------------------------------------------------------------------------

4 Descriptive Statistics: Market Share Changes

4.1 msinc13

print(ggplot(cbsa_bnk[msinc13>0.00001],aes(x=msinc13))+geom_histogram(fill="royalblue",alpha=0.3,color="royalblue")+theme_minimal())

4.2 msinc46

print(ggplot(cbsa_bnk[msinc46>0.00001],aes(x=msinc46))+geom_histogram(fill="royalblue",alpha=0.3,color="royalblue")+theme_minimal())

5 Dep. Var: Interest Increase by the Acquiring Bank

5.1 Market Share Bins

\[ interest rate = \Sigma_{bin} \beta_{bin} \times msinc13 \in bin+ \Sigma_{bin}\beta_{bin} \times msinc46 \in bin+fico+ltv+dti+log(loanamount) +BANK*MSA\text{ }FE+YR\text{ }FE\]

\(msinc13\) : Change in market share in last 3 years
\(msinc46\) : Change in market share 4-6 years

regsample <- merge(freddie,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
# regsample[,msinccat13:=ifelse(msinc13<=0,"0",ifelse(msinc13<= 0.02 ,"Less than 2%",ifelse(msinc13<0.05,"Less than 5%","More than 5%")))]
regsample[,bank_msa:=paste(seller_name,msa)]
# regsample[,yr_msa:=paste(loanyr,msa)]

  r <- list()
  # r2 <- list()
  r3 <- list()
  r[[1]] <- felm(int_rt~msinc13+msinc46+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  # r2[[1]] <- felm(int_rt~msinc13+I(msinc13^2)+msinc46+I(msinc46^2)++fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  r3[[1]] <- felm(int_rt~factor(msinc13G)+factor(msinc46G)+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
regsample <- merge(fannie,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
# regsample[,msinccat13:=ifelse(msinc13<=0,"0",ifelse(msinc13<= 0.02 ,"Less than 2%",ifelse(msinc13<0.05,"Less than 5%","More than 5%")))]
regsample[,bank_msa:=paste(seller_name,msa)]
# regsample[,yr_msa:=paste(loanyr,msa)]

  r[[2]] <- felm(int_rt~msinc13+msinc46+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  # r2[[2]] <- felm(int_rt~msinc13+I(msinc13^2)+msinc46+I(msinc46^2)+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  r3[[2]] <- felm(int_rt~factor(msinc13G)+factor(msinc46G)+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
regsample <- merge(moodys,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
# regsample[,msinccat13:=ifelse(msinc13<=0,"0",ifelse(msinc13<= 0.02 ,"Less than 2%",ifelse(msinc13<0.05,"Less than 5%","More than 5%")))]
regsample[,bank_msa:=paste(seller_name,msa)]
# regsample[,yr_msa:=paste(loanyr,msa)]

  r[[3]] <- felm(int_rt~msinc13+msinc46+fico+ltv+fulldocumentation+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  # r2[[3]] <- felm(int_rt~msinc13+I(msinc13^2)+msinc46+I(msinc46^2)+fico+ltv+fulldocumentation+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  r3[[3]] <- felm(int_rt~factor(msinc13G)+fico+ltv+fulldocumentation+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  .printtable(r3,column.labels = c("Freddie Loans","Fannie Loans","Moody's Loans"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
## 
## ===========================================================================
##                                              Dependent variable:           
##                                    ----------------------------------------
##                                    Freddie Loans Fannie Loans Moody's Loans
##                                         (1)          (2)           (3)     
## ---------------------------------------------------------------------------
## factor(msinc13G)1. Less than 1pct    0.035***      0.062***     -0.160***  
##                                       (0.004)      (0.004)       (0.022)   
## factor(msinc13G)2. 1 - 5pct          0.014***      0.036***     0.310***   
##                                       (0.004)      (0.005)       (0.082)   
## factor(msinc13G)3. 5pct - 10pct      0.062***      0.044***     0.515***   
##                                       (0.006)      (0.010)       (0.142)   
## factor(msinc13G)4. More than 10pct   0.103***      0.118***     1.952***   
##                                       (0.008)      (0.011)       (0.385)   
## factor(msinc46G)1. Less than 1pct    0.014***       0.009*                 
##                                       (0.005)      (0.006)                 
## factor(msinc46G)2. 1 - 5pct           0.016*       0.019**                 
##                                       (0.008)      (0.008)                 
## factor(msinc46G)3. 5pct - 10pct      0.030***       0.016                  
##                                       (0.008)      (0.011)                 
## factor(msinc46G)4. More than 10pct   0.089***      0.075***                
##                                       (0.009)      (0.016)                 
## fico                                -0.00002***   -0.001***     -0.005***  
##                                      (0.00000)    (0.00002)     (0.0002)   
## ltv                                  0.004***      0.004***     -0.011***  
##                                      (0.0001)      (0.0001)      (0.001)   
## dti                                 0.00003***     0.002***                
##                                      (0.00000)     (0.0001)                
## fulldocumentation                                               -0.227***  
##                                                                  (0.010)   
## log(orig_upb)                        -0.221***    -0.222***     -1.051***  
##                                       (0.004)      (0.008)       (0.018)   
## ---------------------------------------------------------------------------
## Fixed Effects                      MSA*Bank, Yr  MSA*Bank, Yr MSA*Bank, Yr 
## Observations                         8,210,798    15,685,569    3,271,645  
## Adjusted R2                            0.897        0.902         0.511    
## ===========================================================================
## Note:                                           *p<0.1; **p<0.05; ***p<0.01
## 

5.2 Linear

  .printtable(r,column.labels = c("Freddie Loans","Fannie Loans","Moody's Loans"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
## 
## ==========================================================
##                             Dependent variable:           
##                   ----------------------------------------
##                   Freddie Loans Fannie Loans Moody's Loans
##                        (1)          (2)           (3)     
## ----------------------------------------------------------
## msinc13             0.798***      0.768***     7.835***   
##                      (0.061)      (0.056)       (2.110)   
## msinc46             0.480***      0.390***                
##                      (0.074)      (0.116)       (0.000)   
## fico               -0.00002***   -0.001***     -0.005***  
##                     (0.00000)    (0.00002)     (0.0002)   
## ltv                 0.004***      0.004***     -0.011***  
##                     (0.0001)      (0.0001)      (0.001)   
## dti                0.00003***     0.002***                
##                     (0.00000)     (0.0001)                
## fulldocumentation                              -0.228***  
##                                                 (0.010)   
## log(orig_upb)       -0.221***    -0.222***     -1.052***  
##                      (0.004)      (0.008)       (0.018)   
## ----------------------------------------------------------
## Fixed Effects     MSA*Bank, Yr  MSA*Bank, Yr MSA*Bank, Yr 
## Observations        8,210,798    15,685,569    3,271,645  
## Adjusted R2           0.897        0.902         0.511    
## ==========================================================
## Note:                          *p<0.1; **p<0.05; ***p<0.01
## 

5.3 Other Lenders

r <- list()

regsample <- freddie[!seller_name %in% unique(cbsa_bnk$bank)]
regsample <- merge(regsample,cbsa_share,by.x=c("msa","loanyr"),by.y=c("cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]


  r[[1]] <- felm(int_rt~factor(msinc13G)+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr,data=regsample)
  
regsample <- fannie[!seller_name %in% unique(cbsa_bnk$bank)]
regsample <- merge(regsample,cbsa_share,by.x=c("msa","loanyr"),by.y=c("cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]  

 r[[2]] <- felm(int_rt~factor(msinc13G)+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr,data=regsample)
 
regsample <- moodys[!seller_name %in% unique(cbsa_bnk$bank)] 
regsample <- merge(regsample,cbsa_share,by.x=c("msa","loanyr"),by.y=c("cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]

 r[[3]] <- felm(int_rt~factor(msinc13G)+fico+fulldocumentation+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample[seller_name != ""])

.printtable(r)
## 
## ==================================================================
##                                          Dependent variable:      
##                                    -------------------------------
##                                        (1)        (2)       (3)   
## ------------------------------------------------------------------
## factor(msinc13G)1. Less than 1pct    0.032**   0.036***  0.363*** 
##                                      (0.016)    (0.004)   (0.028) 
## factor(msinc13G)2. 1 - 5pct         0.050***   0.043***  0.311*** 
##                                      (0.016)    (0.004)   (0.020) 
## factor(msinc13G)3. 5pct - 10pct     0.068***   0.069***  0.247*** 
##                                      (0.016)    (0.004)   (0.061) 
## factor(msinc13G)4. More than 10pct  0.089***   0.096***  0.289*** 
##                                      (0.016)    (0.004)   (0.047) 
## fico                               -0.00003*** -0.001*** -0.004***
##                                     (0.00000)  (0.00000) (0.0002) 
## ltv                                 0.004***   0.004***           
##                                     (0.00001)  (0.00001)          
## dti                                0.00002***  0.003***           
##                                     (0.00000)  (0.00001)          
## fulldocumentation                                        -0.298***
##                                                           (0.011) 
## log(orig_upb)                       -0.206***  -0.205*** -1.229***
##                                     (0.0004)   (0.0003)   (0.023) 
## ------------------------------------------------------------------
##                                                                   
## Observations                        5,345,739  8,756,629 1,923,966
## Adjusted R2                           0.907      0.914     0.482  
## ==================================================================
## Note:                                  *p<0.1; **p<0.05; ***p<0.01
## 

6 Dep. Var: Loan-to-value

6.1 Market Share Bins

regsample <- merge(freddie,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
# regsample[,msinccat13:=ifelse(msinc13<=0,"0",ifelse(msinc13<= 0.02 ,"Less than 2%",ifelse(msinc13<0.05,"Less than 5%","More than 5%")))]
regsample[,bank_msa:=paste(seller_name,msa)]
# regsample[,yr_msa:=paste(loanyr,msa)]

  r <- list()
  # r2 <- list()
  r3 <- list()
  r[[1]] <- felm(I(ltv/100)~msinc13+msinc46+fico|bank_msa+loanyr|0|msa,data=regsample)
  # r2[[1msinc13]] <- felm(I(ltv/100)~msinc13+I(msinc13^2)+msinc46+I(msinc46^2)+fico+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  r3[[1]] <- felm(I(ltv/100)~factor(msinc13G)+factor(msinc46G)+fico+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
regsample <- merge(fannie,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
# regsample[,msinccat13:=ifelse(msinc13<=0,"0",ifelse(msinc13<= 0.02 ,"Less than 2%",ifelse(msinc13<0.05,"Less than 5%","More than 5%")))]
regsample[,bank_msa:=paste(seller_name,msa)]
# regsample[,yr_msa:=paste(loanyr,msa)]

  r[[2]] <- felm(I(ltv/100)~msinc13+msinc46+fico|bank_msa+loanyr|0|msa,data=regsample)
  # r2[[2]] <- felm(I(ltv/100)~msinc13+I(msinc13^2)+msinc46+I(msinc46^2)+fico+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  r3[[2]] <- felm(I(ltv/100)~factor(msinc13G)+factor(msinc46G)+fico+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
regsample <- merge(moodys,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
# regsample[,msinccat13:=ifelse(msinc13<=0,"0",ifelse(msinc13<= 0.02 ,"Less than 2%",ifelse(msinc13<0.05,"Less than 5%","More than 5%")))]
regsample[,bank_msa:=paste(seller_name,msa)]
# regsample[,yr_msa:=paste(loanyr,msa)]

  r[[3]] <- felm(I(ltv/100)~msinc13+msinc46+fico+fulldocumentation|bank_msa+loanyr|0|msa,data=regsample)
  # r2[[3]] <- felm(I(ltv/100)~msinc13+I(msinc13^2)+msinc46+I(msinc46^2)+fico+fulldocumentation+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  r3[[3]] <- felm(I(ltv/100)~factor(msinc13G)+fico+fulldocumentation|bank_msa+loanyr|0|msa,data=regsample)
  .printtable(r3,column.labels = c("Freddie Loans","Fannie Loans","Moody's Loans"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
## 
## ===========================================================================
##                                              Dependent variable:           
##                                    ----------------------------------------
##                                    Freddie Loans Fannie Loans Moody's Loans
##                                         (1)          (2)           (3)     
## ---------------------------------------------------------------------------
## factor(msinc13G)1. Less than 1pct    0.015***       0.003*      -0.015***  
##                                       (0.002)      (0.002)       (0.003)   
## factor(msinc13G)2. 1 - 5pct          -0.013***    -0.007***     0.030***   
##                                       (0.002)      (0.002)       (0.006)   
## factor(msinc13G)3. 5pct - 10pct       0.0003        0.006       0.037***   
##                                       (0.003)      (0.004)       (0.014)   
## factor(msinc13G)4. More than 10pct   0.020***       0.011*      0.197***   
##                                       (0.006)      (0.006)       (0.005)   
## factor(msinc46G)1. Less than 1pct    0.011***       -0.002                 
##                                       (0.002)      (0.002)                 
## factor(msinc46G)2. 1 - 5pct          -0.014***    -0.007***                
##                                       (0.003)      (0.002)                 
## factor(msinc46G)3. 5pct - 10pct      -0.016***      -0.002                 
##                                       (0.004)      (0.006)                 
## factor(msinc46G)4. More than 10pct   -0.023***      0.034                  
##                                       (0.006)      (0.025)                 
## fico                                -0.00001***   -0.0003***     0.00000   
##                                      (0.00000)    (0.00002)     (0.00001)  
## dti                                 -0.00001***    0.001***                
##                                      (0.00000)    (0.00004)                
## log(orig_upb)                        0.070***      0.075***                
##                                       (0.004)      (0.005)                 
## fulldocumentation                                               0.020***   
##                                                                  (0.001)   
## ---------------------------------------------------------------------------
## Fixed Effects                      MSA*Bank, Yr  MSA*Bank, Yr MSA*Bank, Yr 
## Observations                         8,210,798    15,685,571    3,272,885  
## Adjusted R2                            0.148        0.213         0.145    
## ===========================================================================
## Note:                                           *p<0.1; **p<0.05; ***p<0.01
## 

6.2 Linear

  .printtable(r,column.labels = c("Freddie Loans","Fannie Loans","Moody's Loans"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
## 
## ==========================================================
##                             Dependent variable:           
##                   ----------------------------------------
##                   Freddie Loans Fannie Loans Moody's Loans
##                        (1)          (2)           (3)     
## ----------------------------------------------------------
## msinc13               0.007       0.114***     0.642***   
##                      (0.030)      (0.031)       (0.187)   
## msinc46             -0.349***      0.054                  
##                      (0.039)      (0.047)       (0.000)   
## fico               -0.00001***   -0.0003***     0.00000   
##                     (0.00000)    (0.00002)     (0.00001)  
## fulldocumentation                              0.020***   
##                                                 (0.001)   
## ----------------------------------------------------------
## Fixed Effects     MSA*Bank, Yr  MSA*Bank, Yr MSA*Bank, Yr 
## Observations        8,210,798    16,053,448    3,272,885  
## Adjusted R2           0.110        0.159         0.145    
## ==========================================================
## Note:                          *p<0.1; **p<0.05; ***p<0.01
## 

6.3 Other Lenders

r <- list()

regsample <- freddie[!seller_name %in% unique(cbsa_bnk$bank)]
regsample <- merge(regsample,cbsa_share,by.x=c("msa","loanyr"),by.y=c("cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]


  r[[1]] <- felm(I(ltv/100)~factor(msinc13G)+fico|bank_msa+loanyr,data=regsample)
  
regsample <- fannie[!seller_name %in% unique(cbsa_bnk$bank)]
regsample <- merge(regsample,cbsa_share,by.x=c("msa","loanyr"),by.y=c("cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]  

 r[[2]] <- felm(I(ltv/100)~factor(msinc13G)+fico|bank_msa+loanyr,data=regsample)
 
regsample <- moodys[!seller_name %in% unique(cbsa_bnk$bank)] 
regsample <- merge(regsample,cbsa_share,by.x=c("msa","loanyr"),by.y=c("cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]

 r[[3]] <- felm(I(ltv/100)~factor(msinc13G)+fico+fulldocumentation|bank_msa+loanyr|0|msa,data=regsample[seller_name != ""])

.printtable(r)
## 
## ====================================================================
##                                           Dependent variable:       
##                                    ---------------------------------
##                                        (1)        (2)        (3)    
## --------------------------------------------------------------------
## factor(msinc13G)1. Less than 1pct    -0.011*     -0.001   -0.044*** 
##                                      (0.006)    (0.002)    (0.004)  
## factor(msinc13G)2. 1 - 5pct         -0.016***  -0.009***  -0.042*** 
##                                      (0.006)    (0.002)    (0.003)  
## factor(msinc13G)3. 5pct - 10pct      -0.004     0.006***  -0.049*** 
##                                      (0.006)    (0.002)    (0.003)  
## factor(msinc13G)4. More than 10pct   -0.001     0.007***  -0.057*** 
##                                      (0.006)    (0.002)    (0.007)  
## fico                               -0.00001*** -0.0003*** -0.0002***
##                                     (0.00000)  (0.00000)  (0.00002) 
## fulldocumentation                                          0.014*** 
##                                                            (0.001)  
## --------------------------------------------------------------------
##                                                                     
## Observations                        5,345,739  8,927,435  1,923,773 
## Adjusted R2                           0.105      0.157      0.187   
## ====================================================================
## Note:                                    *p<0.1; **p<0.05; ***p<0.01
## 

8 HMDA Data: New Purchases

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[,race:=ifelse(applicantrace1=="5","white",ifelse(applicantrace1=="3","black","0ther"))]

hmda[,actiontaken:=as.numeric(actiontaken)]
hmda[,denied:=ifelse(actiontaken %in% c(3,7),1,0)]
hmda[,typeofloan:=as.numeric(typeofloan)]
hmda[,hispanic:=ifelse(applicantethnicity=="1",1,0)]

8.1 Descriptive Statistics

vars <- c("amountofloan","applicantincome","approved","sold","nonwhite","asofdate")

stargazer(hmda[,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
## 
## ======================================================================
## Statistic           N        Mean    St. Dev. Pctl(25) Median Pctl(75)
## ----------------------------------------------------------------------
## amountofloan    64,052,426  214.553  236.642    110     173     272   
## applicantincome 64,052,426  93.720   115.469     48      72     110   
## approved        64,052,426   0.568    0.495      0       1       1    
## sold            36,381,324   0.802    0.398    1.000   1.000   1.000  
## nonwhite        64,052,426   0.283    0.450      0       0       1    
## asofdate        64,052,426 2,009.619  4.344    2,006   2,009   2,014  
## ----------------------------------------------------------------------

8.2 Regressions

8.2.1 Main Result

r <- list()
r[[1]] <- felm(approved~msinc13G+msinc46G+log(applicantincome)+log(amountofloan)+factor(race)+hispanic|bank_msa+asofdate,data=hmda[actiontaken<=3 & typeofloan==1])
r[[2]] <- felm(approved~msinc13G+msinc46G+log(applicantincome)+log(amountofloan)+factor(race)+hispanic|bank_msa+asofdate,data=hmda[actiontaken<=3 & typeofloan==2])
r[[3]] <- felm(sold~msinc13G+msinc46G+log(applicantincome)+log(amountofloan)+factor(race)+hispanic|bank_msa+asofdate,data=hmda[typeofloan==1])
r[[4]] <- felm(sold~msinc13G+msinc46G+log(applicantincome)+log(amountofloan)+factor(race)+hispanic|bank_msa+asofdate,data=hmda[typeofloan==2])

.printtable(r,column.labels = c("Approved-Conventional","Approved-FHA","Securitized-Conventional","Securitized-FHA"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
## 
## ======================================================================================================
##                                                        Dependent variable:                            
##                            ---------------------------------------------------------------------------
##                            Approved-Conventional Approved-FHA Securitized-Conventional Securitized-FHA
##                                     (1)              (2)                (3)                  (4)      
## ------------------------------------------------------------------------------------------------------
## msinc13G1. Less than 1pct        0.041***          0.017***           0.027***            -0.018***   
##                                   (0.001)          (0.001)            (0.001)              (0.001)    
## msinc13G2. 1 - 5pct              0.015***         -0.015***           0.046***            -0.046***   
##                                   (0.001)          (0.002)            (0.001)              (0.001)    
## msinc13G3. 5pct - 10pct          0.025***         -0.039***           0.104***            -0.054***   
##                                   (0.001)          (0.002)            (0.001)              (0.001)    
## msinc13G4. More than 10pct       0.047***         -0.048***           0.265***            0.012***    
##                                   (0.003)          (0.003)            (0.003)              (0.002)    
## msinc46G1. Less than 1pct        0.099***           -0.001           -0.029***            -0.079***   
##                                   (0.001)          (0.002)            (0.001)              (0.001)    
## msinc46G2. 1 - 5pct              0.038***         -0.029***          -0.019***            -0.033***   
##                                   (0.001)          (0.002)            (0.001)              (0.002)    
## msinc46G3. 5pct - 10pct          0.033***         -0.035***           0.029***            -0.107***   
##                                   (0.002)          (0.004)            (0.002)              (0.003)    
## msinc46G4. More than 10pct         0.005            -0.007            0.161***            -0.139***   
##                                   (0.029)          (0.041)            (0.030)              (0.029)    
## log(applicantincome)             0.035***          0.070***          -0.077***            0.005***    
##                                  (0.0001)          (0.0003)           (0.0001)            (0.0002)    
## log(amountofloan)                -0.002***         0.004***           0.047***            0.005***    
##                                  (0.0001)          (0.0004)           (0.0001)            (0.0003)    
## factor(race)black                -0.047***        -0.022***          -0.026***            -0.004***   
##                                  (0.0003)          (0.001)            (0.0003)            (0.0004)    
## factor(race)white                0.051***          0.052***           0.008***            0.005***    
##                                  (0.0002)          (0.0004)           (0.0002)            (0.0003)    
## hispanic                         -0.043***        -0.033***          -0.019***            -0.003***   
##                                  (0.0002)          (0.0004)           (0.0002)            (0.0003)    
## ------------------------------------------------------------------------------------------------------
## Fixed Effects                  MSA*Bank, Yr      MSA*Bank, Yr       MSA*Bank, Yr        MSA*Bank, Yr  
## Observations                    33,570,940        8,964,925          26,331,998           7,320,170   
## Adjusted R2                        0.162            0.109              0.413                0.208     
## ======================================================================================================
## Note:                                                                      *p<0.1; **p<0.05; ***p<0.01
## 

8.2.2 Loan approval by Income and Race

Dependent Var: Approved

r <- list()
r[[1]] <- felm(approved~msinc13*log(applicantincome)+msinc46*log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[typeofloan==1 & actiontaken<=3])
r[[2]] <- felm(approved~msinc13*log(applicantincome)+msinc46*log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[typeofloan==2 & actiontaken<=3])
r[[3]] <- felm(approved~msinc13*factor(race)+msinc46*factor(race)+log(applicantincome)+log(amountofloan)|bank_msa+asofdate,data=hmda[typeofloan==1 & actiontaken<=3])
r[[4]] <- felm(approved~msinc13*factor(race)+msinc46*factor(race)+log(applicantincome)+log(amountofloan)|bank_msa+asofdate,data=hmda[typeofloan==2 & actiontaken<=3])
r[[5]] <- felm(approved~msinc13*hispanic+msinc46*hispanic+log(applicantincome)+log(amountofloan)|bank_msa+asofdate,data=hmda[typeofloan==1 & actiontaken<=3])
r[[6]] <- felm(approved~msinc13*hispanic+msinc46*hispanic+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","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
## 
## ==========================================================================================================
##                                                           Dependent variable:                             
##                              -----------------------------------------------------------------------------
##                              Conventional     FHA      Conventional     FHA      Conventional     FHA     
##                                  (1)          (2)          (3)          (4)          (5)          (6)     
## ----------------------------------------------------------------------------------------------------------
## msinc13                        0.529***    -2.131***     0.869***    -0.444***     0.698***    -0.441***  
##                                (0.066)      (0.094)      (0.021)      (0.030)      (0.013)      (0.019)   
## hispanic                                                                          -0.026***    -0.015***  
##                                                                                    (0.0002)     (0.0004)  
## log(applicantincome)           0.037***     0.072***     0.038***     0.073***     0.038***     0.074***  
##                                (0.0001)     (0.0003)     (0.0001)     (0.0003)     (0.0001)     (0.0003)  
## msinc46                       -2.355***    -3.743***     1.465***    -1.102***     1.293***    -0.570***  
##                                (0.116)      (0.202)      (0.045)      (0.080)      (0.022)      (0.043)   
## log(amountofloan)             -0.001***     0.004***    -0.001***     0.005***    -0.001***     0.004***  
##                                (0.0001)     (0.0004)     (0.0001)     (0.0004)     (0.0001)     (0.0004)  
## msinc13:factor(race)black                               -0.260***    -0.441***                            
##                                                          (0.049)      (0.046)                             
## msinc13:factor(race)white                               -0.286***     -0.055*                             
##                                                          (0.023)      (0.032)                             
## factor(race)black:msinc46                               -1.676***      0.050                              
##                                                          (0.094)      (0.102)                             
## factor(race)white:msinc46                               -0.302***     0.567***                            
##                                                          (0.048)      (0.078)                             
## factor(race)black             -0.043***    -0.019***    -0.042***    -0.019***                            
##                                (0.0003)     (0.001)      (0.0003)     (0.001)                             
## factor(race)white              0.047***     0.048***     0.047***     0.047***                            
##                                (0.0002)     (0.0004)     (0.0002)     (0.0004)                            
## msinc13:log(applicantincome)   0.029**      0.396***                                                      
##                                (0.014)      (0.023)                                                       
## log(applicantincome):msinc46   0.779***     0.769***                                                      
##                                (0.025)      (0.050)                                                       
## msinc13:hispanic                                                                  -0.541***    -0.488***  
##                                                                                    (0.037)      (0.033)   
## hispanic:msinc46                                                                  -1.967***    -0.665***  
##                                                                                    (0.081)      (0.085)   
## ----------------------------------------------------------------------------------------------------------
## Fixed Effects                MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations                  33,570,940   8,964,925    33,570,940   8,964,925    33,570,940   8,964,925  
## Adjusted R2                     0.160        0.109        0.160        0.109        0.157        0.105    
## ==========================================================================================================
## Note:                                                                          *p<0.1; **p<0.05; ***p<0.01
## 

8.2.3 Other Lenders

hmda <- hmda[!bank %in% unique(cbsa_bnk$bank)]
names(cbsa_share) <- c("cbsa","acyr","msinc13_all","msinc13G_all")
hmda <- merge(hmda,cbsa_share,by.x=c("cbsa","asofdate"),by.y=c("cbsa","acyr"),all.x=T)

hmda[,msinc13G_all:=as.factor(msinc13G_all)]
r <- list()
r[[1]] <- felm(approved~msinc13G_all+log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda)
r[[2]] <- felm(sold~msinc13G_all+log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda)

.printtable(r,column.labels = c("Approved","Sold"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr")))
## 
## ===========================================================
##                                    Dependent variable:     
##                                ----------------------------
##                                   Approved        Sold     
##                                     (1)            (2)     
## -----------------------------------------------------------
## msinc13G_all1. Less than 1pct     0.057***      0.105***   
##                                   (0.002)        (0.002)   
## msinc13G_all2. 1 - 5pct           0.054***      0.110***   
##                                   (0.002)        (0.002)   
## msinc13G_all3. 5pct - 10pct       0.057***      0.110***   
##                                   (0.002)        (0.002)   
## msinc13G_all4. More than 10pct    0.053***      0.121***   
##                                   (0.002)        (0.002)   
## log(applicantincome)              0.041***      -0.054***  
##                                   (0.0001)      (0.0001)   
## log(amountofloan)                -0.002***      0.036***   
##                                   (0.0001)      (0.0001)   
## factor(race)black                 0.023***      -0.008***  
##                                   (0.0003)      (0.0003)   
## factor(race)white                 0.094***      0.006***   
##                                   (0.0002)      (0.0002)   
## -----------------------------------------------------------
## Fixed Effects                   MSA*Bank, Yr  MSA*Bank, Yr 
## Observations                     48,360,576    28,918,758  
## Adjusted R2                        0.253          0.439    
## ===========================================================
## Note:                           *p<0.1; **p<0.05; ***p<0.01
##