rm(list=ls())
library(RPostgres)
library(data.table)
library(getPass)
library(lfe)
library(stargazer)
library(ggplot2)
library(fst)
library(stringr)
library(stringi)
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/OO_NP/",full.names = TRUE))
hmda = lapply(files, read_fst, as.data.table = TRUE,
columns=c("asofdate","respondentid","agencycode","amountofloan","actiontaken","state","countycode","applicantrace1","applicantincome","typeofpurchaser","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","state"):=list(NULL)]
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2025053 108.2 5877782 314.0 4286779 229.0
## Vcells 1636271483 12483.8 4966256264 37889.6 4805073061 36659.8
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"),c("2-0000852218","1-0000023160","2-0000043557","1-22-1092200"),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.",2010)
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
Bank of America’s Acquisition of Countrywide in 2009
i=2
# 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[,.(tot_loans=.N,pred_share=mean(pred),suc_share=mean(suc)),by=.(cbsa)]
cw <- cw[!is.na(cbsa)]
cw[,joint_share:=pred_share+suc_share]
MSA Level Market Share Pre-Acquisition
Countrywide
ggplot(cw) +
geom_density(aes(x=pred_share))+theme_minimal()

Bank of America
ggplot(cw) +
geom_density(aes(x=suc_share))+theme_minimal()

Bank of America + Countrywide
ggplot(cw) +
geom_density(aes(x=joint_share))+theme_minimal()

cwreg <- merge(hmda[asofdate %in% 2003:2018],cw,by="cbsa")
cwreg[,approved:=ifelse(actiontaken=="1",1,0)]
cwreg[,sold:=ifelse(approved==1 & typeofpurchaser!="0",1,ifelse(approved==1,0,NA))]
cwreg[,suc:=ifelse(lender %in% c("1-0000013044","9-0000480228"),1,0)]
Approval Rate Change in High Market Share MSAs
Bank of America
\[ Approved = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + log(income) + log(loanamount) + MSA FE + YR FE\]
r <- felm(approved~pred_share*factor(asofdate) + log(1+applicantincome) + log(1+amountofloan) | cbsa+asofdate|0|cbsa,data=cwreg[asofdate %in% 2003:2018 & suc==1 ])
.coef_plot_1reg_line(r,"pred_share:factor(asofdate)",2003)

rm(r)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2178531 116.4 5877782 314.0 5305262 283.4
## Vcells 3275140867 24987.4 4966256264 37889.6 4950379174 37768.4
Other Lenders
\[ Approved = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + log(income) + log(loanamount) + MSA FE + YR FE\]
r <- felm(approved~pred_share*factor(asofdate) + log(1+applicantincome) + log(1+amountofloan)| cbsa+asofdate|0|cbsa,data=cwreg[asofdate %in% 2003:2018 & suc==0 ])
.coef_plot_1reg_line(r,"pred_share:factor(asofdate)",2003)

rm(r)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2179760 116.5 5877782 314.0 5305262 283.4
## Vcells 6218442927 47443.0 11799245250 90021.1 11321705758 86377.8
Securitization Change in High Market Share MSAs
Bank of America
\[ Securitized = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + log(income) + log(loanamount) + MSA FE + YR FE\]
r <- felm(sold~pred_share*factor(asofdate) + log(1+applicantincome) + log(1+amountofloan)| cbsa+asofdate|0|cbsa,data=cwreg[asofdate %in% 2003:2018 & suc==1 ])
.coef_plot_1reg_line(r,"pred_share:factor(asofdate)",2003)

rm(r)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2179822 116.5 5877782 314.0 5305262 283.4
## Vcells 3204730130 24450.2 9439396200 72016.9 11321705758 86377.8
Other Lenders
\[ Securitized = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + log(income) + log(loanamount) + MSA FE + YR FE\]
r <- felm(sold~pred_share*factor(asofdate) + log(1+applicantincome) + log(1+amountofloan)| cbsa+asofdate|0|cbsa,data=cwreg[asofdate %in% 2003:2018 & suc==0 ])
.coef_plot_1reg_line(r,"pred_share:factor(asofdate)",2003)

