aboutsummaryrefslogtreecommitdiffstats
path: root/R/load_cf.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/load_cf.R')
-rw-r--r--R/load_cf.R44
1 files changed, 28 insertions, 16 deletions
diff --git a/R/load_cf.R b/R/load_cf.R
index a0603a8a..5ec0d788 100644
--- a/R/load_cf.R
+++ b/R/load_cf.R
@@ -8,10 +8,9 @@ if(.Platform$OS.type == "unix"){
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", "utils.R"))
source(file.path(root.dir, "code", "R", "cds_utils.R"))
-workdate <- as.Date("2013-01-24")
+workdate <- as.Date("2013-01-30")
MarkitData <- getMarkitIRData(as.Date(workdate))
L1m <- buildMarkitYC(MarkitData, dt = 1/12)
@@ -91,12 +90,17 @@ 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
+ r <- matrix(0, n.scenarios, 3)
+ colnames(r) <- fields
+ sqlstring <- sprintf("select curr_balance, spread from cusip_universe where cusip = '%s'", cusip)
+ indicdata <- dbGetQuery(dbCon, sqlstring)
+ cusipdata[[cusip]]$currbal <- indicdata$curr_balance
+ cusipdata[[cusip]]$spread <- indicdata$spread
for(i in 1:n.scenarios){
filename <- sprintf("%s-CF-Scen%s.txt", cusip, i)
+ if(length(list.files(file.path(root.dir, "Scenarios", paste0("Prices_", workdate)), filename))==0){
+ next
+ }
data <- read.table(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename),
sep = "\t", header=T)
data <- data[-(1:2), 1:4]
@@ -108,24 +112,32 @@ for(cusip in cusips){
}
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
+ pv <- c()
+ for(field in fields){
+ data[,field] <- sanitize.column(data[,field])
+ pv <- c(pv, crossprod(DC$discounts, data[,field]))
+ }
+ r[i,] <- pv
+ }
+ if(flag){
+ cusipsdata[[cusip]] <- NULL
+ flag <- FALSE
+ break
+ }else{
+ for(field in fields){
+ cusipdata[[cusip]][[field]] <- r[,field]
}
}
}
prices <- c()
+duration <- c()
for(cusip in names(cusipdata)){
prices <- c(prices, mean(cusipdata[[cusip]]$Cashflow)/cusipdata[[cusip]]$currbal)
+ duration <- c(duration, mean(cusipdata[[cusip]]$Interest)/
+ (cusipdata[[cusip]]$currbal*cusipdata[[cusip]]$spread))
}
+
i <- 1
for(cusip in names(cusipdata)){
cat(cusip, prices[i], "\n")