diff options
Diffstat (limited to 'R/intex_deal_functions.R')
| -rw-r--r-- | R/intex_deal_functions.R | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R index 91a4960a..83fa66e6 100644 --- a/R/intex_deal_functions.R +++ b/R/intex_deal_functions.R @@ -237,13 +237,25 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate if(is.na(line.item$price)){
## TODO
}
- return( list(SC=SC, notional=line.item$currentbalance, price = line.item$price) )
+ if(line.item$maturity>=startdate){
+ cs <- couponSchedule(line.item$nextpaydate, line.item$maturity,
+ line.item$frequency, line.item$fixedorfloat,
+ line.item$grosscoupon*0.01, line.item$spread*0.01)
+ csflat <- couponSchedule(line.item$nextpaydate, line.item$maturity,
+ line.item$frequency, "FLOAT", 0, 0)
+ notional.at.risk <- line.item$currentbalance *(1+sum(cs$coupons-csflat$coupons))
+ }else{
+ notional.at.risk <- line.item$currentbalance
+ }
+ return( list(SC=SC, notional=line.item$currentbalance, notionalatrisk = notional.at.risk,
+ price = line.item$price) )
}
buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, startdate = Sys.Date()) {
collatdata <- getcollateral(dealname, startdate)
index <- hash(cusipdata$cusip, 1:length(cusipdata$cusip))
notionalvec <- c()
+ lossnotionalvec <- c()
SCvec <- c()
betavec <- c()
pricevec <- c()
@@ -281,13 +293,14 @@ buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, star }
temp <- buildSC(line.item, dealdata$"Reinv End Date", dealdata$maturity, global.params, startdate)
notionalvec <- c(notionalvec, temp$notional)
+ lossnotionalvec <- c(lossnotionalvec, temp$notionalatrisk)
SCvec <- c(SCvec, temp$SC)
pricevec <- c(pricevec, temp$price)
betavec <- c(betavec, if(!is.na(line.item$iscdo) && line.item$iscdo) 1 else
global.params$defaultcorr)
}
return( list(notional=notionalvec, SC=SCvec, beta=betavec, price = pricevec,
- cdopercentage = cdonotional/totalnotional,
+ lossnotional=lossnotionalvec, cdopercentage = cdonotional/totalnotional,
stale = missingpricenotional/totalnotional, collatbalance = totalnotional) )
}
|
