rm(list=ls())
library(RPostgres)
library(data.table)
library(getPass)
library(lfe)
library(stargazer)
library(ggplot2)
library(fst)
library(stringr)
library(stringi)
library(lubridate)
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[,msinc46Q:=ifelse(msinc46<=0.0001,"Q0",
                           ifelse(msinc46<0.0027235,"Q1",
                                  ifelse(msinc46<0.0112596,"Q2",
                                         ifelse(msinc46<0.0366354,"Q3","Q4"))))]
# 
cbsa_share<- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_share.fst",as.data.table = T)

1 List of Mergers

2 Summary Statistics

2.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  
## ----------------------------------------------------------------------

2.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","original_loan_term"))
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  
## ----------------------------------------------------------------------

2.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  18500326  988.1   51994801 2776.9   28891643 1543.0
## Vcells 479428024 3657.8 1157395472 8830.3 1156501419 8823.5
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     
## --------------------------------------------------------------------------------------

3 Descriptive Statistics: Market Share Changes

3.1 msinc13

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

3.2 msinc46

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

4 Interest Increase by the Acquiring Bank

4.1 Linear

\[ interest rate = inmerge_1 + inmerger_2+fico+ltv+dti+log(loanamount) +BANK*MSA\text{ }FE+YR\text{ }FE\]

\(inmerge_1\) : 1-3 years after acquision and target had 5% in MSA prior to acquisition
\(inmerge_2\) : 4-6 years after acquision and target had 5% in MSA prior to acquisition

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(msinc13Q)+factor(msinc46Q)+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  gc(verbose = F)
##              used   (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   18647729  995.9   51994801  2776.9   28891643  1543.0
## Vcells 1272584851 9709.1 2001310059 15268.8 1692170167 12910.3
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(msinc13Q)+factor(msinc46Q)+fico+ltv+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
    gc(verbose = F)
##              used    (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   18662984   996.8   51994801  2776.9   28891643  1543.0
## Vcells 2696783100 20574.9 4150345976 31664.7 3444420868 26278.9
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(msinc13Q)+fico+ltv+fulldocumentation+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
    gc(verbose = F)
##              used    (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   18720167   999.8   51994801  2776.9   28891643  1543.0
## Vcells 2643127779 20165.5 4150345976 31664.7 4080721682 31133.5
  .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
## 

4.2 Quadratic

  .printtable(r2,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.773***      1.147***      9.269**   
##                      (0.158)      (0.257)       (4.597)   
## I(msinc132)           0.330       -4.464*       -29.220   
##                      (1.519)      (2.592)      (70.072)   
## msinc46               0.295        0.219                  
##                      (0.231)      (0.399)       (0.000)   
## I(msinc462)           2.196        3.036                  
##                      (2.243)      (6.120)       (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
## 

4.3 Quartile Dummies

  .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(msinc13Q)Q1   0.042***      0.042***     -0.199***  
##                       (0.005)      (0.006)       (0.022)   
## factor(msinc13Q)Q2   0.025***      0.082***       0.060    
##                       (0.005)      (0.005)       (0.086)   
## factor(msinc13Q)Q3    0.010*       0.035***     0.356***   
##                       (0.005)      (0.009)       (0.093)   
## factor(msinc13Q)Q4   0.060***      0.048***       0.249    
##                       (0.006)      (0.010)       (0.168)   
## factor(msinc46Q)Q1   0.025***       -0.001                 
##                       (0.006)      (0.008)                 
## factor(msinc46Q)Q2     0.007       0.030***                
##                       (0.008)      (0.007)                 
## factor(msinc46Q)Q3     0.010        0.014                  
##                       (0.011)      (0.009)                 
## factor(msinc46Q)Q4   0.043***      0.022***                
##                       (0.007)      (0.007)                 
## 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 Loan-to-value

rm(r)
rm(r1)
rm(r2)
rm(regsample)
gc()
##              used   (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   18719004  999.8   51994801  2776.9   28891643  1543.0
## Vcells 1216934735 9284.5 3320276781 25331.8 4080721682 31133.5

5.1 Linear

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+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  r2[[1]] <- 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(msinc13Q)+factor(msinc46Q)+fico+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
  gc(verbose = F)
##              used   (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   18652320  996.2   51994801  2776.9   28891643  1543.0
## Vcells 1235647085 9427.3 3320276781 25331.8 4080721682 31133.5
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+dti+log(orig_upb)|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(msinc13Q)+factor(msinc46Q)+fico+dti+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
    gc(verbose = F)
##              used    (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   18667620   997.0   51994801  2776.9   28891643  1543.0
## Vcells 2589260162 19754.5 3984412137 30398.7 4080721682 31133.5
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+log(orig_upb)|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(msinc13Q)+fico+fulldocumentation+log(orig_upb)|bank_msa+loanyr|0|msa,data=regsample)
    gc(verbose = F)
