diff options
Diffstat (limited to 'R')
| -rw-r--r-- | R/yieldcurve.R | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/R/yieldcurve.R b/R/yieldcurve.R index 72b65656..f7c6b47a 100644 --- a/R/yieldcurve.R +++ b/R/yieldcurve.R @@ -53,8 +53,8 @@ nextthirdwed <- function(x) { thirdwed(y + 30 * (y < x))
}
-buildMarkitYC <- function(MarkitData, futurequotes, dt=0.25, tradeDate=Sys.Date()){
- settleDate <- as.Date(MarkitData$swaps$spotdate)
+buildMarkitYC <- function(MarkitData, futurequotes, tradeDate=Sys.Date()){
+ settleDate <- advance(calendar="UnitedKingdom",dates=tradeDate, 2, 0)
params <- list(tradeDate=tradeDate,
settleDate=settleDate,
dt=dt,
@@ -99,24 +99,29 @@ buildMarkitYC <- function(MarkitData, futurequotes, dt=0.25, tradeDate=Sys.Date( return( YC.USD )
}
-exportYC <- function(tradedate=Sys.Date(), calibration.date=tradedate){
+exportYC <- function(tradedate=Sys.Date()){
## export the Yield Curve into the environment
require(RQuantLib)
futurequotes <- read.csv(file.path(root.dir, "data", "Yield Curves",
- sprintf("futures-%s.csv", calibration.date)), header=F)
+ sprintf("futures-%s.csv", tradedate)), header=F)
##retrieve yield curve data
MarkitData <- getMarkitIRData(tradedate)
- 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)
- if(!isBusinessDay(calendar="UnitedStates/GovernmentBond",dates=as.Date(MarkitData$effectiveasof))){
- setEvaluationDate(addBusDay(tradedate=as.Date(MarkitData$effectiveasof),-1))
- }else{
- setEvaluationDate(as.Date(MarkitData$effectiveasof))
+ Libor <- buildMarkitYC(MarkitData, futurequotes[,2], tradedate)
+ L1m <- Libor
+ L2m <- Libor
+ L3m <- Libor
+ L6m <- Libor
+ L12m <- Libor
+ L1m$params$dt <- 1/12
+ L2m$params$dt <- 1/6
+ L3m$params$dt <- 1/4
+ L6m$params$dt <- 1/2
+ L12m$params$dt <- 1
+ evaldate <- tradedate
+ if(advance(calendar="TARGET",tradedate, 2, 0)!=Libor$params$settleDate){
+ evaldate <- tradedate+1
}
- setCalendarContext("TARGET")
+ setEvaluationDate(evaldate)
assign("L1m", L1m, env = parent.env(environment()))
assign("L2m", L2m, env = parent.env(environment()))
assign("L3m", L3m, env = parent.env(environment()))
|
