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))