##              used    (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   18724856  1000.1   51994801  2776.9   28891643  1543.0
## Vcells 2516056745 19196.0 3984412137 30398.7 4080721682 31133.5
  .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.034        0.057*      -0.446***  
##                      (0.032)      (0.034)       (0.116)   
## msinc46             -0.299***      -0.053                 
##                      (0.041)      (0.055)       (0.000)   
## fico               -0.00001***   -0.0003***   -0.0003***  
##                     (0.00000)    (0.00002)     (0.00001)  
## dti                -0.00001***    0.001***                
##                     (0.00000)    (0.00004)                
## fulldocumentation                              0.012***   
##                                                 (0.002)   
## log(orig_upb)       0.070***      0.075***     0.137***   
##                      (0.004)      (0.005)       (0.004)   
## ----------------------------------------------------------
## Fixed Effects     MSA*Bank, Yr  MSA*Bank, Yr MSA*Bank, Yr 
## Observations        8,210,798    15,685,571    3,272,882  
## Adjusted R2           0.147        0.212         0.291    
## ==========================================================
## Note:                          *p<0.1; **p<0.05; ***p<0.01
## 

5.2 Quadratic

  .printtable(r2,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.387***     -0.177*      -2.300***  
##                      (0.063)      (0.098)       (0.387)   
## I(msinc132)         4.929***      2.894***     37.778***  
##                      (0.736)      (1.068)       (6.780)   
## msinc46             -0.493***    -0.362***                
##                      (0.084)      (0.107)       (0.000)   
## I(msinc462)         2.325***      5.383***                
##                      (0.874)      (1.816)       (0.000)   
## fico               -0.00001***   -0.0003***   -0.0003***  
##                     (0.00000)    (0.00002)     (0.00001)  
## dti                -0.00001***    0.001***                
##                     (0.00000)    (0.00004)                
## fulldocumentation                              0.012***   
##                                                 (0.002)   
## log(orig_upb)       0.070***      0.075***     0.137***   
##                      (0.004)      (0.005)       (0.004)   
## ----------------------------------------------------------
## Fixed Effects     MSA*Bank, Yr  MSA*Bank, Yr MSA*Bank, Yr 
## Observations        8,210,798    15,685,571    3,272,882  
## Adjusted R2           0.148        0.213         0.291    
## ==========================================================
## Note:                          *p<0.1; **p<0.05; ***p<0.01
## 

5.3 Quartile Dummies

  .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(msinc13Q)Q1   0.015***      -0.0003      -0.035***  
##                       (0.003)      (0.003)       (0.003)   
## factor(msinc13Q)Q2   0.012***       0.005        -0.018    
##                       (0.003)      (0.004)       (0.014)   
## factor(msinc13Q)Q3   -0.014***    -0.007***     -0.019***  
##                       (0.003)      (0.003)       (0.005)   
## factor(msinc13Q)Q4     0.001        0.003        -0.010*   
##                       (0.003)      (0.004)       (0.006)   
## factor(msinc46Q)Q1   0.015***      -0.007*                 
##                       (0.004)      (0.004)                 
## factor(msinc46Q)Q2     0.006        0.003                  
##                       (0.004)      (0.004)                 
## factor(msinc46Q)Q3   -0.011***     -0.005**                
##                       (0.003)      (0.002)                 
## factor(msinc46Q)Q4   -0.017***      -0.005                 
##                       (0.003)      (0.004)                 
## fico                -0.00001***   -0.0003***   -0.0003***  
##                      (0.00000)    (0.00002)     (0.00001)  
## dti                 -0.00001***    0.001***                
##                      (0.00000)    (0.00004)                
## fulldocumentation                               0.012***   
##                                                  (0.002)   
## log(orig_upb)        0.070***      0.075***     0.137***   
##                       (0.004)      (0.005)       (0.004)   
## -----------------------------------------------------------
## Fixed Effects      MSA*Bank, Yr  MSA*Bank, Yr MSA*Bank, Yr 
## Observations         8,210,798    15,685,571    3,272,882  
## Adjusted R2            0.148        0.213         0.291    
## ===========================================================
## Note:                           *p<0.1; **p<0.05; ***p<0.01
## 
rm(r)
rm(r1)
rm(r2)
rm(regsample)
rm(freddie)
rm(fannie)
rm(moodys)
gc()
##             used   (Mb) gc trigger    (Mb)   max used    (Mb)
## Ncells   2468134  131.9   41595841  2221.5   28891643  1543.0
## Vcells 714208185 5449.0 3187529710 24319.0 4080721682 31133.5
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","actiontaken","applicantrace1","applicantincome","purposeofloan","amountofloan"))
hmda <- do.call(rbind , hmda)
hmda[,lender:=paste0(agencycode,"-",respondentid)]
hmda[,countycode:=paste0(state,countycode)]

hmda[,approved:=ifelse(actiontaken %in% c("1"),1,0)]

hmda <- hmda[asofdate>=2000]
gc()
##              used    (Mb)  gc trigger    (Mb)    max used  (Mb)
## Ncells    2481473   132.6     6978626   372.7    28891643  1543
## Vcells 4521180989 34493.9 12514263845 95476.3 10367526195 79098
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)
gc()
##              used    (Mb)  gc trigger     (Mb)    max used    (Mb)
## Ncells    2481346   132.6     6978626    372.7    28891643  1543.0
## Vcells 4825745080 36817.6 15017196614 114572.2 12439794522 94908.2
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[,msinc13Q:=ifelse(is.na(msinc13Q),"Q0",msinc13Q)]
hmda[,msinc46Q:=ifelse(is.na(msinc46Q),"Q0",msinc46Q)]

