diff options
| -rw-r--r-- | R/cds_functions_generic.R | 7 | ||||
| -rw-r--r-- | R/script_calibrate_tranches.R | 15 |
2 files changed, 12 insertions, 10 deletions
diff --git a/R/cds_functions_generic.R b/R/cds_functions_generic.R index d4c6e916..0c8415e2 100644 --- a/R/cds_functions_generic.R +++ b/R/cds_functions_generic.R @@ -459,10 +459,10 @@ cdshazardrate.shaped <- function(upfront, running, maturity, shape, R=0.4) { return(sc)
}
-cdshazardrate <- function(quotes, R=0.4){
+cdshazardrate <- function(quotes, R=0.4, workdate=Sys.Date()){
## bootstrap the implied hazard rate curve of the cds based on the upfront
## and running quotes, as well as maturity and recovery
- previous.maturity <- Sys.Date()
+ previous.maturity <- workdate
hvec <- c()
previous.hvec <- c()
eps <- 1e-8
@@ -472,7 +472,7 @@ cdshazardrate <- function(quotes, R=0.4){ next
}
maturity <- quotes$maturity[i]
- cs <- couponSchedule(nextIMMDate(Sys.Date()), maturity, "Q", "FIXED", quotes$running[i])
+ cs <- couponSchedule(nextIMMDate(workdate), maturity, "Q", "FIXED", quotes$running[i])
new.h <- 0.05
flength <- nrow(cs) - nrow(previous.cs)
hvec <- c(previous.hvec, rep(new.h, flength))
@@ -769,4 +769,3 @@ creditcurve.maturity <- function(creditcurve){ stop("not of class creditcurve")
}
}
-
diff --git a/R/script_calibrate_tranches.R b/R/script_calibrate_tranches.R index 44e6fe1c..44b5c7b5 100644 --- a/R/script_calibrate_tranches.R +++ b/R/script_calibrate_tranches.R @@ -23,13 +23,16 @@ if(length(args) >= 1){ workdate <- Sys.Date()
}
+futurequotes <- read.csv(file.path(root.dir, "data", "Yield Curves",
+ sprintf("futures-%s.csv", workdate)), header=F)
#retrieve yield curve data
MarkitData <- getMarkitIRData(workdate)
-L1m <- buildMarkitYC(MarkitData, dt = 1/12)
-L2m <- buildMarkitYC(MarkitData, dt = 1/6)
-L3m <- buildMarkitYC(MarkitData)
-L6m <- buildMarkitYC(MarkitData, dt = 1/2)
+L1m <- buildMarkitYC(MarkitData, futurequotes[,2], dt = 1/12)
+L2m <- buildMarkitYC(MarkitData, futurequotes[,2], dt = 1/6)
+L3m <- buildMarkitYC(MarkitData, futurequotes[,2])
+L6m <- buildMarkitYC(MarkitData, futurequotes[,2], dt = 1/2)
setEvaluationDate(as.Date(MarkitData$effectiveasof))
+setCalendarContext("UnitedStates/GovernmentBond")
## calibrate HY21
## calibrate the single names curves
@@ -47,11 +50,11 @@ hy21portfolio <- c() for(i in 1:nrow(nondefaulted)){
SC <- new("creditcurve",
recovery=nondefaulted$recovery[i]/100,
- startdate=today(),
+ startdate=workdate,
issuer=as.character(nondefaulted$ticker[i]))
quotes <- data.frame(maturity=cdsdates, upfront = as.numeric(nondefaulted[i,4:8]) /100,
running=rep(nondefaulted$running[i] * bps, 5))
- SC@curve <- cdshazardrate(quotes, nondefaulted$recovery[i]/100)
+ SC@curve <- cdshazardrate(quotes, nondefaulted$recovery[i]/100, workdate)
hy21portfolio <- c(hy21portfolio, SC)
}
|
