aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/yieldcurve.R21
1 files changed, 10 insertions, 11 deletions
diff --git a/R/yieldcurve.R b/R/yieldcurve.R
index f5adc987..163ac94e 100644
--- a/R/yieldcurve.R
+++ b/R/yieldcurve.R
@@ -9,14 +9,14 @@ if(.Platform$OS.type == "unix"){
getMarkitIRData <- function(date=Sys.Date(), currency="USD") {
## downloads the latest available interest rates data from Markit
## before date and returns the parsed file into a list
- require(XML)
+ require(xml2)
i <- 0
while( TRUE ) {
lastdate <- format(date-i, "%Y%m%d")
filename <- paste("InterestRates", currency, lastdate, sep="_")
filename.ext <- paste0(filename,".xml")
if( filename.ext %in% dir(file.path(data.dir, "Yield Curves"))){
- return( xmlToList(file.path(data.dir, "Yield Curves", filename.ext)) )
+ return( as_list(read_xml(file.path(data.dir, "Yield Curves", filename.ext))) )
}else{
temp <- tempfile(tmpdir = file.path(data.dir, "Yield Curves"))
download.file(paste("http://www.markit.com/news/", filename, ".zip", sep=""), temp, quiet=T)
@@ -33,11 +33,11 @@ getMarkitIRData <- function(date=Sys.Date(), currency="USD") {
## we unzip it
unzip(temp, exdir = file.path(data.dir, "Yield Curves"))
unlink(temp)
- return( xmlToList(file.path(data.dir, "Yield Curves", filename.ext)) )
+ return( as_list(read_xml(file.path(data.dir, "Yield Curves", filename.ext))) )
}
}
}
- return( xmlToList(paste(filename,".xml", sep="")) )
+ return( as_list(read_xml(paste(filename,".xml", sep=""))) )
}
thirdwed <- function(x) {
@@ -101,25 +101,24 @@ exportYC <- function(tradedate=Sys.Date(), currency="USD", useFutures=FALSE){
}
}
MarkitData <- getMarkitIRData(tradedate-1, currency)
- evaldate <- as.Date(MarkitData$effectiveasof)
+ evaldate <- as.Date(MarkitData$effectiveasof[[1]])
setEvaluationDate(tradedate)
if(evaldate!=tradedate){
stop("wrong date")
}
- setEvaluationDate(evaldate)
- settleDate <- as.Date(MarkitData$deposits$spotdate)
+ sDate <- as.Date(MarkitData$deposits$spotdate[[1]])
curveType <- sprintf("%s/%s", "Markit", currency)
if(.Platform$OS.type == "unix"){
setCalendarContext(calendar="WeekendsOnly", fixingDays=2,
- settleDate=as.Date(MarkitData$deposits$spotdate),
+ settleDate=sDate,
curveType=curveType)
}else{
setCalendarContext(calendar="UnitedKingdom", fixingDays=2,
- settleDate=as.Date(MarkitData$deposits$spotdate))
+ settleDate=sDate)
}
- params <- list(tradeDate=as.Date(MarkitData$effectiveasof),
- settleDate=settleDate,
+ params <- list(tradeDate=tradedate,
+ settleDate=sDate,
interpWhat="discount",
interpHow="loglinear")
if(exists("futurequotes")){