diff options
Diffstat (limited to 'R/intex_deal_functions.R')
| -rw-r--r-- | R/intex_deal_functions.R | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R index 91ebe60e..086b2dcc 100644 --- a/R/intex_deal_functions.R +++ b/R/intex_deal_functions.R @@ -65,7 +65,7 @@ dealnamefromcusip <- function(cusips){ cusipsfromdealnames <- function(dealnames){
sqlstring <-
sprintf("select unnest(\"Deal Cusip List\") from clo_universe where dealname in ('%s')",
- paste(dealnames, collapse="','"))
+ paste(dealnames, collapse="','"))
return( dbGetQuery(dbCon, sqlstring)$unnest )
}
@@ -172,10 +172,10 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate ## cat(line.item$issuername, "\n")
if(!is.na(line.item$iscdo) && line.item$iscdo && is.na(line.item$price)){
##we have prices for some cdos e.g. 210795PS3
- if(length(line.item$orig.moody)==0){
+ if(length(line.item$orig_moody)==0){
line.item$orig.moody <- "NR"
}
- line.item$price <- as.numeric(global.params$cdoprices[line.item$orig.moody])
+ line.item$price <- as.numeric(global.params$cdoprices[gsub("\\d", "", line.item$orig_moody)])
}
##build survival curve
SC <- new("creditcurve", recovery=recovery(line.item), startdate=startdate,
@@ -197,6 +197,10 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate SC <- buildSC.matured(SC, line.item, reinvdate, dealmaturity, global.params, startdate)
}else if(is.na(line.item$price)){ #missing price
SC <- stackcurve(SC, line.item, global.params, SC@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)
+ line.item$price <- bondpv(cs, SC@curve, recovery(line.item)) * 100
}else{ #normal case
if(!is.na(line.item$assettype) && line.item$assettype=="Bond"){ #no prepay rate
alpha <- 0
@@ -259,7 +263,7 @@ buildSC.portfolio <- function(dealname, dealdata, cusipdata, global.params, star 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) )
+ return( list(notional=notionalvec, SC=SCvec, beta=betavec, price = pricevec) )
}
cdrfromscenarios <- function(scenarios, dates){
|