rm(r)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2179833 116.5 5877782 314.0 5305262 283.4
## Vcells 4948259218 37752.3 9439396200 72016.9 11321705758 86377.8
Interest Rate Change in High Market Share MSAs
\[ log(Interest Rate) = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + FICO + LTV + log(loanamount) + MSA FE + YR FE\]
## Freddie
acq <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Freddie/Acq",full.names = TRUE)
acq = lapply(acq, 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"))
acq <- do.call(rbind , acq)
acq <- acq[orig_loan_term==360 & prop_type=="SF"]
acq[,yr:=year(dt_first_pi)]
acq[,msa:=cd_msa]
acq[,c("orig_loan_term","dt_first_pi","prop_type","cd_msa"):=list(NULL)]
cwreg <- merge(acq,cw,by.x=c("msa"),by.y=c("cbsa"))
cwreg[,bofa:=ifelse(seller_name =="BANK OF AMERICA, N.A.",1,0)]
cwreg[,wells:=ifelse(seller_name=="WELLS FARGO BANK, N.A.",1,0)]
r <- felm(log(int_rt)~pred_share*factor(yr)+ltv+dti+fico+log(orig_upb)| msa+yr|0|msa,data=cwreg[yr %in% 2005:2018 & bofa==1])
freddie_bofa_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2005)
r <- felm(log(int_rt)~pred_share*factor(yr)+ltv+dti+fico+log(orig_upb)| msa+yr|0|msa,data=cwreg[yr %in% 2005:2018 & bofa==0])
freddie_other_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2005)
## Fannie
acq <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Fannie/Acq",full.names = TRUE)
acq = lapply(acq, 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"))
acq <- do.call(rbind , acq)
acq <- acq[original_loan_term==360 & property_type=="SF"]
acq[,yr:=year(origination_date)]
acq[,original_loan_term:=list(NULL)]
cwreg <- merge(acq,cw,by.x=c("msa"),by.y=c("cbsa"))
cwreg[,bofa:=ifelse(seller_name =="BANK OF AMERICA, N.A.",1,0)]
cwreg[,wells:=ifelse(seller_name=="WELLS FARGO BANK, N.A.",1,0)]
r <- felm(log(original_interest_rate)~pred_share*factor(yr)+original_ltv+original_dti+credit_score+log(original_upb) | msa+yr|0|msa,data=cwreg[yr %in% 2003:2018 & bofa==0])
fannie_other_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2003)
r <- felm(log(original_interest_rate)~pred_share*factor(yr)+original_ltv+original_dti+credit_score+log(original_upb) | msa+yr|0|msa,data=cwreg[yr %in% 2003:2018 & bofa==1])
fannie_bofa_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2003)
Bank of America
Freddie Loans
print(freddie_bofa_ir)

Fannie Loans
print(fannie_bofa_ir)

Other Lenders
Freddie Loans
print(freddie_other_ir)

Fannie Loans
print(fannie_other_ir)

Wells Fargo’s Acquisition of Wachovia in 2010
i=4
# 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[,.(tot_loans=.N,pred_share=mean(pred),suc_share=mean(suc)),by=.(cbsa)]
cw <- cw[!is.na(cbsa)]
cw[,joint_share:=pred_share+suc_share]
MSA-Level Market Share Pre-Acquisition
Wachovia
ggplot(cw) +
geom_density(aes(x=pred_share))+theme_minimal()

Wells Fargo
ggplot(cw) +
geom_density(aes(x=suc_share))+theme_minimal()

Wachovia + Wells Fargo
ggplot(cw) +
geom_density(aes(x=joint_share))+theme_minimal()

cwreg <- merge(hmda[asofdate %in% 2003:2018],cw,by="cbsa")
cwreg[,approved:=ifelse(actiontaken=="1",1,0)]
cwreg[,sold:=ifelse(approved==1 & typeofpurchaser!="0",1,ifelse(approved==1,0,NA))]
cwreg[,suc:=ifelse(lender %in% suc_hmda_id,1,0)]
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2171171 116.0 37849180 2021.4 35782638 1911.0
## Vcells 4193756777 31995.9 9439396200 72016.9 11321705758 86377.8
Approval Rate Change in High Market Share MSAs
Wells Fargo
\[ Approved = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + log(income) + log(loanamount) + MSA FE + YR FE\]
r <- felm(approved~pred_share*factor(asofdate) + log(1+applicantincome) + log(1+amountofloan) | cbsa+asofdate|0|cbsa,data=cwreg[asofdate %in% 2003:2018 & suc==1 ])
.coef_plot_1reg_line(r,"pred_share:factor(asofdate)",2003)

