aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/load_cf.R60
1 files changed, 56 insertions, 4 deletions
diff --git a/R/load_cf.R b/R/load_cf.R
index 30966c90..a0603a8a 100644
--- a/R/load_cf.R
+++ b/R/load_cf.R
@@ -1,10 +1,17 @@
+library(RPostgreSQL)
+library(RQuantLib)
if(.Platform$OS.type == "unix"){
root.dir <- "/home/share/CorpCDOs"
}else{
root.dir <- "//WDSENTINEL/share/CorpCDOs"
}
+
+source(file.path(root.dir, "code", "R", "etdb.R"))
source(file.path(root.dir, "code", "R", "yieldcurve.R"))
-workdate <- as.Date("2013-01-22")
+source(file.path(root.dir, "code", "R", "utils.R"))
+source(file.path(root.dir, "code", "R", "cds_utils.R"))
+
+workdate <- as.Date("2013-01-24")
MarkitData <- getMarkitIRData(as.Date(workdate))
L1m <- buildMarkitYC(MarkitData, dt = 1/12)
@@ -27,8 +34,9 @@ fields <- c("Cashflow", "Principal", "Interest")
tranches <- c("COLLAT_REINVEST", "COLLAT_INITIAL")
n.scenarios <- 100
cfdata <- list()
-dealnames <- list.files(file.path(root.dir, "Scenarios", paste0("Intex curves_", workdate), "csv"), "*.RData")
-dealnames <- sapply(strsplit(dealnames, "\\."), function(x) x[1])
+dealnames <- list.files(file.path(root.dir, "Scenarios", paste0("Prices_", workdate)), "*COLLAT_INITIAL-CF-Scen1*")
+dealnames <- sapply(strsplit(dealnames, "-"), function(x) x[1])
+dealnames <- tolower(unique(dealnames))
flag <- FALSE
for(dealname in dealnames){
@@ -53,7 +61,7 @@ for(dealname in dealnames){
flag <- TRUE
break
}
- data <- data[data$Date >= today(),]
+ data <- data[data$Date >= Sys.Date(),]
DC <- DiscountCurve(L3m$params, L3m$tsQuotes, yearFrac(L3m$params$tradeDate, data$Date))
pv <- c()
for(field in fields){
@@ -79,3 +87,47 @@ for(dealname in dealnames){
}
colnames(r) <- c("mv", "currbal", "Reinvest", "Initial")
rownames(r) <- dealnames
+
+flag <- FALSE
+cusipdata <- list()
+for(cusip in cusips){
+ r <- rep(0, n.scenarios)
+ sqlstring <- sprintf("select curr_balance from cusip_universe where cusip = '%s'", cusip)
+ curr_balance <- dbGetQuery(dbCon, sqlstring)$curr_balance
+ cusipdata[[cusip]]$currbal <- curr_balance
+ for(i in 1:n.scenarios){
+ filename <- sprintf("%s-CF-Scen%s.txt", cusip, i)
+ data <- read.table(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename),
+ sep = "\t", header=T)
+ data <- data[-(1:2), 1:4]
+ data$Date <- as.Date(data$Date, "%b %d, %Y")
+ if(any(is.na(data$Date))){
+ sprintf("file: %s is messed up", filename)
+ flag <- TRUE
+ break
+ }
+ data <- data[data$Date >= Sys.Date(),]
+ DC <- DiscountCurve(L3m$params, L3m$tsQuotes, yearFrac(L3m$params$tradeDate, data$Date))
+ data[,"Cashflow"] <- sanitize.column(data[,"Cashflow"])
+ pv <- crossprod(DC$discounts, data[, "Cashflow"])
+ r[i] <- pv
+
+ if(flag){
+ cusipsdata[[cusip]] <- NULL
+ flag <- FALSE
+ break
+ }else{
+ cusipdata[[cusip]]$Cashflow <- r
+ }
+ }
+}
+
+prices <- c()
+for(cusip in names(cusipdata)){
+ prices <- c(prices, mean(cusipdata[[cusip]]$Cashflow)/cusipdata[[cusip]]$currbal)
+}
+i <- 1
+for(cusip in names(cusipdata)){
+ cat(cusip, prices[i], "\n")
+ i <- i+1
+}