aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/calibration.R12
-rw-r--r--R/cds_utils.R11
2 files changed, 13 insertions, 10 deletions
diff --git a/R/calibration.R b/R/calibration.R
index 566b0052..9ef99a83 100644
--- a/R/calibration.R
+++ b/R/calibration.R
@@ -26,7 +26,7 @@ get.cdsSchedule <- function(tradedate, indexmaturity){
break
}
}
- return( list(cs=couponSchedule(IMMDate(tradedate), cdsdates[length(cdsdates)], "Q", "FIXED",
+ return( list(cs=couponSchedule(IMMDate(tradedate, noadj=TRUE), cdsdates[length(cdsdates)], "Q", "FIXED",
1, tradedate, IMMDate(tradedate, "prev")), cdsdates=cdsdates) )
}
@@ -36,13 +36,13 @@ set.singlenamesdata <- function(index, tradedate){
tenor <- names(cds.cs$cdsdates)
index$portfolio <- list()
for(i in seq_along(quotes$tickers)){
- sanequotes <- which(yearFrac(tradedate+2,cds.cs$cdsdates)*quotes$spread_curve[i, tenor]*1e-4+
+ sane.quotes <- which(yearFrac(tradedate+2,cds.cs$cdsdates)*quotes$spread_curve[i, tenor]*1e-4+
quotes$upfront_curve[i, tenor] * 0.01>0)
quote <- list(ticker = quotes$ticker[i],
- running = quotes$spread_curve[i, tenor[sanequotes]] * 1e-4,
- upfront = quotes$upfront_curve[i, tenor[sanequotes]] * 0.01,
- recovery = as.double(quotes$recovery[i,tenor[sanequotes]][1]))
- index$portfolio <- c(index$portfolio, buildSC(quote, cds.cs$cs, cds.cs$cdsdates[sanequotes]))
+ running = quotes$spread_curve[i, tenor[sane.quotes]] * 1e-4,
+ upfront = quotes$upfront_curve[i, tenor[sane.quotes]] * 0.01,
+ recovery = as.double(quotes$recovery[i,tenor[sane.quotes]][1]))
+ index$portfolio <- c(index$portfolio, buildSC(quote, cds.cs$cs, cds.cs$cdsdates[sane.quotes]))
}
index$issuerweights <- rep(1/length(index$portfolio), length(index$portfolio))
index$recov <- sapply(index$portfolio, attr, "recovery")
diff --git a/R/cds_utils.R b/R/cds_utils.R
index d48bbd11..2d83457d 100644
--- a/R/cds_utils.R
+++ b/R/cds_utils.R
@@ -108,7 +108,7 @@ couponSchedule <- function(nextpaydate=NULL, maturity, frequency, coupontype, cu
return( data.frame(dates=dates, coupons=coupons, df = df) )
}
-IMMDate <- function(tradedate, type="next") {
+IMMDate <- function(tradedate, type="next", noadj=FALSE) {
## returns the next IMM date for a CDS, adjusted for settlement
## or previous one if type="prev"
## protection seems to be assumed at close of business day
@@ -119,14 +119,17 @@ IMMDate <- function(tradedate, type="next") {
startyear <- startyear - 1
nextimmdates <- seq(as.Date(paste(startyear, 3, 20, sep="-")), length=9, by="3 months")
if(type == "next"){
- val <- adjust(calendar = "UnitedStates/GovernmentBond",
- nextimmdates[nextimmdates >= start.protection][1] )
+ val <- nextimmdates[nextimmdates >= start.protection][1]
}else if(type == "prev"){
temp <- nextimmdates[nextimmdates < start.protection]
- val <- adjust(calendar = "UnitedStates/GovernmentBond", temp[length(temp)] )
+ val <- temp[length(temp)]
+
}else{
stop("incorrect type")
}
+ if(!noadj){
+ val <- adjust(calendar = "UnitedStates/GovernmentBond", val )
+ }
names(val) <- NULL
return( val )
}