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.R57
1 files changed, 31 insertions, 26 deletions
diff --git a/R/load_cf.R b/R/load_cf.R
index 2bdc4ea0..9d0d4f94 100644
--- a/R/load_cf.R
+++ b/R/load_cf.R
@@ -55,15 +55,17 @@ if(length(args)>=2){
dealnames <- tolower(dealnames)
}
-processzipfiles <- function(){
+processzipfiles <- function(workdate=Sys.Date()){
+ pricesdir <- file.path(root.dir, "Scenarios", paste0("Prices_", workdate))
zipfiles <- file.path(pricesdir, list.files(pricesdir, "*.zip"))
- zipfiles <- zipfiles[order[file.info(zipfiles)$ctime]]
+ zipfiles <- zipfiles[order(file.info(zipfiles)$ctime)]
colnames <- paste0("column",1:20)
- result <- data.frame()
- r <- list()
- for(zip in zipfiles){
+ tb <- list()
+ for(n in seq_along(zipfiles)){
+ zip <- zipfiles[n]
+ r <- list()
for(i in 1:100){
- conn <- unz(file.path(pricesdir, zipfiles), filename=sprintf("CF-Scen%s.txt", i))
+ conn <- unz(zip, filename=sprintf("CF-Scen%s.txt", i))
data <- read.table(conn, sep="\t", header=F, colClasses="character", col.names=colnames,
comment.char="", fill=TRUE, stringsAsFactors=F)
newcolnames <- data[1,]
@@ -79,17 +81,18 @@ processzipfiles <- function(){
Scenario=i)
r[[paste0("Scen",i)]] <- cleandata
}
- tb <- rbindlist(r)
- tb <- tb[Dealname!="TOTAL"]
- setkey(Dealname)
- }
- if(tb[,Dealname]){
-
+ r <- rbindlist(r)
+ r <- r[Dealname!="TOTAL"]
+ if(n==1){
+ tb <- r
+ }else{
+ tb <- rbind(tb, r)
+ }
}
- setkey(tb, "Dealname", "Scenario")
return(tb)
}
+
getdealcf2 <- function(tb){
uniqdealnames <- unique(tb[,Dealname])
uniqdealnames <- uniqdealnames[uniqdealnames!="TOTAL"]
@@ -104,7 +107,8 @@ getdealcf2 <- function(tb){
df <- data.table(Date=c(pastdates, futuredates),
Discounts=c(rep(1, length(pastdates)), DC$discounts))
- setkey(df, "Date")
+ setkey(df, Date)
+ setkey(tb, Date)
data <- tb[df][, list(Cashflow=sum(Discounts * Cashflow),
Principal=sum(Discounts * Principal),
Interest=sum(Discounts * Interest)), by="Dealname,Scenario"]
@@ -113,21 +117,22 @@ getdealcf2 <- function(tb){
dealname.split <- unlist(strsplit(dealname, ","))
dealname.short <- tolower(dealname.split[1])
tranche <- dealname.split[2]
- cfdata[[dealname.short]] <- list()
- sqlstring <- sprintf("select marketvalue from latest_deal_model_numbers where dealname='%s'",
- dealname.short)
- mv <- dbGetQuery(dbCon, sqlstring)$marketvalue
- cfdata[[dealname.short]]$mv <- mv
- sqlstring <- sprintf(paste0("select \"Curr Collat Bal\", \"Reinv End Date\" from ",
- "latest_clo_universe where dealname='%s'"), dealname)
- sqldata <- dbGetQuery(dbCon, sqlstring)
- cfdata[[dealname.short]]$currbal <- sqldata$"Curr Collat Bal"
+ if(is.null(cfdata[[dealname.short]])){
+ sqlstring <- sprintf("select marketvalue from latest_deal_model_numbers where dealname='%s'",
+ dealname.short)
+ mv <- dbGetQuery(dbCon, sqlstring)$marketvalue
+ sqlstring <- sprintf(paste0("select \"Curr Collat Bal\", \"Reinv End Date\" from ",
+ "latest_clo_universe where dealname='%s'"), dealname.short)
+ currbal <- dbGetQuery(dbCon, sqlstring)$"Curr Collat Bal"
+ cfdata[[dealname.short]] <- list(currbal = currbal,
+ mv = mv)
+ }
+ cfdata[[dealname.short]][[tranche]] <- data[dealname]
}
- dealnames <- unique(tolower(unlist(lapply(strsplit(dealnames, ","), function(x){x[1]}))))
- for(dealname in dealnames){
+ for(dealname in names(cfdata)){
cf <- rep(0, n.scenarios)
for(name in grep("COLLAT", names(cfdata[[dealname]]), value=TRUE)){
- cf <- cf + cfdata[[dealname]][[name]][,"Cashflow"]
+ cf <- cf + cfdata[[dealname]][[name]][,Cashflow]
}
cfdata[[dealname]]$wapbasis <- (mean(cf)- cfdata[[dealname]]$mv)/cfdata[[dealname]]$mv
program <- KLfit(t(cf)/1e8, rep(1/n.scenarios, n.scenarios),