hmda <- hmda[applicantincome>0 & amountofloan>0]
gc()
##              used    (Mb)  gc trigger     (Mb)    max used     (Mb)
## Ncells    2481310   132.6     6978626    372.7    28891643   1543.0
## Vcells 7719931727 58898.5 18020715936 137487.2 15773151132 120339.6

6 Loan Approval

r <- list()
r[[1]] <- felm(approved~msinc13+msinc46+factor(purposeofloan)+log(applicantincome)+log(amountofloan)|asofdate+cbsa|0|cbsa,data=hmda)
gc()
##               used    (Mb)  gc trigger     (Mb)    max used     (Mb)
## Ncells     2481791   132.6     6978626    372.7    28891643   1543.0
## Vcells 12404729999 94640.6 21624939123 164985.2 16856200905 128602.7
# r[[2]] <- felm(approved~factor(msinc13Q)+factor(msinc46Q)+factor(purposeofloan)+log(applicantincome)+log(amountofloan)|asofdate+cbsa,data=hmda)

.printtable(r)
## 
## ==================================================
##                            Dependent variable:    
##                        ---------------------------
## --------------------------------------------------
## msinc13                         -2.437***         
##                                  (0.197)          
## msinc46                         -3.370***         
##                                  (0.366)          
## factor(purposeofloan)3          -0.114***         
##                                  (0.005)          
## log(applicantincome)            0.079***          
##                                  (0.002)          
## log(amountofloan)                 0.001           
##                                  (0.002)          
## --------------------------------------------------
##                                                   
## Observations                   232,386,819        
## Adjusted R2                       0.043           
## ==================================================
## Note:                  *p<0.1; **p<0.05; ***p<0.01
##