aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/load_cf.R39
1 files changed, 10 insertions, 29 deletions
diff --git a/R/load_cf.R b/R/load_cf.R
index 51e47b70..d4c4c699 100644
--- a/R/load_cf.R
+++ b/R/load_cf.R
@@ -167,7 +167,6 @@ getdealcf2 <- function(tb){
getdealcf <- function(dealnames, workdate=Sys.Date()){
cfdata <- list()
fields <- c("Cashflow", "Principal", "Interest")
- flag <- FALSE
n.scenarios <- 100
for(dealname in dealnames){
sqlstring <- sprintf("select marketvalue from latest_deal_model_numbers where dealname='%s'", dealname)
@@ -204,34 +203,17 @@ getdealcf <- function(dealnames, workdate=Sys.Date()){
colnames(r) <- fields
for(i in 1:n.scenarios){
filename <- paste0(paste(toupper(dealname), tranche, "CF", paste0("Scen", i), sep="-"), ".txt")
- ## we catch the error if there is an error reading the file
- ## happen if the tranche is missing in intex
- data <- tryCatch(
- read.table(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename),
- sep="\t", header=F, skip=3, colClasses="character", comment.char=""),
- error = function(e) e)
- if(inherits(data, "error")){
- cat(sprintf("file: %s, tranche: %s can't be loaded", dealname, tranche), "\n")
- flag <- TRUE
- break
- }
- data <- data.table(Date= as.Date(data[,1], "%b %d, %Y"),
- data.frame(lapply(data[,2:4], function(x)sanitize.column(x))), key="Date")
- setnames(data, c("Date", fields))
+ data <- fread(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename),
+ sep="\t", colClasses="character")
+ data <- data[-c(1,2),]
+ data[,Date:=as.Date(Date, "%b %d, %Y")]
+ data <- data.table(Date=data[,Date], data[,lapply(.SD, sanitize.column),.SDcols=2:4],key="Date")
r[i,] <- as.numeric(data[df][,list(sum(Cashflow*Discounts),
sum(Principal*Discounts),
sum(Interest*Discounts))])
}
- if(flag){
- break
- }
cfdata[[dealname]][[tranche]]<- r
}
- if(flag){
- cfdata[[dealname]] <- NULL
- flag <- FALSE
- next
- }
cf <- rep(0,n.scenarios)
for(tranche in tranches){
cf <- cf+cfdata[[dealname]][[tranche]][,"Cashflow"]
@@ -249,7 +231,6 @@ getdealcf <- function(dealnames, workdate=Sys.Date()){
}
getcusipcf <- function(cusips, cfdata, dist, workdate=Sys.Date()){
- flag <- FALSE
cusipdata <- list()
dealnames <- dealnamefromcusip(cusips)
n.scenarios <- 100
@@ -277,11 +258,11 @@ getcusipcf <- function(cusips, cfdata, dist, workdate=Sys.Date()){
if(!file.exists(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename))){
next
}
- data <- read.table(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename),
- sep = "\t", header=F, colClasses="character", skip = 3, comment.char="")
- data <- data.table(Date=as.Date(data[,1], "%b %d, %Y"),
- apply(data[,2:6], 2, function(x)sanitize.column(x)), key="Date")
- setnames(data, c("Date", intexfields))
+ data <- fread(file.path(root.dir, "Scenarios", paste0("Prices_", workdate), filename),
+ sep="\t", header=TRUE, colClasses="character")
+ data <- data[-c(1,2),]
+ data <- data[,Date:=as.Date(Date, "%b %d, %Y")]
+ data <- data.table(Date=data[,Date],data[,lapply(.SD,sanitize.column),.SDcols=2:6],key="Date")
data[,Balance:=max(Balance-`Accum Interest Shortfall`, 0), by=1:nrow(data)]
r[j,] <- as.numeric(df[data,roll=TRUE][,list(Cashflow=temp <- sum(Cashflow*Discounts),
Principal=sum(Principal*Discounts),