diff options
Diffstat (limited to 'R')
| -rw-r--r-- | R/load_cf.R | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/R/load_cf.R b/R/load_cf.R index a8500225..b12cff46 100644 --- a/R/load_cf.R +++ b/R/load_cf.R @@ -170,7 +170,8 @@ getcusipcf <- function(cusips, cfdata, dist, workdate=Sys.Date()){ fields <- c("Cashflow", "Principal", "Interest")
for(i in 1:length(cusips)){
cusip <- cusips[i]
- dealdata <- getdealdata(dealnames[i])
+ dealname <- dealnames[i]
+ dealdata <- getdealdata(dealname)
schedule <- getdealschedule(dealdata)
r <- matrix(0, n.scenarios, 5)
colnames(r) <- c(fields, "wal", "duration")
@@ -245,17 +246,14 @@ getcusipcf <- function(cusips, cfdata, dist, workdate=Sys.Date()){ cusipdata[[cusip]] <- NULL
flag <- FALSE
}else{
- cusipdata[[cusip]]$fields <- r
- cusipdata[[cusip]]$price <- 100 * crossprod(cfdata[[dealnames[i]]]$weight,
- cusipdata[[cusip]]$fields[,"Cashflow"])/cusipdata[[cusip]]$currbal
- cusipdata[[cusip]]$wal <- crossprod(cfdata[[dealnames[i]]]$weight,
- cusipdata[[cusip]]$fields[,"wal"])
- cusipdata[[cusip]]$duration <- crossprod(cfdata[[dealnames[i]]]$weight,
- cusipdata[[cusip]]$fields[,"duration"])
- cusipdata[[cusip]]$delta <-
- compute.delta(dist, cfdata[[dealnames[i]]]$weight,
- cusipdata[[cusip]]$fields[,"Cashflow"]/cusipdata[[cusip]]$currbal,
- workdate)
+ val <- crossprod(cfdata[[dealname]]$weight, r[,c("Cashflow", "wal", "duration")])
+ cusipdata[[cusip]] <- c(cusipdata[[cusip]],
+ fields = r,
+ price = 100 * val[,"Cashflow"]/cusipdata[[cusip]]$currbal,
+ wal = val[,"wal"],
+ duration = val[,"duration"],
+ delta = compute.delta(dist, cfdata[[dealnames]]$weight,
+ r[,"Cashflow"]/cusipdata[[cusip]]$currbal, workdate))
cat("done", cusip, "\n")
}
}
|
