diff options
Diffstat (limited to 'R/load_cf.R')
| -rw-r--r-- | R/load_cf.R | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/R/load_cf.R b/R/load_cf.R index 0b5e7b55..6805327e 100644 --- a/R/load_cf.R +++ b/R/load_cf.R @@ -175,10 +175,11 @@ getdealcf <- function(dealnames, workdate=Sys.Date()){ sqlstring <- sprintf("select marketvalue from latest_deal_model_numbers where dealname='%s'", dealname)
mv <- dbGetQuery(dbCon, sqlstring)$marketvalue
sqlstring <- sprintf(paste0("select \"Curr Collat Bal\", \"Reinv End Date\", ",
- "maturity from ",
+ "\"Deal Next Pay Date\" , maturity from ",
"historical_clo_universe('%s', '%s')"), dealname, workdate)
sqldata <- dbGetQuery(dbCon, sqlstring)
- alldates <- rev(seq.Date(from=sqldata$maturity, to=workdate-90, by="-1 month"))
+ prevpaydate <- basic.advance(sqldata$"Deal Next Pay Date", -3, "month")
+ alldates <- seq.Date(from=prevpaydate, sqldata$maturity, by="1 month")
T <- ifelse(alldates>=L3m$params$tradeDate, yearFrac(L3m$params$tradeDate, alldates), 0)
DC <- DiscountCurve(L3m$params, L3m$tsQuotes, T)
@@ -211,29 +212,31 @@ getdealcf <- function(dealnames, workdate=Sys.Date()){ flag <- TRUE
break
}
- data <- data.table(Date= as.Date(data[,1], "%b %d, %Y"),
- apply(data[,2:4], 2, function(x)sanitize.column(x)), key="Date")
+ if(nrow(data)==1){
+ data <- data.table(Date= as.Date(data[,1], "%b %d, %Y"),
+ t(apply(data[,2:4], 2, function(x)sanitize.column(x))), key="Date")
+ }else{
+ data <- data.table(Date= as.Date(data[,1], "%b %d, %Y"),
+ apply(data[,2:4], 2, function(x)sanitize.column(x)), key="Date")
+ }
setnames(data, c("Date", fields))
r[i,] <- as.numeric(data[df][,list(sum(Cashflow*Discounts),
sum(Principal*Discounts),
sum(Interest*Discounts))])
}
if(flag){
- cfdata[[dealname]] <- NULL
- flag <- FALSE
break
- }else{
- cfdata[[dealname]][[tranche]]<- r
}
+ cfdata[[dealname]][[tranche]]<- r
}
- if(is.null(cfdata[[dealname]])){
+ if(flag){
+ cfdata[[dealname]] <- NULL
+ flag <- FALSE
next
}
- if(length(tranches)==2){
- cf <- cfdata[[dealname]][[tranches[1]]][,"Cashflow"] +
- cfdata[[dealname]][[tranches[2]]][,"Cashflow"]
- }else{
- cf <- cfdata[[dealname]][[tranches]][,"Cashflow"]
+ cf <- rep(0,n.scenarios)
+ for(tranche in tranches){
+ cf <- cf+cfdata[[dealname]][[tranche]][,"Cashflow"]
}
cfdata[[dealname]]$wapbasis <- (mean(cf)- cfdata[[dealname]]$mv)/cfdata[[dealname]]$mv
program <- KLfit(t(cf)/1e8, rep(1/n.scenarios, n.scenarios),
|
