diff options
Diffstat (limited to 'R/load_cf.R')
| -rw-r--r-- | R/load_cf.R | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/R/load_cf.R b/R/load_cf.R index 96234e7a..1d17c9a6 100644 --- a/R/load_cf.R +++ b/R/load_cf.R @@ -10,9 +10,9 @@ source(file.path(root.dir, "code", "R", "etdb.R")) source(file.path(root.dir, "code", "R", "yieldcurve.R"))
source(file.path(root.dir, "code", "R", "cds_utils.R"))
-workdate <- as.Date("2013-01-30")
+workdate <- as.Date("2013-02-07")
-MarkitData <- getMarkitIRData(as.Date(workdate))
+MarkitData <- getMarkitIRData(workdate)
L1m <- buildMarkitYC(MarkitData, dt = 1/12)
L2m <- buildMarkitYC(MarkitData, dt = 1/6)
L3m <- buildMarkitYC(MarkitData)
@@ -32,13 +32,20 @@ sanitize.column <- function(vec){ 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("Prices_", workdate)), "*COLLAT_INITIAL-CF-Scen1*")
dealnames <- sapply(strsplit(dealnames, "-"), function(x) x[1])
dealnames <- tolower(unique(dealnames))
flag <- FALSE
-
-for(dealname in dealnames){
+dealnames <- c("ares11", "cifc071", "cifc122", "comst", "duanst1", "empf2",
+ "galax8", "gulf052", "halcli1", "hals071", "hewett3", "hewett6",
+ "hillmf", "ingim2", "ingim3", "katon10", "katonah8", "katonah9",
+ "landmrk6", "landmrk8", "latcl3", "madpk6", "mayp", "mtwil2",
+ "oakcp3", "oceant1", "pacific3", "primus2", "sappv1", "saratg_1",
+ "shack1", "standay", "sumlk", "t2if1", "vent12", "vent7", "vent9",
+ "wthrs3")
+cfdata <- list()
+for(dealname in dealnames[11:38]){
cfdata[[dealname]] <- list()
r <- matrix(0, n.scenarios, 3)
colnames(r) <- fields
@@ -52,24 +59,34 @@ for(dealname in dealnames){ for(i in 1:n.scenarios){
filename <- paste0(paste(toupper(dealname), tranche, "CF", paste0("Scen", i), sep="-"), ".txt")
data <- read.table(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename),
- sep="\t", header=T, skip =3, colClasses="character", comment.char="")
- colnames(data) <- c("Date", "Cashflow", "Principal", "Interest")
+ sep="\t", header=F, skip =3, colClasses="character", comment.char="")
data <- data[,1:4]
colnames(data) <- c("Date", "Cashflow", "Principal", "Interest")
data$Date <- as.Date(data$Date, "%b %d, %Y")
if(any(is.na(data$Date))){
- sprintf("file: %s is messed up", filename)
+ cat(sprintf("file: %s is messed up", filename), "\n")
flag <- TRUE
break
}
- data <- data[data$Date >= Sys.Date(),]
- if(i==1){
- DC <- DiscountCurve(L3m$params, L3m$tsQuotes, yearFrac(L3m$params$tradeDate, data$Date))
+ futuredates <- data$Date[data$Date>=workdate]
+ pastdates <- data$Date[data$Date<workdate]
+ if(i==1||length(futuredates)>length(DC$times)){
+ DC <- DiscountCurve(L3m$params, L3m$tsQuotes, yearFrac(L3m$params$tradeDate, futuredates))
}
pv <- c()
for(field in fields){
- data[,field] <- sanitize.column(data[,field])
- pv <- c(pv, crossprod(DC$discounts[1:length(data$Date)], data[,field]))
+ data[,field] <- tryCatch(sanitize.column(data[,field]),
+ warning = function(w){cat("garbled", dealname, i)})
+ if(length(futuredates) == 0){
+ df <- rep(1, length(pastdates))
+ }else{
+ df <- c(rep(1, length(pastdates)), DC$discounts[1:length(futuredates)])
+ }
+ if(nrow(data)>0){
+ pv <- c(pv, crossprod(df, data[,field]))
+ }else{
+ pv <- c(pv, 0)
+ }
}
r[i,] <- pv
}
|
