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

1 Interest Increase by the Acquiring Bank Relative to Other Lenders

\[ 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
## 

2 Absolute Interest Increase by the Acquiring Bank

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

3 Absolute Interest Increase by the other lenders

\[ interest rate = log(targetshare)*yrssinceacq+fico+ltv+dti+log(loanamount) +BANKEFE+ MSA FE + YR FE\]

3.1 Freddie and Fannie

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)

3.2 Moody’s Data (Privately Securitized)

.coef_plot_1reg_line(r[[3]],"log(pred_share):factor(yrsinceacq)",-4)

3.3 Black Knight Data (Portfolio Loans)

.coef_plot_1reg_line(r[[4]],"log(pred_share):factor(yrsinceacq)",-4)