diff options
| -rw-r--r-- | build_SC.R | 39 |
1 files changed, 24 insertions, 15 deletions
@@ -1,7 +1,7 @@ library("RQuantLib")
library("parallel")
root = "//WDSENTINEL/share/CorpCDOs"
-source(file.path(root,"R","intex_deals_functions.R"))
+source(file.path(root, "R", "intex_deals_functions.R"))
MarkitData <- getMarkitIRData()
L1m <- buildMarkitYC(MarkitData, dt = 1/12)
@@ -9,7 +9,9 @@ L2m <- buildMarkitYC(MarkitData, dt = 1/6) L3m <- buildMarkitYC(MarkitData)
L6m <- buildMarkitYC(MarkitData, dt = 1/2)
setEvaluationDate(as.Date(MarkitData$effectiveasof))
-
+today <- function(){
+ return(as.Date(MarkitData$effectiveasof))
+}
bps <- 1e-4
global.params <- list()
@@ -36,22 +38,28 @@ global.params$alpha <- 0.25 global.params$beta <- 15
global.params$shape <- function(T)0.25+(1-exp(-T/5))
-dealnames <- c("stonln1", "babs072", "symph4", "flags5", "cent11", "wasatl", "oceant2", "acacl071", "limes")
-calibration <- read.table(file.path(root, "Scenarios", paste0("calibration-",Sys.Date(),".csv")),
+## dealnames <- c("stonln1", "babs072", "symph4", "flags5", "cent11", "wasatl", "oceant2", "acacl071", "limes")
+dealnames <- c("acacl071", "limes")
+calibration.date <- "2012-11-08"
+calibration <- read.table(file.path(root, "Scenarios", paste0("calibration-",calibration.date,".csv")),
sep=",", header=T)
-attach(calibration)
+Z <- calibration$Z
+w <- calibration$w
+
rho <- 0.45
Ngrid <- 201
+cl <- makeCluster(6)
+clusterExport(cl, list("shockprob", "lossdistC.prepay.joint", "lossrecovdist.joint.term", "lossdistC.joint"))
+support <- seq(0, 1, length=Ngrid)
for(deal.name in dealnames){
deal.portfolio <- buildSC.portfolio(deal.name, global.params)
deal.data <- getdealdata(deal.name)
- A <- SPmatrix2(deal.portfolio$SC, stonln1.data, freq="1 month")
+ A <- SPmatrix2(deal.portfolio$SC, deal.data, freq="3 months")
S <- 1 - sapply(deal.portfolio$SC, attr, "recov")
deal.weights <- deal.portfolio$notional/sum(deal.portfolio$notional)
-
+ clusterExport(cl, list("deal.weights"))
deal.dates <- getdealschedule(deal.data)
- support <- seq(0, 1, length=Ngrid)
## compute reinvestment price
reinvloanprice <- rep(0, length(deal.dates))
reinvmezzprice <- rep(0, length(deal.dates))
@@ -68,12 +76,11 @@ for(deal.name in dealnames){ dpmod <- MFupdate.prob(Z, w, rho, dp)
ppmod <- MFupdate.prob(-Z, w, rho, pp)
- cl <- makeCluster(4)
- clusterExport(cl, list("shockprob", "rho", "Z", "issuerweights", "lossdistC.prepay.joint",
- "lossrecovdist.joint.term", "lossdistC.joint", "Ngrid"))
- dist <- MFlossrecovdist.prepay(w, Z, rho, dp, dpmod, pp, ppmod, issuerweights, 1-S, Ngrid, TRUE)
+ ## dist <- MFlossrecovdist.prepay(w, Z, rho, dp, dpmod, pp, ppmod, deal.weights, 1-S, Ngrid, TRUE)
dist.joint <- MFlossdist.prepay.joint(cl, w, Z, rho, dp, dpmod,
- pp, ppmod, issuerweights, 1-S, Ngrid=201, FALSE, n.chunks=10)
+ pp, ppmod, deal.weights, 1-S, Ngrid, FALSE, n.chunks=4)
+ clusterCall(cl, gc)
+ gc()
## if don't want to use cluster (use less memory)
## dist.joint <- MFlossdist.prepay.joint(NULL, w, Z, rho, dp, dpmod,
## pp, ppmod, issuerweights, 1-S, Ngrid=201, FALSE)
@@ -120,11 +127,13 @@ for(deal.name in dealnames){ ## linear approximation for monthly scenarios
deal.datesmonthly <- getdealschedule(deal.data, "1 month")
cdrmonthly <- matrix(0, n.scenarios, length(deal.datesmonthly))
+ recoverymonthly <- matrix(0, n.scenarios, length(deal.datesmonthly))
for(i in 1:n.scenarios){
cdrmonthly[i,] <- approx(deal.dates, cdr[i,], deal.datesmonthly, rule=2)$y
recoverymonthly[i,] <- approx(deal.dates, intexrecov[i,], deal.datesmonthly, rule=2)$y
}
- write.table(cdrmonthly, file=file.path(root, "scenarios", paste0(deal.name,"-cdr.csv")), row.names=F, col.names=F, sep=",")
- write.table(recoverymonthly * 100, file=file.path(root, "scenarios", paste0(deal.name,"-recovery.csv")), row.names=F, col.names=F, sep=",")
+ write.table(cdrmonthly, file=file.path(root, "Scenarios", paste0(deal.name,"-cdr.csv")), row.names=F, col.names=F, sep=",")
+ write.table(recoverymonthly * 100, file=file.path(root, "Scenarios", paste0(deal.name,"-recovery.csv")), row.names=F, col.names=F, sep=",")
+ cat("generated scenarios for:", deal.name, "\n")
}
|
