aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/build_SC.R73
1 files changed, 44 insertions, 29 deletions
diff --git a/R/build_SC.R b/R/build_SC.R
index 2a2d07b4..6f9ef4c1 100644
--- a/R/build_SC.R
+++ b/R/build_SC.R
@@ -28,31 +28,25 @@ global.params$recovery.assumptions <- list("Loan"=0.7,
"Credit Default Swap"=0)
global.params$cdoprices <- list("Aaa"=90,
- "Aa"=80,
- "A"=70,
- "Baa"=60,
- "Ba"=50,
- "B"=40,
- "NR"=40)
+ "Aa"=88,
+ "A"=80,
+ "Baa"=75,
+ "Ba"=70,
+ "B"=65,
+ "NR"=50)
#reinvest in 7 years assets
global.params$rollingmaturity <- 7 * 365
global.params$defaultedlag <- 90
-global.params$defaultcorr <- 0.4
-global.params$defaultbondhazardrate <- 1000 * bps
-global.params$defaultloanhazardrate <- 1000 * bps
+global.params$defaultcorr <- 0.45
+global.params$defaultbondhazardrate <- 1500 * bps
+global.params$defaultloanhazardrate <- 1500 * 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")
-calibration.date <- Sys.Date()
-r <- c()
-for(deal in dealnames){
- load.portfolio(deal)
- r <- rbind(r, c(sum(deal.portfolio$notional), crossprod(deal.portfolio$notional, deal.portfolio$price)/100))
-}
+calibration.date <- Sys.Date()
cusipdata <- cusip.data()
do <- function(deal.name){
deal.data <- getdealdata(deal.name)
@@ -74,11 +68,6 @@ do <- function(deal.name){
cat(deal.name, "... done\n")
}
-load.portfolio <- function(dealname){
- load(file.path(root.dir, "Scenarios", paste("Portfolios", calibration.date, sep="_"),
- paste0(dealname, ".RData")), .GlobalEnv)
-}
-
## build portfolio data
for(deal.name in dealnames){
do(deal.name)
@@ -97,7 +86,7 @@ clusterExport(cl, list("root.dir", "shockprob", "lossdistC.prepay.joint", "lossr
support <- seq(0, 1, length=Ngrid)
useCluster <- TRUE
-for(deal.name in dealnames[10]){
+for(deal.name in dealnames){
load(file.path(root.dir, "Scenarios", paste("Portfolios", calibration.date, sep="_"), paste(deal.name, "RData", sep=".")))
dp <- A$DP
@@ -158,30 +147,56 @@ for(deal.name in dealnames[10]){
deal.data <- getdealdata(deal.name)
deal.datesmonthly <- getdealschedule(deal.data, "1 month")
## compute reinvestment price
- reinvloanprice <- rep(0, length(deal.datesmonthly))
- reinvbondprice <- rep(0, length(deal.datesmonthly))
- for(i in 1:length(deal.datesmonthly)){
- reinvloanprice[i] <- forwardportfolioprice(deal.portfolio, deal.datesmonthly[i], global.params$rollingmaturity, "FLOAT", 0.025)
- reinvbondprice[i] <- forwardportfolioprice(deal.portfolio, deal.datesmonthly[i], global.params$rollingmaturity, "FIXED", 0.07)
- }
+ ## reinvloanprice <- rep(0, length(deal.datesmonthly))
+ ## reinvbondprice <- rep(0, length(deal.datesmonthly))
+ ## for(i in 1:length(deal.datesmonthly)){
+ ## reinvmaturity <- min(deal.datesmonthly[i]+global.params$rollingmaturity, deal.dates[length(deal.dates)])
+ ## if(deal.datesmonthly[i]>reinvmaturity-45){
+ ## reinvloanprice <- 1
+ ## reinvbondprice <- 1
+ ## }else{
+ ## reinvloanprice[i] <- forwardportfolioprice(deal.portfolio, deal.datesmonthly[i], reinvmaturity, "FLOAT", 0.025)
+ ## reinvbondprice[i] <- forwardportfolioprice(deal.portfolio, deal.datesmonthly[i], reinvmaturity, "FIXED", 0.07)
+ ## }
+
+ ## }
+ reinvloanprice <- 0.965
+ reinvbondprice <- 0.965
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
}
+
save.dir <- file.path(root.dir, "Scenarios", paste("Intex curves", calibration.date, sep="_"), "csv")
if(!file.exists(save.dir)){
dir.create(save.dir, recursive = T)
}
+ recoverymonthly <- pmin(recoverymonthly,1)
write.table(cdrmonthly,
file= file.path(save.dir, paste0(deal.name,"-cdr.csv")),
row.names=F, col.names=F, sep=",")
- write.table(recoverymonthly * 100,
+ write.table(100 * recoverymonthly,
file=file.path(save.dir, paste0(deal.name,"-recovery.csv")),
row.names=F, col.names=F, sep=",")
write.table(rbind(100*reinvloanprice, 100*reinvbondprice),
file = file.path(save.dir, paste0(deal.name,"-reinvprices.csv")),
row.names=F, col.names=F, sep=",")
+ save(scenariosd, scenariosr, file=file.path(save.dir, paste0(deal.name, ".RData")))
cat("generated scenarios for:", deal.name, "\n")
}
+
+
+generate_portfolio_helper <- function(cusips){
+ dealnames <- dealnamefromcusip(cusips)
+ r <- c()
+ s <- c()
+ for(i in 1:length(cusips)){
+ r <- c(r, paste(toupper(dealnames[i]), "COLLAT_INITIAL", sep=","),
+ paste(toupper(dealnames[i]), "COLLAT_REINVEST", sep=","))
+ r <- c(r, cusips[i])
+ s <- c(s, rep(paste0(dealnames[i], ".sss"), 3))
+ }
+ return( list(r, s) )
+}