aboutsummaryrefslogtreecommitdiffstats
path: root/R/loan_universe.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/loan_universe.R')
-rw-r--r--R/loan_universe.R70
1 files changed, 70 insertions, 0 deletions
diff --git a/R/loan_universe.R b/R/loan_universe.R
new file mode 100644
index 00000000..821022a3
--- /dev/null
+++ b/R/loan_universe.R
@@ -0,0 +1,70 @@
+source("cds_utils.R")
+source("cds_functions_generic.R")
+source("index_definitions.R")
+source("tranche_functions.R")
+source("yieldcurve.R")
+source("etdb.R")
+library(ggplot2)
+
+##source("optimization.R")
+MarkitData <- getMarkitIRData()
+L1m <- buildMarkitYC(MarkitData, dt = 1/12)
+L2m <- buildMarkitYC(MarkitData, dt = 1/6)
+L3m <- buildMarkitYC(MarkitData)
+L6m <- buildMarkitYC(MarkitData, dt = 1/2)
+setEvaluationDate(as.Date(MarkitData$effectiveasof))
+
+library(RQuantLib)
+loan.data <- dbGetQuery(dbCon, "select * from latest_markit_prices where lower(facility) in (select distinct lower(facility) as lf from latest_markit_prices where lower(facility) like 'tl%') order by maturity")
+flatshape <- splinefun(c(0,20),rep(1,2))
+loan.data.clean <- loan.data[loan.data$depth>=10,]
+loan.data.clean <- loan.data.clean[loan.data.clean$latestdate==as.Date("2012-09-11"),]
+loan.data.clean <- loan.data.clean[-(1:4),]
+SC.universe <- c()
+Rvec <- c()
+maturityvec <- as.Date(character(0))
+indexvec <- c()
+w1 <- c()
+w2 <- c()
+for(i in 1:nrow(loan.data.clean)){
+ if(i%%10==0){
+ cat(i, sep="\n")
+ }
+ collateral <- loan.data.clean[i,]
+ collateral$frequency <- "Q"
+ collateral$fixedorfloat <- "FLOAT"
+ collateral$grosscoupon <- 0
+ collateral$spread <- collateral$spread/100
+ collateral$price <- (collateral$bid+collateral$offer)/2
+ if(is.na(collateral$spread)){
+ next
+ }
+ ## negative hazard rate
+ if(collateral$price-100-
+ (yearFrac(today(), collateral$maturity) * collateral$spread)>=0){
+ next
+ }
+ if(collateral$price<=50){
+ next
+ }
+ recov <- min(collateral$price/100-0.2, 0.6)
+ sc <- bondhazardrate.shaped(collateral, flatshape, recov)
+ if(sc@h<=0){
+ next
+ }
+ SC.universe <- c(SC.universe, sc)
+ Rvec <- c(Rvec, recov)
+ maturityvec <- c(maturityvec, collateral$maturity)
+ indexvec <- c(indexvec, i)
+ w1 <- c(w1, collateral$amount)
+ w2 <- c(w2, collateral$amount * collateral$price/100)
+}
+
+hvec <- sapply(SC.universe, attr, "h")
+spreads <- hvec*(1-Rvec)
+T <- yearFrac(today(), maturityvec)
+test <- loess(spreads~T)
+
+loan.data2 <- loan.data.clean[!is.na(loan.data.clean$stm),]
+maturities <- yearFrac(today(),loan.data2$maturity)
+test2 <- loess(loan.data2$stm~maturities)