aboutsummaryrefslogtreecommitdiffstats
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/build_portfolios.R3
-rw-r--r--R/build_scenarios.R2
-rw-r--r--R/yieldcurve.R26
3 files changed, 26 insertions, 5 deletions
diff --git a/R/build_portfolios.R b/R/build_portfolios.R
index c4bea6db..468b37e1 100644
--- a/R/build_portfolios.R
+++ b/R/build_portfolios.R
@@ -34,12 +34,11 @@ calibration.date <- prevBusDay(workdate)
MarkitData <- getMarkitIRData(calibration.date)
futurequotes <- read.csv(file.path(root.dir, "data", "Yield Curves",
sprintf("futures-%s.csv", calibration.date)), header=F)
-setEvaluationDate(as.Date(MarkitData$deposits$snaptime))
+setEvaluationDate(as.Date(MarkitData$effectiveasof))
setCalendarContext("UnitedStates/GovernmentBond")
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)
L12m <- buildMarkitYC(MarkitData, futurequotes[,2], dt = 1)
diff --git a/R/build_scenarios.R b/R/build_scenarios.R
index b80f4f29..e52d9794 100644
--- a/R/build_scenarios.R
+++ b/R/build_scenarios.R
@@ -114,7 +114,7 @@ L2m <- buildMarkitYC(MarkitData, dt = 1/6)
L3m <- buildMarkitYC(MarkitData)
L6m <- buildMarkitYC(MarkitData, dt = 1/2)
L12m <- buildMarkitYC(MarkitData, dt = 1)
-setEvaluationDate(as.Date(MarkitData$deposits$snaptime))
+setEvaluationDate(as.Date(MarkitData$effectiveasof))
support <- seq(0, 1, length = Ngrid)
recoverylag <- 90 ##days
diff --git a/R/yieldcurve.R b/R/yieldcurve.R
index ce373d45..e9466240 100644
--- a/R/yieldcurve.R
+++ b/R/yieldcurve.R
@@ -32,8 +32,22 @@ getMarkitIRData <- function(date=Sys.Date()) {
return( xmlToList(paste(filename,".xml", sep="")) )
}
+basic.advance <- function(date, n, unit){
+ ## advance a date by a given amount, whithout taking into account, business days
+ ## n is the number of steps
+ ## unit is the unit (belongs in "day", "month" or "year"
+ stopifnot(class(date)=="Date")
+ unit <- switch(unit,
+ year=1,
+ month=2,
+ day=3)
+ ymd <- as.numeric(unlist(strsplit(as.character(date),"-")))
+ ymd[unit] <- ymd[unit]+n
+ return( as.Date(paste(ymd, collapse="-")))
+}
+
buildMarkitYC <- function(MarkitData, futurequotes, dt=0.25){
- tradeDate <- as.Date(MarkitData$deposits$snaptime)
+ tradeDate <- as.Date(MarkitData$effectiveasof)
settledate <- advance(calendar = "UnitedStates/GovernmentBond",
dates=tradeDate, n=2, timeUnit=0)
params <- list(tradeDate=tradeDate,
@@ -47,11 +61,19 @@ buildMarkitYC <- function(MarkitData, futurequotes, dt=0.25){
short.term <- list(d1m=as.numeric(MarkitData$deposits[5]$curvepoint$parrate),
d3m=as.numeric(MarkitData$deposits[7]$curvepoint$parrate))
}else{
+ immdate <- settledate
for(i in seq_along(futurequotes)){
short.term[[paste0("fut",i)]] <- futurequotes[i]
+ immdate <- RQuantLib::nextIMMDate(immdate)
}
}
-
+ #advance last futures date by 3 months
+ lastfuturedate <- basic.advance(immdate, 3, "month")
+ ## find out the 2 year swap rate maturity
+ s2ymaturity <- basic.advance(settledate, 2, "year")
+ if(s2ymaturity == lastfuturedate){
+ short.term[["fut8"]] <- NULL
+ }
tsQuotes <- c(short.term,
list(
s2y=as.numeric(MarkitData$swaps[8]$curvepoint$parrate),