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"))
Market Share of Top Lenders
National
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)

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)

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)

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

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)

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)

List of Mergers
files = paste0("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/Ultimate Panel Data/",as.character(2000:2016),".fst")
panel = lapply(files, read_fst, as.data.table = TRUE,columns=c("respondentid","agencycode","reportername","asofdate","parentname","parentidentifier","reporterhomecity","reporterhomestate","rssd"))
panel <- do.call(rbind , panel)
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()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2198053 117.4 4104622 219.3 4104622 219.3
## Vcells 2224104658 16968.6 6822705216 52053.2 7327133930 55901.6
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","1-0000024141","4-0000018039"),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 5 msas; small share.
temp <- list(10,"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[[10]] <- temp
temp <- list(11,"MBNA NA - BANK OF AMERICA 2005",c("1-0000024095"),c("1-0000013044"),
2003,"BANK OF AMERICA, N.A.",2005)
mergers[[11]] <- temp
temp <- list(12,"Merrill Lynch - BANK OF AMERICA 2008",c("2-0000421203","7-13-3403204","3-13-3098068","3-13-3399559","3-0000027374","3-0000091363","3-13-3399559","4-0000014460","3-68-0518519","4-0000014460", "4-0133098068"),c("1-0000013044"),
2005,"BANK OF AMERICA, N.A.",2008)
mergers[[12]] <- temp
temp <- list(13,"FIRST INTERSTATE BK CA - Wells Fargo 1996",c("2-0000669667"),panel[substr(reportername,1,7)=="WELLS F"]$hmda_id,1994,"WELLS FARGO BANK, N.A.",1996)
mergers[[13]] <- temp
temp <- list(14,"PACIFIC NORTHWEST - Wells Fargo 2004",c("3-0000030887","3-0000027346"),panel[substr(reportername,1,7)=="WELLS F"]$hmda_id,
2002,"WELLS FARGO BANK, N.A.",2004)
mergers[[14]] <- temp
temp <- list(15,"MERIDIAN MOME MORTGAGE, LP - Wells Fargo 2010",c("1-74-3082948"),panel[substr(reportername,1,7)=="WELLS F"]$hmda_id,
2005,"WELLS FARGO BANK, N.A.",2010)
mergers[[15]] <- temp
temp <- list(16,"The Leader Mtg Co - US Bank 2004",
c("7-3814209995"),
panel[substr(reportername,1,5)=="U S B"]$hmda_id,
2002,c("U.S. BANK N.A."),2004)
mergers[[16]] <- temp
temp <- list(17,"PFF BANK & TRUST - US Bank 2008",
c("4-0000001405"),
panel[substr(reportername,1,5)=="U S B"]$hmda_id,
2005,c("U.S. BANK N.A."),2008)
mergers[[17]] <- temp
temp <- list(18,"DOWNEY SAVINGS AND LOAN ASSOCIATION, F.A. - US Bank 2008",
c("4-0000006189"),
panel[substr(reportername,1,5)=="U S B"]$hmda_id,
2005,c("U.S. BANK N.A."),2008)
mergers[[18]] <- 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]
cbsas[,suc_share:=0]
cbsa_bnk <- NULL
lender_bank <- NULL
sumtable <- 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)]
cw <- temp[,.(pred_share=mean(pred)),by=.(cbsa)]
temp1 <- hmda[asofdate == (acyr-1) ]
temp1[,suc:=ifelse(lender %in% suc_hmda_id,1,0)]
cw1 <- temp1[,.(suc_share=mean(suc)),by=.(cbsa)]
cw <- merge(cw,cw1,by="cbsa",all.x=T)
cw <- cw[!is.na(cbsa)]
cw[is.na(cw)] <- 0
cw[,joint_share:=pred_share+suc_share]
cw[,bank:=acname]
cw[,acyr:=acyr]
cw[,c("joint_share"):=list(NULL)]
cbsa_bnk <- rbind(cbsa_bnk,cw)
}
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)
names(cbsa_bnk_1) <- c("cbsa","pred_share_7","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_8","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_9","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[,pred_share_7:=ifelse(is.na(pred_share_7),0,pred_share_7)]
cbsa_bnk[,pred_share_8:=ifelse(is.na(pred_share_8),0,pred_share_8)]
cbsa_bnk[,pred_share_9:=ifelse(is.na(pred_share_9),0,pred_share_9)]
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_bnk[,msinc79:=pred_share_7+pred_share_8+pred_share_9+0.00001]
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[,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_bnk[,msinc79G:=ifelse(msinc79<=0.0001,"0. 0",
ifelse(msinc79<0.01,"1. Less than 1pct",
ifelse(msinc79<0.05,"2. 1 - 5pct",
ifelse(msinc79<0.1,"3. 5pct - 10pct", "4. More than 10pct"))))]
Step 1: Identifying Lenders
We identified lenders that are consistently identified across in freddie and fannie data sets. Freddie and fannie identify lenders with a total loan amount epresenting 1% or more of the total loan amount of all loans in the Dataset for a given calendar quarter. Otherwise, the lender name is set to “Other Sellers”. The lists of Freddie and Fannie lenders with the corresponding number of loans in each year are available
here{:target="_blank“} and
here{:target=”_blank"}, respectively.
List of Lenders Identified
-
Bank of America
-
JPMorgan Chase
-
Wells Fargo
-
US Bank
-
Flagstar FSB
-
Fifth Thrid Bank
-
Regions Financial Corp
Step 2: Identifying mergers
We identified all the mergers since 1995 where the acquirer is one the selected banks in the list above. The list of all identified mergers is available here{:target="_blank"}
Step 3: Identifying targets present in HMDA data
Next, we exclude mergers if the target is not present in HMDA data. The list of selected mergers is available here{:target="_blank"}
Step 4: Identify ‘large’ targets
Criteria: at least one MSA where target had 5% or more market share.

Summary Statistics
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","loan_purpose"))
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")]
freddie[,freddie:=1]
freddie[,newpurchase:=ifelse(loan_purpose=="P",1,0)]
vars <- c("fico","ltv","dti","orig_upb","int_rt","loanyr","newpurchase")
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
## newpurchase 16,245,111 0.420 0.494 0 0 1
## ------------------------------------------------------------------------
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","loan_purpose"))
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[,bank:=seller_name]
fannie[,bank:=ifelse(bank %in% unique(cbsa_bnk$bank),bank,"other")]
fannie[,freddie:=0]
setnames(fannie,"zip_code","zipcode")
setnames(fannie,"original_ltv","ltv")
setnames(fannie,"original_upb","orig_upb")
setnames(fannie,"original_interest_rate","int_rt")
setnames(fannie,"loan_identifier","id_loan")
setnames(fannie,"credit_score","fico")
setnames(fannie,"original_dti","dti")
fannie[,c("property_type","property_state","original_loan_term","origination_date"):=list(NULL)]
fannie[,loan_purpose:=ifelse(loan_purpose=="R","N",loan_purpose)]
fannie <- fannie[loan_purpose != "U"]
fannie[,id_loan:=as.character(id_loan)]
fannie[,newpurchase:=ifelse(loan_purpose=="P",1,0)]
vars <- c("fico","ltv","dti","orig_upb","int_rt","loanyr","newpurchase")
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,256,524 736.426 54.519 700.000 747.000 781.000
## ltv 20,347,997 73.220 16.213 65.000 78.000 80.000
## dti 19,924,305 34.426 11.429 26.000 35.000 42.000
## orig_upb 20,348,007 197,397.000 111,678.300 115,000 172,000 254,000
## int_rt 20,348,004 5.542 1.240 4.500 5.625 6.375
## loanyr 20,348,007 2,007.760 5.680 2,003 2,007 2,013
## newpurchase 20,348,007 0.410 0.492 0 0 1
## ------------------------------------------------------------------------
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","purposetype","assettype"))
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 38964662 2081.0 61656191 3292.8 41527860 2217.9
## Vcells 3541882276 27022.5 6822705216 52053.2 7327133930 55901.6
moodys[,bank:=seller_name]
moodys[,bank:=ifelse(bank %in% unique(cbsa_bnk$bank),bank,"other")]
moodys[,newpurchase:=ifelse(purposetype=="PUR",1,0)]
moodys <- moodys[assettype != "UN"]
vars <- c("fico","ltv","dti","orig_upb","int_rt","loanyr","fulldocumentation","newpurchase")
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 14,270,174 669.021 71.764 620.000 672.000 723.000
## ltv 14,550,668 69.383 26.231 62.257 80.000 80.000
## dti 14,646,107 0.000 0.000 0 0 0
## orig_upb 14,644,960 224,316.700 217,121.600 80,439.160 159,600.000 306,750.000
## int_rt 14,635,473 7.382 2.528 6.000 7.125 8.750
## loanyr 14,619,923 2,004.422 2.223 2,004.000 2,005.000 2,006.000
## fulldocumentation 14,646,107 0.314 0.464 0 0 1
## newpurchase 14,646,107 0.392 0.488 0 0 1
## ---------------------------------------------------------------------------------------
Descriptive Statistics: Market Share Changes
msinc13
print(ggplot(cbsa_bnk[msinc13>0.00001],aes(x=msinc13*100))+geom_histogram(fill="royalblue",alpha=0.3,color="royalblue")+theme_minimal())+labs(x=bquote(MSInc^{1-3}~"(%)"),y="Frequency")+scale_y_continuous(labels = function(x) format(x, big.mark = ",",scientific = FALSE))


msinc46
print(ggplot(cbsa_bnk[msinc46>0.00001],aes(x=msinc46*100))+geom_histogram(fill="royalblue",alpha=0.3,color="royalblue")+theme_minimal())+labs(x=bquote(MSInc^{4-6}~"(%)"),y="Frequency")+scale_y_continuous(labels = function(x) format(x, big.mark = ",",scientific = FALSE))


Dep. Var: Interest Increase by the Acquiring Bank
\[ 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
Purchase Refinance Combined
regsample <- rbind(freddie,fannie)
regsample <- merge(regsample,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]
r <- list()
r[[1]] <- felm(int_rt~msinc13+msinc46+fico+ltv+dti+log(orig_upb)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample)
r[[2]] <- felm(int_rt~newpurchase*msinc13+newpurchase*msinc46+fico+ltv+dti+log(orig_upb)+freddie|bank_msa+loanyr|0|msa,data=regsample)
r[[3]] <- felm(int_rt~msinc13+fico+ltv+dti+log(orig_upb)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample[loanyr<=2007])
r[[4]] <- felm(int_rt~newpurchase*msinc13+fico+ltv+dti+log(orig_upb)+freddie|bank_msa+loanyr|0|msa,data=regsample[loanyr<=2007])
regsample <- merge(moodys,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]
# regsample[,yr_msa:=paste(loanyr,msa)]
r[[5]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F"])
r[[6]] <- felm(int_rt~newpurchase*msinc13+fico+ltv+fulldocumentation+log(orig_upb)+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F"])
.printtable(r,column.labels = c("GSE","GSE","GSE <= 2007","GSE <= 2007","Moody's","Moody's"),lines = list(c("Fixed Effects",rep("MSA*Bank, Yr",6))))
##
## =======================================================================================================
## Dependent variable:
## -----------------------------------------------------------------------------
## GSE GSE GSE <= 2007 GSE <= 2007 Moody's Moody's
## (1) (2) (3) (4) (5) (6)
## -------------------------------------------------------------------------------------------------------
## msinc13 0.772*** 0.886*** 0.484*** 1.096*** 6.797*** 9.030***
## (0.047) (0.061) (0.145) (0.173) (1.967) (2.017)
## msinc46 0.258*** 0.225**
## (0.086) (0.105)
## fico -0.0001*** -0.0001*** -0.00003*** -0.00003*** -0.004*** -0.004***
## (0.00001) (0.00001) (0.00000) (0.00000) (0.0001) (0.0001)
## ltv 0.004*** 0.004*** 0.004*** 0.004*** -0.012*** -0.012***
## (0.0001) (0.0001) (0.0001) (0.0001) (0.001) (0.001)
## dti 0.0001*** 0.0001*** 0.0001*** 0.0001***
## (0.00001) (0.00001) (0.00001) (0.00001)
## fulldocumentation -0.227*** -0.227***
## (0.010) (0.010)
## log(orig_upb) -0.227*** -0.227*** -0.237*** -0.237*** -1.017*** -1.017***
## (0.006) (0.006) (0.005) (0.005) (0.018) (0.018)
## freddie 0.046*** 0.046*** 0.052*** 0.052***
## (0.002) (0.002) (0.003) (0.003)
## newpurchase:msinc13 -0.294*** -1.479*** -5.566***
## (0.063) (0.124) (0.840)
## newpurchase:msinc46 0.073
## (0.111)
## newpurchase 0.023*** 0.023*** 0.015*** 0.016*** 0.310*** 0.311***
## (0.004) (0.004) (0.003) (0.003) (0.032) (0.032)
## factor(assettype)Prime -0.137*** -0.137***
## (0.007) (0.007)
## factor(assettype)Subprime 0.216*** 0.216***
## (0.015) (0.015)
## -------------------------------------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 23,889,210 23,889,210 13,718,101 13,718,101 3,271,732 3,271,732
## Adjusted R2 0.897 0.897 0.759 0.759 0.517 0.517
## =======================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
Purchase Refinance Combined - Bins
regsample <- rbind(freddie,fannie)
regsample <- merge(regsample,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]
r <- list()
r[[1]] <- felm(int_rt~factor(msinc13G)+factor(msinc46G)+fico+ltv+dti+log(orig_upb)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample)
r[[2]] <- felm(int_rt~factor(msinc13G)+fico+ltv+dti+log(orig_upb)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample[loanyr<=2007])
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~factor(msinc13G)+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F"])
.printtable(r,column.labels = c("GSE","GSE <= 2007","Moody's","Moody's"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## =========================================================================
## Dependent variable:
## --------------------------------------
## GSE GSE <= 2007 Moody's
## (1) (2) (3)
## -------------------------------------------------------------------------
## factor(msinc13G)1. Less than 1pct 0.049*** 0.031*** -0.151***
## (0.003) (0.005) (0.021)
## factor(msinc13G)2. 1 - 5pct 0.044*** 0.025*** 0.268***
## (0.004) (0.007) (0.077)
## factor(msinc13G)3. 5pct - 10pct 0.044*** 0.030*** 0.473***
## (0.006) (0.010) (0.135)
## factor(msinc13G)4. More than 10pct 0.099*** 0.066 1.902***
## (0.008) (0.056) (0.441)
## factor(msinc46G)1. Less than 1pct 0.010**
## (0.004)
## factor(msinc46G)2. 1 - 5pct 0.025***
## (0.006)
## factor(msinc46G)3. 5pct - 10pct 0.005
## (0.010)
## factor(msinc46G)4. More than 10pct 0.001
## (0.010)
## fico -0.0001*** -0.00003*** -0.004***
## (0.00001) (0.00000) (0.0001)
## ltv 0.004*** 0.004*** -0.012***
## (0.0001) (0.0001) (0.001)
## dti 0.0001*** 0.0001***
## (0.00001) (0.00001)
## fulldocumentation -0.226***
## (0.010)
## log(orig_upb) -0.227*** -0.238*** -1.017***
## (0.006) (0.005) (0.018)
## freddie 0.048*** 0.051***
## (0.002) (0.003)
## newpurchase 0.023*** 0.015*** 0.310***
## (0.004) (0.003) (0.032)
## factor(assettype)Prime -0.137***
## (0.007)
## factor(assettype)Subprime 0.216***
## (0.015)
## -------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 23,889,210 13,718,101 3,271,732
## Adjusted R2 0.898 0.759 0.517
## =========================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
Dep. Var: Loan-to-value
Purchase Refinance Combined
regsample <- rbind(freddie,fannie)
regsample <- merge(regsample,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]
regsample[,homevalue:= orig_upb*100/ltv]
r <- list()
r[[1]] <- felm(log(orig_upb)~msinc13+msinc46+fico+dti+log(homevalue)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample)
r[[2]] <- felm(log(orig_upb)~newpurchase*msinc13+newpurchase*msinc46+fico+dti+log(homevalue)+freddie|bank_msa+loanyr|0|msa,data=regsample)
r[[3]] <- felm(log(orig_upb)~msinc13+fico+dti+log(homevalue)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample[loanyr<=2007])
r[[4]] <- felm(log(orig_upb)~newpurchase*msinc13+fico+dti+log(homevalue)+freddie|bank_msa+loanyr|0|msa,data=regsample[loanyr<=2007])
regsample <- merge(moodys,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]
regsample[,homevalue:= orig_upb*100/ltv]
r[[5]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F"])
r[[6]] <- felm(log(orig_upb)~newpurchase*msinc13+fico+fulldocumentation+log(homevalue)+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F"])
.printtable(r,column.labels = c("GSE","GSE","GSE <= 2007","GSE <= 2007","Moody's","Moody's"),lines = list(c("Fixed Effects",rep("MSA*Bank, Yr",6))))
##
## =======================================================================================================
## Dependent variable:
## -----------------------------------------------------------------------------
## GSE GSE GSE <= 2007 GSE <= 2007 Moody's Moody's
## (1) (2) (3) (4) (5) (6)
## -------------------------------------------------------------------------------------------------------
## msinc13 0.118*** 0.076 0.132** 0.196** 2.628*** 0.393
## (0.040) (0.053) (0.065) (0.095) (0.525) (0.631)
## msinc46 -0.056 -0.191***
## (0.052) (0.067)
## fico -0.00003*** -0.00003*** -0.00003*** -0.00003*** 0.0004*** 0.0004***
## (0.00000) (0.00000) (0.00000) (0.00000) (0.00002) (0.00002)
## dti 0.00003*** 0.00003*** 0.00002*** 0.00002***
## (0.00001) (0.00001) (0.00001) (0.00001)
## fulldocumentation 0.037*** 0.037***
## (0.003) (0.003)
## log(homevalue) 0.840*** 0.840*** 0.822*** 0.822*** 0.838*** 0.838***
## (0.010) (0.010) (0.010) (0.010) (0.005) (0.005)
## freddie -0.014*** -0.014*** -0.009*** -0.009***
## (0.001) (0.001) (0.001) (0.001)
## newpurchase:msinc13 0.121* -0.156 5.569***
## (0.066) (0.117) (0.469)
## newpurchase:msinc46 0.372***
## (0.067)
## newpurchase 0.131*** 0.130*** 0.112*** 0.112*** -0.086*** -0.087***
## (0.003) (0.003) (0.004) (0.004) (0.010) (0.010)
## factor(assettype)Prime 0.083*** 0.083***
## (0.004) (0.004)
## factor(assettype)Subprime 0.049*** 0.049***
## (0.004) (0.004)
## -------------------------------------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 23,889,212 23,889,212 13,718,103 13,718,103 3,272,969 3,272,969
## Adjusted R2 0.816 0.816 0.778 0.778 0.748 0.748
## =======================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
Purchase Refinance Combined - Bins
regsample <- rbind(freddie,fannie)
regsample <- merge(regsample,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]
regsample[,homevalue:= orig_upb*100/ltv]
r <- list()
r[[1]] <- felm(log(orig_upb)~factor(msinc13G)+factor(msinc46G)+fico+dti+log(homevalue)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample)
r[[2]] <- felm(log(orig_upb)~factor(msinc13G)+fico+dti+log(homevalue)+freddie+newpurchase|bank_msa+loanyr|0|msa,data=regsample[loanyr<=2007])
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[,homevalue:= orig_upb*100/ltv]
r[[3]] <- felm(log(orig_upb)~factor(msinc13G)+fico+fulldocumentation+log(homevalue)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F"])
.printtable(r,column.labels = c("GSE","GSE <= 2007","Moody's","Moody's"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## =========================================================================
## Dependent variable:
## --------------------------------------
## GSE GSE <= 2007 Moody's
## (1) (2) (3)
## -------------------------------------------------------------------------
## factor(msinc13G)1. Less than 1pct 0.003 0.002 0.011
## (0.002) (0.003) (0.007)
## factor(msinc13G)2. 1 - 5pct 0.002 0.002 0.126***
## (0.003) (0.003) (0.018)
## factor(msinc13G)3. 5pct - 10pct 0.010* 0.009* 0.113***
## (0.006) (0.005) (0.031)
## factor(msinc13G)4. More than 10pct 0.001 0.007 0.320***
## (0.008) (0.024) (0.026)
## factor(msinc46G)1. Less than 1pct 0.001
## (0.003)
## factor(msinc46G)2. 1 - 5pct 0.007***
## (0.002)
## factor(msinc46G)3. 5pct - 10pct -0.005
## (0.006)
## factor(msinc46G)4. More than 10pct -0.039***
## (0.014)
## fico -0.00003*** -0.00003*** 0.0004***
## (0.00000) (0.00000) (0.00002)
## dti 0.00003*** 0.00002***
## (0.00001) (0.00001)
## fulldocumentation 0.037***
## (0.003)
## log(homevalue) 0.840*** 0.822*** 0.838***
## (0.010) (0.010) (0.005)
## freddie -0.014*** -0.009***
## (0.001) (0.001)
## newpurchase 0.131*** 0.112*** -0.086***
## (0.003) (0.004) (0.010)
## factor(assettype)Prime 0.083***
## (0.004)
## factor(assettype)Subprime 0.049***
## (0.004)
## -------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 23,889,212 13,718,103 3,272,969
## Adjusted R2 0.816 0.778 0.748
## =========================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
Moodys Splits
regsample <- merge(moodys,cbsa_bnk,by.x=c("bank","msa","loanyr"),by.y=c("bank","cbsa","acyr"))
regsample[,bank_msa:=paste(seller_name,msa)]
regsample[,homevalue:= orig_upb*100/ltv]
Interest Rate
By loan type
Linear
r <- list()
r[[1]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype != "UN"])
r[[2]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Prime"])
r[[3]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Alt-A"])
r[[4]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Subprime"])
.printtable(r,column.labels = c("All","Prime","Alt-A","Subprime"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## =============================================================================
## Dependent variable:
## ---------------------------------------------------
## All Prime Alt-A Subprime
## (1) (2) (3) (4)
## -----------------------------------------------------------------------------
## msinc13 6.797*** -1.570 9.817*** 35.548***
## (1.967) (0.982) (1.998) (3.831)
## fico -0.004*** -0.003*** -0.005*** -0.004***
## (0.0001) (0.0001) (0.0001) (0.0002)
## ltv -0.012*** -0.007*** -0.013*** -0.013***
## (0.001) (0.001) (0.001) (0.001)
## fulldocumentation -0.227*** -0.184*** -0.376*** -0.395***
## (0.010) (0.009) (0.015) (0.013)
## log(orig_upb) -1.017*** -0.788*** -1.179*** -1.365***
## (0.018) (0.014) (0.026) (0.033)
## newpurchase 0.310*** 0.229*** 0.343*** 0.390***
## (0.032) (0.024) (0.037) (0.044)
## factor(assettype)Prime -0.137***
## (0.007)
## factor(assettype)Subprime 0.216***
## (0.015)
## -----------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 3,271,732 1,807,976 702,351 761,405
## Adjusted R2 0.517 0.586 0.549 0.404
## =============================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
Market share bins
r <- list()
r[[1]] <- felm(int_rt~msinc13G+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype != "UN"])
r[[2]] <- felm(int_rt~msinc13G+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Prime"])
r[[3]] <- felm(int_rt~msinc13G+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Alt-A"])
r[[4]] <- felm(int_rt~msinc13G+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Subprime"])
.printtable(r,column.labels = c("All","Prime","Alt-A","Subprime"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## ==============================================================================
## Dependent variable:
## ---------------------------------------------------
## All Prime Alt-A Subprime
## (1) (2) (3) (4)
## ------------------------------------------------------------------------------
## msinc13G1. Less than 1pct -0.151*** -0.265*** 0.078** 1.193***
## (0.021) (0.016) (0.037) (0.146)
## msinc13G2. 1 - 5pct 0.268*** 0.029 0.262*** 1.221***
## (0.077) (0.052) (0.081) (0.149)
## msinc13G3. 5pct - 10pct 0.473*** 0.020 0.654*** 1.547***
## (0.135) (0.081) (0.164) (0.160)
## msinc13G4. More than 10pct 1.902*** 2.493***
## (0.441) (0.000) (0.000) (0.021)
## fico -0.004*** -0.003*** -0.005*** -0.004***
## (0.0001) (0.0001) (0.0001) (0.0002)
## ltv -0.012*** -0.007*** -0.013*** -0.013***
## (0.001) (0.001) (0.001) (0.001)
## fulldocumentation -0.226*** -0.181*** -0.376*** -0.395***
## (0.010) (0.009) (0.015) (0.013)
## log(orig_upb) -1.017*** -0.788*** -1.179*** -1.365***
## (0.018) (0.015) (0.026) (0.033)
## newpurchase 0.310*** 0.229*** 0.343*** 0.390***
## (0.032) (0.024) (0.036) (0.044)
## factor(assettype)Prime -0.137***
## (0.007)
## factor(assettype)Subprime 0.216***
## (0.015)
## ------------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 3,271,732 1,807,976 702,351 761,405
## Adjusted R2 0.517 0.586 0.549 0.404
## ==============================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
Impact of acq. bank share
r <- list()
r[[1]] <- felm(int_rt~msinc13*suc_share+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype != "UN"])
r[[2]] <- felm(int_rt~msinc13*suc_share+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Prime"])
r[[3]] <- felm(int_rt~msinc13*suc_share+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Alt-A"])
r[[4]] <- felm(int_rt~msinc13*suc_share+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Subprime"])
.printtable(r,column.labels = c("All","Prime","Alt-A","Subprime"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## =============================================================================
## Dependent variable:
## ---------------------------------------------------
## All Prime Alt-A Subprime
## (1) (2) (3) (4)
## -----------------------------------------------------------------------------
## msinc13 5.143*** -3.197*** 8.747*** 34.641***
## (1.893) (0.953) (1.929) (3.774)
## suc_share -3.184*** -2.927*** -2.753*** -2.069***
## (0.186) (0.201) (0.284) (0.338)
## fico -0.004*** -0.003*** -0.005*** -0.004***
## (0.0001) (0.0001) (0.0001) (0.0002)
## ltv -0.012*** -0.007*** -0.013*** -0.013***
## (0.001) (0.001) (0.001) (0.001)
## fulldocumentation -0.228*** -0.186*** -0.376*** -0.394***
## (0.009) (0.009) (0.015) (0.013)
## log(orig_upb) -1.018*** -0.789*** -1.180*** -1.366***
## (0.018) (0.015) (0.026) (0.033)
## newpurchase 0.310*** 0.229*** 0.341*** 0.389***
## (0.032) (0.024) (0.036) (0.044)
## factor(assettype)Prime -0.137***
## (0.007)
## factor(assettype)Subprime 0.217***
## (0.015)
## msinc13:suc_share -40.841 4.004 -545.778 810.319***
## (141.847) (92.353) (516.526) (223.315)
## -----------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 3,271,732 1,807,976 702,351 761,405
## Adjusted R2 0.518 0.586 0.549 0.404
## =============================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
By documentation
r <- list()
r[[1]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & documentationtype %in% c("FU") & assettype %in% c("Alt-A","Subprime")])
r[[2]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)+factor(documentationtype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & documentationtype %in% c("LO","NO") & assettype %in% c("Alt-A","Subprime")])
.printtable(r,column.labels = c("Full-Doc","Low/No-Doc"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## ========================================================
## Dependent variable:
## ----------------------------
## Full-Doc Low/No-Doc
## (1) (2)
## --------------------------------------------------------
## msinc13 34.064*** 20.137***
## (2.821) (3.571)
## fico -0.004*** -0.003***
## (0.0002) (0.0002)
## ltv -0.015*** -0.016***
## (0.001) (0.002)
## fulldocumentation
## (0.000) (0.000)
## log(orig_upb) -1.243*** -1.120***
## (0.027) (0.041)
## newpurchase 0.398*** 0.485***
## (0.037) (0.048)
## factor(assettype)Subprime 0.243*** 0.293***
## (0.011) (0.016)
## factor(documentationtype)NO 0.444***
## (0.014)
## --------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr
## Observations 673,518 399,704
## Adjusted R2 0.406 0.478
## ========================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
By FICO Score
r <- list()
r[[1]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & fico<620 & assettype %in% c("Alt-A","Subprime")])
r[[2]] <- felm(int_rt~msinc13+fico+ltv+fulldocumentation+log(orig_upb)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & fico>=620 & assettype %in% c("Alt-A","Subprime")])
.printtable(r,column.labels = c("FICO<620","FICO>=620"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## ======================================================
## Dependent variable:
## ----------------------------
## FICO<620 FICO>=620
## (1) (2)
## ------------------------------------------------------
## msinc13 39.422*** 11.111***
## (4.023) (2.148)
## fico -0.002*** -0.006***
## (0.0003) (0.0001)
## ltv -0.013*** -0.014***
## (0.001) (0.001)
## fulldocumentation -0.401*** -0.348***
## (0.014) (0.015)
## log(orig_upb) -1.429*** -1.179***
## (0.032) (0.029)
## newpurchase 0.324*** 0.380***
## (0.044) (0.036)
## factor(assettype)Subprime 0.724*** 0.270***
## (0.027) (0.016)
## ------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr
## Observations 611,157 852,599
## Adjusted R2 0.380 0.555
## ======================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
loan amount
By loan type
r <- list()
r[[1]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype != "UN"])
r[[2]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Prime"])
r[[3]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Alt-A"])
r[[4]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & assettype=="Subprime"])
.printtable(r,column.labels = c("All","Prime","Alt-A","Subprime"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## =============================================================================
## Dependent variable:
## ---------------------------------------------------
## All Prime Alt-A Subprime
## (1) (2) (3) (4)
## -----------------------------------------------------------------------------
## msinc13 2.628*** 1.849*** 6.849*** 0.182
## (0.525) (0.590) (0.686) (0.425)
## fico 0.0004*** 0.0003*** 0.0003*** 0.0002***
## (0.00002) (0.00003) (0.00005) (0.0001)
## fulldocumentation 0.037*** 0.055*** 0.084*** -0.056***
## (0.003) (0.002) (0.004) (0.004)
## log(homevalue) 0.838*** 0.859*** 0.804*** 0.763***
## (0.005) (0.006) (0.006) (0.008)
## newpurchase -0.086*** 0.026*** -0.177*** -0.281***
## (0.010) (0.009) (0.008) (0.011)
## factor(assettype)Prime 0.083***
## (0.004)
## factor(assettype)Subprime 0.049***
## (0.004)
## -----------------------------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr MSA*Bank, Yr
## Observations 3,272,969 1,808,312 702,637 762,020
## Adjusted R2 0.748 0.797 0.666 0.619
## =============================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
By documentation
r <- list()
r[[1]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & documentationtype %in% c("FU") & assettype %in% c("Alt-A","Subprime")])
r[[2]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase+factor(assettype)+factor(documentationtype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & documentationtype %in% c("LO","NO") & assettype %in% c("Alt-A","Subprime")])
.printtable(r,column.labels = c("Full-Doc","Low/No-Doc"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## ========================================================
## Dependent variable:
## ----------------------------
## Full-Doc Low/No-Doc
## (1) (2)
## --------------------------------------------------------
## msinc13 2.463*** 3.655***
## (0.426) (0.631)
## fico -0.001*** -0.0002***
## (0.0001) (0.0001)
## fulldocumentation
## (0.000) (0.000)
## log(homevalue) 0.857*** 0.830***
## (0.004) (0.008)
## newpurchase -0.268*** -0.143***
## (0.009) (0.008)
## factor(assettype)Subprime -0.100*** 0.057***
## (0.003) (0.005)
## factor(documentationtype)NO -0.136***
## (0.015)
## --------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr
## Observations 673,565 399,728
## Adjusted R2 0.650 0.650
## ========================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
By FICO Score
r <- list()
r[[1]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & fico<620 & assettype %in% c("Alt-A","Subprime")])
r[[2]] <- felm(log(orig_upb)~msinc13+fico+fulldocumentation+log(homevalue)+newpurchase+factor(assettype)|bank_msa+loanyr|0|msa,data=regsample[originalterm==360 & armflag=="F" & fico>=620 & assettype %in% c("Alt-A","Subprime")])
.printtable(r,column.labels = c("FICO<620","FICO>=620"),lines = list(c("Fixed Effects","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr","MSA*Bank, Yr")))
##
## ======================================================
## Dependent variable:
## ----------------------------
## FICO<620 FICO>=620
## (1) (2)
## ------------------------------------------------------
## msinc13 -0.280 6.236***
## (0.478) (0.607)
## fico -0.001*** 0.001***
## (0.0001) (0.00005)
## fulldocumentation -0.019*** 0.046***
## (0.005) (0.003)
## log(homevalue) 0.770*** 0.795***
## (0.009) (0.006)
## newpurchase -0.273*** -0.202***
## (0.011) (0.009)
## factor(assettype)Subprime -0.069*** 0.085***
## (0.008) (0.005)
## ------------------------------------------------------
## Fixed Effects MSA*Bank, Yr MSA*Bank, Yr
## Observations 611,700 852,957
## Adjusted R2 0.638 0.647
## ======================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
HMDA Data: New Purchases
cbsa_bnk <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_bnk.fst",as.data.table = T)
cbsa_bnk[,msinc13Q:=ifelse(msinc13<=0.0001,"Q0",
ifelse(msinc13<0.0027235,"Q1",
ifelse(msinc13<0.0112596,"Q2",
ifelse(msinc13<0.0366354,"Q3","Q4"))))]
cbsa_bnk[,msinc13G:=ifelse(msinc13<=0.0001,"0. 0",
ifelse(msinc13<0.01,"1. Less than 1pct",
ifelse(msinc13<0.05,"2. 1 - 5pct",
ifelse(msinc13<0.1,"3. 5pct - 10pct", "4. More than 10pct"))))]
cbsa_bnk[,msinc46Q:=ifelse(msinc46<=0.0001,"Q0",
ifelse(msinc46<0.0027235,"Q1",
ifelse(msinc46<0.0112596,"Q2",
ifelse(msinc46<0.0366354,"Q3","Q4"))))]
cbsa_bnk[,msinc46G:=ifelse(msinc46<=0.0001,"0. 0",
ifelse(msinc46<0.01,"1. Less than 1pct",
ifelse(msinc46<0.05,"2. 1 - 5pct",
ifelse(msinc46<0.1,"3. 5pct - 10pct", "4. More than 10pct"))))]
#
cbsa_share<- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_share.fst",as.data.table = T)
cbsa_share[,msinc13G:=ifelse(msinc13<=0.0001,"0. 0",
ifelse(msinc13<0.01,"1. Less than 1pct",
ifelse(msinc13<0.05,"2. 1 - 5pct",
ifelse(msinc13<0.1,"3. 5pct - 10pct", "4. More than 10pct"))))]
cbsa_bnk_partrend <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_bnk_partrend.fst",as.data.table = T)
cbsa_share_partrend <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/cbsa_share_partrend.fst",as.data.table = T)
files <- NULL
files <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/pre2004/OO_NP/",full.names = TRUE)
# files <- c(files,list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/pre2004/OO_RF/",full.names = TRUE))
files <- c(files,list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/OO_NP/",full.names = TRUE))
# files <- c(files,list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/HMDA/OO_RF/",full.names = TRUE))
files <- files[substr(files,100,103) %in% as.character(2000:2017)] #c("2014","2015","2016","2017","2018")
hmda = lapply(files, read_fst, as.data.table = TRUE,
columns=c("asofdate","respondentid","agencycode","state","countycode","msa","actiontaken","applicantrace1","applicantincome","amountofloan","typeofpurchaser","typeofloan","applicantethnicity"))
hmda <- do.call(rbind , hmda)
# hmda <- hmda[asofd•ate>=2000 & asofdate<2017]
hmda[,lender:=paste0(agencycode,"-",respondentid)]
hmda[,countycode:=paste0(state,countycode)]
hmda[,approved:=ifelse(actiontaken %in% c("1"),1,0)]
hmda[,sold:=ifelse(typeofpurchaser !="0" & actiontaken=="1",1,ifelse(actiontaken=="1",0,NA))]
hmda[,nonwhite:=ifelse(applicantrace1=="5",0,1)]
lender_bank <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/lender_bank.fst",as.data.table = T)
hmda <- merge(hmda,lender_bank,by="lender",all.x=T)
cbsa_fips <- fread("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Crosswalk Files/cbsa_countyfips.csv")
cbsa_fips[,fips:=ifelse(nchar(fips)==4,paste0("0",fips),paste0(fips))]
hmda <- merge(hmda,cbsa_fips,by.x="countycode",by.y="fips",all.x=T)
hmda <- merge(hmda,cbsa_bnk,by.x=c("bank","cbsa","asofdate"),by.y=c("bank","cbsa","acyr"),all.x=T)
hmda[,msinc13:=ifelse(is.na(msinc13),0.00001,msinc13)]
hmda[,msinc46:=ifelse(is.na(msinc46),0.00001,msinc46)]
hmda[,bank:=ifelse(is.na(bank),lender,bank)]
hmda[,msinc13G:=ifelse(is.na(msinc13G),"0. 0",msinc13G)]
hmda[,msinc46G:=ifelse(is.na(msinc46G),"0. 0",msinc46G)]
hmda[,bank_msa:=paste(bank,cbsa)]
hmda <- hmda[!is.na(cbsa)]
hmda[,applicantincome:=as.numeric(applicantincome)]
hmda[,amountofloan:=as.numeric(amountofloan)]
hmda <- hmda[applicantincome>0 & amountofloan>0]
hmda[,msinc13G:=factor(msinc13G)]
# hmda <- within(hmda, msinc13G <- relevel(msinc13G, ref = 1))
hmda[,msinc46G:=as.factor(msinc46G)]
hmda[,hispanic:=ifelse(applicantethnicity=="1",1,0)]
hmda[,race:=ifelse(hispanic==1,"hispanic",ifelse(applicantrace1=="5","0white",ifelse(applicantrace1=="3","black","other")))]
hmda[,black:=ifelse(applicantrace1=="3",1,0)]
hmda[,actiontaken:=as.numeric(actiontaken)]
hmda[,denied:=ifelse(actiontaken %in% c(3,7),1,0)]
hmda[,typeofloan:=as.numeric(typeofloan)]
hmda[,medianincome:=median(applicantincome,na.rm=T),by=asofdate]
hmda[,lowincome:=ifelse(applicantincome<medianincome,1,0)]
hmda[,racecat:=ifelse(hispanic==1,"hispanic",
ifelse(applicantrace1=="5","white",
ifelse(applicantrace1=="3","black",
ifelse(applicantrace1=="2","asian",
ifelse(applicantrace1=="4","native","na")))))]
conflimit <- fread("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Projects/Bank Mergers/data/conforminglimits.csv")
names(conflimit) <- c("asofdate","conflimit")
conflimit[,conflimit:=floor(conflimit/1000)]
hmda <- merge(hmda,conflimit,by="asofdate")
hmda[,jumbo:=ifelse(typeofloan==1 & amountofloan>conflimit,1,ifelse(typeofloan==1,0,NA))]
Descriptive Statistics
Conventional Loans
vars <- c("amountofloan","applicantincome","approved","sold","nonwhite","asofdate","hispanic","black","jumbo")
stargazer(hmda[typeofloan==1,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
##
## ======================================================================
## Statistic N Mean St. Dev. Pctl(25) Median Pctl(75)
## ----------------------------------------------------------------------
## amountofloan 45,419,402 226.928 266.683 104 180 297
## applicantincome 45,419,402 104.931 129.053 53 80 122
## approved 45,419,402 0.580 0.494 0 1 1
## sold 26,331,998 0.753 0.431 1.000 1.000 1.000
## nonwhite 45,419,402 0.291 0.454 0 0 1
## asofdate 45,419,402 2,008.843 4.369 2,005 2,007 2,013
## hispanic 45,419,402 0.118 0.323 0 0 0
## black 45,419,402 0.069 0.254 0 0 0
## jumbo 45,419,402 0.109 0.312 0 0 0
## ----------------------------------------------------------------------
Conventional Loans - Race Distrubution
library(knitr)
racedist <- hmda[typeofloan==1,.N,by=racecat]
racedist[,frac:=N/sum(N)]
kable(racedist,digits = 2)
| white |
27598083 |
0.61 |
| na |
6070242 |
0.13 |
| hispanic |
5371900 |
0.12 |
| asian |
3140842 |
0.07 |
| black |
3055700 |
0.07 |
| native |
182635 |
0.00 |
FHA Loans
stargazer(hmda[typeofloan==2,..vars],type="text",summary.stat = c("N","mean","sd","p25","median","p75"))
##
## ======================================================================
## Statistic N Mean St. Dev. Pctl(25) Median Pctl(75)
## ----------------------------------------------------------------------
## amountofloan 13,804,879 176.134 117.800 113 156 218
## applicantincome 13,804,879 64.726 58.762 40 56 79
## approved 13,804,879 0.530 0.499 0 1 1
## sold 7,320,170 0.929 0.256 1.000 1.000 1.000
## nonwhite 13,804,879 0.270 0.444 0 0 1
## asofdate 13,804,879 2,011.284 3.605 2,009 2,011 2,014
## hispanic 13,804,879 0.184 0.388 0 0 0
## black 13,804,879 0.125 0.331 0 0 0
## ----------------------------------------------------------------------
FHA Loans - Race Distrubution
library(knitr)
racedist <- hmda[typeofloan==2,.N,by=racecat]
racedist[,frac:=N/sum(N)]
kable(racedist,digits = 2)
| white |
7775513 |
0.56 |
| na |
1319509 |
0.10 |
| hispanic |
2541756 |
0.18 |
| black |
1692617 |
0.12 |
| asian |
419495 |
0.03 |
| native |
55989 |
0.00 |
Regressions
Main Result
r <- list()
r[[1]] <- felm(approved~msinc13+msinc46+log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[actiontaken<=3 & typeofloan==1])
r[[2]] <- felm(approved~msinc13+msinc46+log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[actiontaken<=3 & typeofloan==2])
r[[3]] <- felm(approved~msinc13*lowincome+msinc46*lowincome+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[typeofloan==1 & actiontaken<=3])
r[[4]] <- felm(approved~msinc13*lowincome+msinc46*lowincome+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[typeofloan==2 & actiontaken<=3])
r[[5]] <- felm(approved~msinc13*factor(race)+msinc46*factor(race)+log(applicantincome)+log(amountofloan)|bank_msa+asofdate,data=hmda[typeofloan==1 & actiontaken<=3])
r[[6]] <- felm(approved~msinc13*factor(race)+msinc46*factor(race)+log(applicantincome)+log(amountofloan)|bank_msa+asofdate,data=hmda[typeofloan==2 & actiontaken<=3])
r[[7]] <- felm(approved~msinc13*jumbo+msinc46*jumbo+log(applicantincome)+log(amountofloan)+factor(race)|bank_msa+asofdate,data=hmda[actiontaken<=3 & typeofloan==1])
.printtable(r,column.labels = c("Conventional","FHA","Conventional","FHA","Conventional","FHA"),lines = list(c("Fixed Effects",rep("MSA*Bank, Yr",6))))
##
## =====================================================================================================================
## Dependent variable:
## ----------------------------------------------------------------------------------------
## Conventional FHA Conventional FHA Conventional FHA
## (1) (2) (3) (4) (5) (6) (7)
## ---------------------------------------------------------------------------------------------------------------------
## msinc13 0.651*** -0.541*** 0.674*** -0.280*** 0.588*** -0.325*** 0.659***
## (0.013) (0.018) (0.015) (0.024) (0.016) (0.022) (0.014)
## lowincome -0.032*** -0.025***
## (0.0002) (0.0003)
## jumbo -0.057***
## (0.0003)
## msinc46 1.149*** -0.685*** 1.604*** -0.251*** 1.238*** -0.404*** 0.986***
## (0.021) (0.042) (0.025) (0.058) (0.024) (0.047) (0.022)
## log(applicantincome) 0.035*** 0.070*** 0.035*** 0.070*** 0.041***
## (0.0001) (0.0003) (0.0001) (0.0003) (0.0001)
## log(amountofloan) -0.002*** 0.004*** 0.005*** 0.043*** -0.002*** 0.004*** 0.006***
## (0.0001) (0.0004) (0.0001) (0.0004) (0.0001) (0.0004) (0.0001)
## msinc13:factor(race)black 0.063 -0.549***
## (0.048) (0.041)
## msinc13:factor(race)hispanic -0.400*** -0.645***
## (0.037) (0.035)
## msinc13:factor(race)other 0.303*** -0.095***
## (0.024) (0.034)
## factor(race)black:msinc46 -1.369*** -0.588***
## (0.088) (0.081)
## factor(race)hispanic:msinc46 -1.798*** -0.886***
## (0.081) (0.088)
## factor(race)other:msinc46 0.286*** -0.567***
## (0.049) (0.082)
## factor(race)black -0.100*** -0.075*** -0.102*** -0.079*** -0.099*** -0.074*** -0.099***
## (0.0003) (0.0004) (0.0003) (0.0004) (0.0003) (0.0004) (0.0003)
## factor(race)hispanic -0.053*** -0.039*** -0.055*** -0.046*** -0.052*** -0.038*** -0.053***
## (0.0002) (0.0004) (0.0002) (0.0004) (0.0002) (0.0004) (0.0002)
## factor(race)other -0.053*** -0.054*** -0.053*** -0.057*** -0.053*** -0.054*** -0.052***
## (0.0002) (0.0004) (0.0002) (0.0004) (0.0002) (0.0004) (0.0002)
## msinc13:lowincome -0.123*** -0.430***
## (0.021) (0.026)
## lowincome:msinc46 -1.258*** -0.638***
## (0.038) (0.058)
## msinc13:jumbo -0.187***
## (0.031)
## jumbo:msinc46 1.776***
## (0.056)
## ---------------------------------------------------------------------------------------------------------------------
## 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 33,570,940
## Adjusted R2 0.161 0.109 0.160 0.106 0.161 0.109 0.162
## =====================================================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##