diff options
Diffstat (limited to 'build_SC.R')
| -rw-r--r-- | build_SC.R | 28 |
1 files changed, 18 insertions, 10 deletions
@@ -5,6 +5,7 @@ setwd(root) source(file.path(root, "yieldCurve.R"))
source(file.path(root, "cds_functions_generic.R"))
source(file.path(root, "etdb.R"))
+source(file.path(root, "tranche_functions.R"))
load(file.path(root, "bloomberg_data.RData"))
MarkitData <- getMarkitIRData()
L1m <- buildMarkitYC(MarkitData, dt = 1/12)
@@ -162,12 +163,12 @@ stackcurve <- function(SC, line.item, global.params, startdate){ buildSC.matured <- function(SC, line.item, reinvdate, dealmaturity, global.params, startdate){
if(startdate<=reinvdate){ #reinvest
- line.item$maturity <- min(dealdata$maturity, startdate + global.params$rollingmaturity)
- SC <- stackcurve(SC, line.item, global.params,)
+ line.item$maturity <- min(dealmaturity, startdate + global.params$rollingmaturity)
+ SC <- stackcurve(SC, line.item, global.params, startdate)
}else{ #no reinvestment
- SC@dates <- startdate
- SC@hazardrates <- 0
- SC@prepayrates <- 0
+ SC@curve@dates <- startdate
+ SC@curve@hazardrates <- 0
+ SC@curveprepayrates <- 0
}
return( SC )
}
@@ -194,7 +195,7 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate line.item$currentbalance <- line.item$currentbalance * recovery(line.item)
}
SC@startdate <- startdate + global.params$defaultedlag
- line.item$maturity <- min(dealdata$maturity, SC@startdate + global.params$rollingmaturity)
+ line.item$maturity <- min(dealmaturity, SC@startdate + global.params$rollingmaturity)
## automatic reinvest
SC<- stackcurve(SC, line.item, global.params, SC@startdate)
}else if(line.item$maturity<=startdate){#matured asset
@@ -212,12 +213,12 @@ buildSC <- function(line.item, reinvdate, dealmaturity, global.params, startdate if(is.null(try)){
SC <- stackcurve(SC, line.item, global.params, SC@startdate)
}else{
- SC <- try
+ SC@curve <- try
}
}
if(maturity(SC) <= reinvdate){ #we reinvest
newstartdate <- line.item$maturity
- line.item$maturity <- min(dealdata$maturity, newstartdate + global.params$rollingmaturity)
+ line.item$maturity <- min(dealmaturity, newstartdate + global.params$rollingmaturity)
SC <- stackcurve(SC, line.item, global.params, newstartdate)
}
return( list(SC=SC, notional=line.item$currentbalance) )
@@ -230,7 +231,6 @@ buildSC.portfolio <- function(dealname, global.params, startdate=today()) { SCvec <- c()
betavec <- c()
for(i in 1:nrow(collatdata)){
- ## cat(i, "\n")
line.item <- collatdata[i,]
if( is.na(line.item$maturity) ){
stop("empty maturity")
@@ -329,4 +329,12 @@ k <- function(h, gamma = 15){ 0.25*exp(-gamma * h)
}
-test <- buildSC.portfolio("stonln1", global.params)
+stonln1.portfolio <- buildSC.portfolio("stonln1", global.params)
+A <- SPmatrix2(stonln1.portfolio$SC, getdealdata("stonln1"))
+S <- 1 - sapply(stonln1.portfolio$SC, attr, "recov")
+w <- stonln1.portfolio$notional/sum(stonln1.portfolio$notional) * S
+w <- w * length(w)
+lu <- 0.01
+test <- lossrecovdist(A$DP[,39], A$PP[,39], w, lu, useC=FALSE)
+
+pomme2 <- lossdistrib3(A$DP[,39], w/length(w), lu)
|
