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)