diff options
| -rw-r--r-- | R/build_portfolios.R | 8 | ||||
| -rw-r--r-- | R/intex_deal_functions.R | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/R/build_portfolios.R b/R/build_portfolios.R index a365e8e4..f7da2e25 100644 --- a/R/build_portfolios.R +++ b/R/build_portfolios.R @@ -56,6 +56,10 @@ for(i in seq_along(dealnames)){ }
deal.portfolio <- buildSC.portfolio(deal.name, deal.data, cusipdata, global.params, workdate)
##deal.portfolio$SC <- tweakportfolio(deal.portfolio$SC, -cashspread.discount, multiplicative=FALSE)
+ mv <- crossprod(deal.portfolio$notional, deal.portfolio$price)/100
+ nullcurves <- unlist(lapply(deal.portfolio$SC, is.null))
+ deal.portfolio$SC <- deal.portfolio$SC[!nullcurves]
+ deal.portfolio$notional <- deal.portfolio$notional[!nullcurves]
A <- SPmatrix2(deal.portfolio$SC, deal.data, freq="3 months", workdate)
S <- 1 - sapply(deal.portfolio$SC, attr, "recov")
deal.weights <- deal.portfolio$notional/sum(deal.portfolio$notional)
@@ -79,7 +83,7 @@ for(i in seq_along(dealnames)){ deal.spreadatmaturity,
deal.portfolio$cdopercentage,
deal.portfolio$stale,
- crossprod(deal.portfolio$notional, deal.portfolio$price)/100,
+ mv,
deal.name,
as.Date(workdate))
dbSendQuery(dbCon, sqlstring)
@@ -92,7 +96,7 @@ for(i in seq_along(dealnames)){ deal.portfolio$cdopercentage,
deal.portfolio$stale,
deal.spread5y,
- crossprod(deal.portfolio$notional, deal.portfolio$price)/100,
+ mv,
workdate,
deal.spreadatmaturity
)
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R index 6f37efea..524ca36e 100644 --- a/R/intex_deal_functions.R +++ b/R/intex_deal_functions.R @@ -209,7 +209,10 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate line.item$nextpaydate <- SC@startdate
## automatic reinvest
SC<- stackcurve(SC, line.item, global.params, SC@startdate)
+ }else{
+ SC <- NULL
}
+
}else if(line.item$maturity <= startdate){#matured asset
SC <- buildSC.matured(SC, line.item, reinvdate, dealmaturity, global.params, startdate)
if(is.na(line.item$price))line.item$price <- 100
@@ -233,7 +236,7 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate SC@curve <- try
}
}
- if(!is.na(reinvdate) && creditcurve.maturity(SC) <= reinvdate){
+ if(!is.na(reinvdate) && !is.null(SC) && creditcurve.maturity(SC) <= reinvdate){
## if reinvdate is missing, assume no reinvestment
## otherwise reinvest
newstartdate <- line.item$maturity
|
