aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/yieldcurve.R13
1 files changed, 12 insertions, 1 deletions
diff --git a/R/yieldcurve.R b/R/yieldcurve.R
index ddde9ae3..a1fb0b01 100644
--- a/R/yieldcurve.R
+++ b/R/yieldcurve.R
@@ -42,6 +42,17 @@ basic.advance <- function(date, n, unit){
}
+thirdwed <- function(x) {
+ d <- x - as.POSIXlt(x)$mday + 1
+ n <- (3-as.POSIXlt(d)$wday) %% 7 + 1
+ d + 14 + n - 1
+}
+
+nextthirdwed <- function(x) {
+ y <- thirdwed(x)
+ thirdwed(y + 30 * (y < x))
+}
+
buildMarkitYC <- function(MarkitData, futurequotes, dt=0.25){
tradeDate <- as.Date(MarkitData$swaps$snaptime)
settleDate <- as.Date(MarkitData$swaps$spotdate)
@@ -59,7 +70,7 @@ buildMarkitYC <- function(MarkitData, futurequotes, dt=0.25){
immdate <- settleDate
for(i in seq_along(futurequotes)){
short.term[[paste0("fut",i)]] <- futurequotes[i]
- immdate <- RQuantLib::nextIMMDate(immdate)
+ immdate <- nextthirdwed(immdate)
}
#advance last futures date by 3 months
lastfuturedate <- basic.advance(immdate, 3, "month")