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/OO_NP/",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","state"):=list(NULL)]
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 2107255 112.6 6006708 320.8 4369062 233.4
## Vcells 731035415 5577.4 2825878252 21559.8 2903913972 22155.2
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.",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
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
#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(9,"National City - PNC Bank 2007",
c("1-0000000786"),
c("1-0000001316","2-0000083311"),
2004,c("PNC BANK, N.A."),2007)
mergers[[9]] <- temp
temp <- list(10,"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[[10]] <- temp
cbsa_bnk <- NULL
for(i in c(1:10)) {
# 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]
cw[,bank:=acname]
cw[,acyr:=acyr]
cbsa_bnk <- rbind(cbsa_bnk,cw)
}
setorder(cbsa_bnk,cbsa,bank,-pred_share)
cbsa_bnk_pre2006 <- cbsa_bnk[acyr<2005]
cbsa_bnk <- cbsa_bnk[!duplicated(cbsa_bnk[,c("cbsa","bank")])]
cbsa_bnk_pre2006 <- cbsa_bnk_pre2006[!duplicated(cbsa_bnk_pre2006[,c("cbsa","bank")])]
cbsa_share <- cbsa_bnk
setorder(cbsa_share,cbsa,-pred_share)
cbsa_share_pre2006 <- cbsa_share[acyr<2005]
cbsa_share <- cbsa_share[!duplicated(cbsa_bnk[,c("cbsa")])]
cbsa_share_pre2006 <- cbsa_share_pre2006[!duplicated(cbsa_share_pre2006[,c("cbsa")])]
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)]
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)]
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)]
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 18398386 982.6 60490015 3230.6 29201710 1559.6
## Vcells 1315577872 10037.1 2825878252 21559.8 2903913972 22155.2
mcdash <- read_fst("C:/Users/dratnadiwakara2/Documents/OneDrive - Louisiana State University/Raw Data/mcdash/originationdata.fst",columns=c("loantypeid","producttypeid","interesttypeid","closingmonth","originalinterestrate","originalterm","originalloanamount","originalcreditscore","dtihousingratio","isjumbo","originalltv","cbsa_metrodivid"),as.data.table = T)
mcdash <- mcdash[originalterm==360 & interesttypeid==1 ]
mcdash[,int_rt:=originalinterestrate*100]
mcdash[,dti:=dtihousingratio]
mcdash[,ltv:=originalltv]
mcdash[,fico:=originalcreditscore]
mcdash[,orig_upb:= originalloanamount+1]
mcdash[,msa:=cbsa_metrodivid]
mcdash[,loanyr:=as.Date("1979-12-01") %m+% months(closingmonth)]
mcdash[,loanyr:=year(loanyr)]
mcdash[,c("originalinterestrate","dtihousingratio","originalltv","originalcreditscore","originalloanamount","cbsa_metrodivid"):=list(NULL)]
gc()
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 18400466 982.7 60490015 3230.6 29201710 1559.6
## Vcells 2212852991 16882.8 6278013646 47897.5 6278013646 47897.5
\[ interest rate = inmerge_1 + inmerger_2+fico+ltv+dti+log(loanamount) +BANKEFE+ MSA FE + YR 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("seller_name","msa"),by.y=c("bank","cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample[,inmerge1:=ifelse(yrsinceacq %in% 1:3 & pred_share>0.05 & suc_share>0.005,1,0)]
regsample[,inmerge2:=ifelse(yrsinceacq %in% 4:6 & pred_share>0.05 & suc_share>0.005,1,0)]
regsample <- regsample[yrsinceacq<=6 | is.na(yrsinceacq)]
r <- list()
r[[1]] <- felm(int_rt~inmerge1+inmerge2+fico+ltv+dti+log(orig_upb)|msa+loanyr+seller_name|0|msa,data=regsample)
regsample <- merge(fannie,cbsa_bnk,by.x=c("seller_name","msa"),by.y=c("bank","cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample[,inmerge1:=ifelse(yrsinceacq %in% 1:3 & pred_share>0.05 & suc_share>0.005,1,0)]
regsample[,inmerge2:=ifelse(yrsinceacq %in% 4:6 & pred_share>0.05 & suc_share>0.005,1,0)]
regsample <- regsample[yrsinceacq<=6 | is.na(yrsinceacq)]
r[[2]] <- felm(int_rt~inmerge1+inmerge2+fico+ltv+dti+log(orig_upb)|msa+loanyr+seller_name|0|msa,data=regsample)
regsample <- merge(moodys,cbsa_bnk_pre2006,by.x=c("seller_name","msa"),by.y=c("bank","cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample[,inmerge1:=ifelse(yrsinceacq %in% 1:3 & pred_share>0.05 & suc_share>0.005,1,0)]
regsample[,inmerge2:=ifelse(yrsinceacq %in% 4:6 & pred_share>0.05 & suc_share>0.005,1,0)]
regsample <- regsample[yrsinceacq<=6 | is.na(yrsinceacq)]
r[[3]] <- felm(int_rt~inmerge1+inmerge2+fico+ltv+dti+log(orig_upb)|msa+loanyr+seller_name|0|msa,data=regsample)
.printtable(r,column.labels = c("Freddie Loans","Fannie Loans","Moody's Loans"),lines = list(c("Fixed Effects","MSA, Yr, Bank","MSA, Yr, Bank","MSA, Yr, Bank")))
##
## =======================================================
## Dependent variable:
## -----------------------------------------
## Freddie Loans Fannie Loans Moody's Loans
## (1) (2) (3)
## -------------------------------------------------------
## inmerge1 0.070*** 0.042*** 0.601***
## (0.007) (0.010) (0.157)
## inmerge2 0.029*** 0.020
## (0.006) (0.020) (0.000)
## fico -0.00001*** -0.001*** -0.004***
## (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.00001) (0.0001) (0.000)
## log(orig_upb) -0.207*** -0.215*** -1.056***
## (0.006) (0.007) (0.017)
## -------------------------------------------------------
## Fixed Effects MSA, Yr, Bank MSA, Yr, Bank MSA, Yr, Bank
## Observations 13,526,720 17,305,755 3,915,639
## Adjusted R2 0.899 0.901 0.487
## =======================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
\[ interest rate = log(targetshare)*yrssinceacq+fico+ltv+dti+log(loanamount) +BANKEFE+ MSA FE + YR FE\]
regsample <- merge(freddie,cbsa_share,by.x=c("seller_name","msa"),by.y=c("bank","cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample <- regsample[!is.na(pred_share)]
r <- list()
r[[1]] <- felm(int_rt~log(pred_share)*factor(yrsinceacq)+fico+ltv+dti+log(orig_upb)|msa+loanyr+seller_name|0|msa,data=regsample[yrsinceacq>= -2 & yrsinceacq<=2])
regsample <- merge(fannie,cbsa_share,by.x=c("seller_name","msa"),by.y=c("bank","cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample <- regsample[!is.na(pred_share)]
r[[2]] <- felm(int_rt~log(pred_share)*factor(yrsinceacq)+fico+ltv+dti+log(orig_upb)|msa+loanyr+seller_name|0|msa,data=regsample[yrsinceacq>= -2 & yrsinceacq<=2])
.coef_plot_2reg_line(r[[1]],"Freddie",r[[2]],"Fannie","log(pred_share):factor(yrsinceacq)",-2)
\[ interest rate = log(targetshare)*yrssinceacq+fico+ltv+dti+log(loanamount) +BANKEFE+ MSA FE + YR FE\]
regsample <- merge(freddie,cbsa_share,by.x=c("msa"),by.y=c("cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample <- regsample[!is.na(pred_share)]
r <- list()
r[[1]] <- felm(int_rt~log(pred_share)*factor(yrsinceacq)+fico+ltv+dti+log(orig_upb)|msa+loanyr+seller_name|0|msa,data=regsample[yrsinceacq>= -4 & yrsinceacq<=6 & seller_name != bank ])
regsample <- merge(fannie,cbsa_share,by.x=c("msa"),by.y=c("cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample <- regsample[!is.na(pred_share)]
r[[2]] <- felm(int_rt~log(pred_share)*factor(yrsinceacq)+fico+ltv+dti+log(orig_upb)|msa+loanyr+seller_name|0|msa,data=regsample[yrsinceacq>= -4 & yrsinceacq<=6 & seller_name != bank ])
regsample <- merge(moodys,cbsa_share,by.x=c("msa"),by.y=c("cbsa"),all.x=T)
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
regsample <- regsample[!is.na(pred_share)]
r[[3]] <- felm(int_rt~log(pred_share)*factor(yrsinceacq)+fico+ltv+log(orig_upb)|msa+loanyr+documentationtype|0|msa,data=regsample[yrsinceacq>= -4 & yrsinceacq<=4])
regsample <- merge(mcdash,cbsa_share,by.x=c("msa"),by.y=c("cbsa"),all.x=T)
regsample <- regsample[!is.na(pred_share)]
regsample[,yrsinceacq:=loanyr-acyr]
regsample[,pred_share:=pred_share+0.00001]
r[[4]] <- felm(int_rt~log(pred_share)*factor(yrsinceacq)+fico+ltv+log(orig_upb)|msa+loanyr+isjumbo|0|msa,data=regsample[yrsinceacq>= -4 & yrsinceacq<=6])
.coef_plot_2reg_line(r[[1]],"Freddie",r[[2]],"Fannie","log(pred_share):factor(yrsinceacq)",-4)
.coef_plot_1reg_line(r[[3]],"log(pred_share):factor(yrsinceacq)",-4)
.coef_plot_1reg_line(r[[4]],"log(pred_share):factor(yrsinceacq)",-4)