rm(r)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2189837 117.0 30279344 1617.1 35782638 1911.0
## Vcells 4569052247 34859.2 9439396200 72016.9 11321705758 86377.8
Other Lenders
\[ Approved = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + log(income) + log(loanamount) + MSA FE + YR FE\]
r <- felm(approved~pred_share*factor(asofdate) + log(1+applicantincome) + log(1+amountofloan)| cbsa+asofdate|0|cbsa,data=cwreg[asofdate %in% 2003:2018 & suc==0 ])
.coef_plot_1reg_line(r,"pred_share:factor(asofdate)",2003)

rm(r)
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2189838 117.0 19378781 1035.0 35782638 1911.0
## Vcells 7100644112 54173.7 11360227982 86671.7 11346775438 86569.1
Interest Rate Change in High Market Share MSAs
\[ log(Interest Rate) = \Sigma_{yr} \beta_{yr} \times CWShare \times I(yr) + FICO + LTV + log(loanamount) + MSA FE + YR FE\]
## Freddie
acq <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Freddie/Acq",full.names = TRUE)
acq = lapply(acq, 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"))
acq <- do.call(rbind , acq)
acq <- acq[orig_loan_term==360 & prop_type=="SF"]
acq[,yr:=year(dt_first_pi)]
acq[,msa:=cd_msa]
acq[,c("orig_loan_term","dt_first_pi","prop_type","cd_msa"):=list(NULL)]
cwreg <- merge(acq,cw,by.x=c("msa"),by.y=c("cbsa"))
cwreg[,bofa:=ifelse(seller_name =="BANK OF AMERICA, N.A.",1,0)]
cwreg[,wells:=ifelse(seller_name=="WELLS FARGO BANK, N.A.",1,0)]
r <- felm(log(int_rt)~pred_share*factor(yr)+ltv+dti+fico+log(orig_upb)| msa+yr|0|msa,data=cwreg[yr %in% 2005:2018 & wells==1])
freddie_bofa_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2005)
r <- felm(log(int_rt)~pred_share*factor(yr)+ltv+dti+fico+log(orig_upb)| msa+yr|0|msa,data=cwreg[yr %in% 2005:2018 & wells==0])
freddie_other_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2005)
## Fannie
acq <- list.files(pattern="*.fst",path = "C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/Fannie/Acq",full.names = TRUE)
acq = lapply(acq, 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"))
acq <- do.call(rbind , acq)
acq <- acq[original_loan_term==360 & property_type=="SF"]
acq[,yr:=year(origination_date)]
acq[,original_loan_term:=list(NULL)]
cwreg <- merge(acq,cw,by.x=c("msa"),by.y=c("cbsa"))
cwreg[,bofa:=ifelse(seller_name =="BANK OF AMERICA, N.A.",1,0)]
cwreg[,wells:=ifelse(seller_name=="WELLS FARGO BANK, N.A.",1,0)]
r <- felm(log(original_interest_rate)~pred_share*factor(yr)+original_ltv+original_dti+credit_score+log(original_upb) | msa+yr|0|msa,data=cwreg[yr %in% 2004:2018 & wells==0])
fannie_other_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2004)
r <- felm(log(original_interest_rate)~pred_share*factor(yr)+original_ltv+original_dti+credit_score+log(original_upb) | msa+yr|0|msa,data=cwreg[yr %in% 2004:2018 & wells==1])
fannie_bofa_ir <- .coef_plot_1reg_line(r,"pred_share:factor(yr)",2004)
Wells Fargo
Freddie Loans
print(freddie_bofa_ir)

Fannie Loans
print(fannie_bofa_ir)

Other Lenders
Freddie Loans
print(freddie_other_ir)

Fannie Loans
print(fannie_other_ir)
