aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/build_SC.R19
-rw-r--r--R/intex_deal_functions.R12
2 files changed, 22 insertions, 9 deletions
diff --git a/R/build_SC.R b/R/build_SC.R
index 9807b2de..681afc63 100644
--- a/R/build_SC.R
+++ b/R/build_SC.R
@@ -39,14 +39,15 @@ global.params$rollingmaturity <- 7 * 365
global.params$defaultedlag <- 90
global.params$defaultcorr <- 0.4
global.params$defaultbondhazardrate <- 500 * bps
-global.params$defaultloanhazardrate <- 400 * bps
+global.params$defaultloanhazardrate <- 500 * bps
global.params$alpha <- 0.25
global.params$beta <- 15
global.params$shape <- function(T)0.25+(1-exp(-T/5))
-
dealnames <- listdealnames()
+dealnames <- c("abcl071", "ammcclo5", "atr4cdo", "atr5cdo", "blumt3", "callid6", "goldl5", "limes", "oceant2", "symph4")
+
cusipdata <- cusip.data()
do <- function(deal.name){
deal.data <- getdealdata(deal.name)
@@ -59,17 +60,25 @@ do <- function(deal.name){
deal.weights <- deal.portfolio$notional/sum(deal.portfolio$notional)
deal.dates <- getdealschedule(deal.data)
deal.spread <- portfoliospread(deal.portfolio, hy19$maturity)
+ save.dir <- file.path(root.dir, "Scenarios", paste("Portfolios", Sys.Date(), sep="_"))
+ if(!file.exists(save.dir)){
+ dir.create(save.dir)
+ }
save(deal.portfolio, A, S, deal.weights, deal.dates, deal.spread,
- file=file.path(root.dir, "Scenarios", "Portfolios", paste0(deal.name, ".RData")))
+ file=file.path(save.dir, paste0(deal.name, ".RData")))
cat(deal.name, "... done\n")
}
+load.portfolio <- function(dealname){
+ load(file.path(root.dir, "Scenarios", paste("Portfolios", Sys.Date(), sep="_"), paste0(dealname, ".RData")), .GlobalEnv)
+}
+
## build portfolio data
for(deal.name in dealnames){
do(deal.name)
}
-calibration.date <- "2012-12-11"
+calibration.date <- "2013-01-04"
calibration <- read.table(file.path(root.dir, "Scenarios", paste0("calibration-", calibration.date,".csv")),
sep=",", header=T)
Z <- calibration$Z
@@ -82,7 +91,7 @@ clusterExport(cl, list("root.dir", "shockprob", "lossdistC.prepay.joint", "lossr
support <- seq(0, 1, length=Ngrid)
useCluster <- TRUE
-for(deal.name in c("oceant2", "atr4cdo")){
+for(deal.name in dealnames){
load(file.path(root.dir, "Scenarios", "Portfolios", paste(deal.name, "RData", sep=".")))
dp <- A$DP
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){