diff options
Diffstat (limited to 'R/zerorecovery_index.R')
| -rw-r--r-- | R/zerorecovery_index.R | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/R/zerorecovery_index.R b/R/zerorecovery_index.R new file mode 100644 index 00000000..a7694d79 --- /dev/null +++ b/R/zerorecovery_index.R @@ -0,0 +1,54 @@ +code.dir <- Sys.getenv("CODE_DIR") +source(file.path(code.dir, "R", "yieldcurve.R")) +source(file.path(code.dir, "R", "optimization.R")) +source(file.path(code.dir, "R", "calibration.R"), chdir=TRUE) +source(file.path(code.dir, "R", "serenitasdb.R")) +source(file.path(code.dir, "R", "creditIndex.R")) +source(file.path(code.dir, "R", "tranche_functions.R")) + +##HY +tradedate <- as.Date("2017-03-31") +exportYC(tradedate, "USD") +index <- creditIndex("HY28", "5yr") +index <- set.index.desc(index, tradedate) +index <- set.singlenamesdata(index, tradedate) +index$cs <- couponSchedule(IMMDate(tradedate, noadj=TRUE), index$maturity, "Q", "FIXED", 1, + 0, tradedate, IMMDate(tradedate, "prev")) +index$quotes <- data.frame(maturity=as.Date("2022-06-20"), spread=0.05, price=1.0716) +tweak <- tweakcurves(index) +zerorecov.portfolio <- lapply(tweak$portfolio, function(x){x@recovery=0;return(x)}) + +cs <- index$cs +startdate <- tradedate + 1 +pl.list <- vapply(zerorecov.portfolio, function(x) { + pl <- defaultleg(cs, x@curve, x@recovery, startdate, TRUE) + if(is.na(pl)) { + logerror(paste("couldn't compute single name protection leg for", x@issuer)) + return( NA ) + } + return( pl ) +}, numeric(1)) + + +##ITRX +tradedate <- as.Date("2017-03-31") +exportYC(tradedate, "EUR") +index <- creditIndex("XO27", "5yr") +index <- set.index.desc(index, tradedate) +index <- set.singlenamesdata(index, tradedate) +index$cs <- couponSchedule(IMMDate(tradedate, noadj=TRUE), index$maturity, "Q", "FIXED", 1, + 0, tradedate, IMMDate(tradedate, "prev")) +index$quotes <- data.frame(maturity=as.Date("2022-06-20"), spread=0.05, price=1.0968) +tweak <- tweakcurves(index) +zerorecov.portfolio <- lapply(tweak$portfolio, function(x){x@recovery=0;return(x)}) + +cs <- index$cs +startdate <- tradedate + 1 +pl.list <- vapply(zerorecov.portfolio, function(x) { + pl <- defaultleg(cs, x@curve, x@recovery, startdate, TRUE) + if(is.na(pl)) { + logerror(paste("couldn't compute single name protection leg for", x@issuer)) + return( NA ) + } + return( pl ) +}, numeric(1)) |
