diff options
Diffstat (limited to 'R/RQuantLib.patch')
| -rw-r--r-- | R/RQuantLib.patch | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/R/RQuantLib.patch b/R/RQuantLib.patch new file mode 100644 index 00000000..b39f969f --- /dev/null +++ b/R/RQuantLib.patch @@ -0,0 +1,77 @@ +diff -urN projects/RQuantLib-orig/NAMESPACE projects/RQuantLib/NAMESPACE +--- projects/RQuantLib-orig/NAMESPACE 2011-09-10 09:11:15.000000000 -0400 ++++ projects/RQuantLib/NAMESPACE 2013-09-16 18:30:38.190089857 -0400 +@@ -31,6 +31,7 @@ + "FittedBondCurve", + ##--calendars.R + "isBusinessDay", "businessDay", ++ "nextIMMDate", + "isHoliday", + "isWeekend", + "isEndOfMonth", +diff -urN projects/RQuantLib-orig/R/calendars.R projects/RQuantLib/R/calendars.R +--- projects/RQuantLib-orig/R/calendars.R 2010-08-07 12:03:16.000000000 -0400 ++++ projects/RQuantLib/R/calendars.R 2013-09-16 18:06:13.000000000 -0400 +@@ -29,6 +29,13 @@ + names(val) <- dates + val + } ++ ++nextIMMDate <- function(dates=Sys.Date()) { ++ stopifnot(class(dates)=="Date") ++ val <- .Call("nextIMMDate", dates, PACKAGE="RQuantLib") ++ val ++} ++ + businessDay <- function(calendar="TARGET", dates=Sys.Date()) { ## may get deprecated one day + isBusinessDay(calendar, dates) + } +diff -urN projects/RQuantLib-orig/src/calendars.cpp projects/RQuantLib/src/calendars.cpp +--- projects/RQuantLib-orig/src/calendars.cpp 2013-02-17 16:16:25.000000000 -0500 ++++ projects/RQuantLib/src/calendars.cpp 2013-09-16 18:06:49.000000000 -0400 +@@ -130,6 +130,27 @@ + return R_NilValue; + } + ++RcppExport SEXP nextIMMDate(SEXP dateSexp){ ++ ++ try { ++ Rcpp::DateVector dates = Rcpp::DateVector(dateSexp); ++ int n = dates.size(); ++ QuantLib::Date immdate; ++ for(int i=0; i<n; i++) { ++ QuantLib::Date day( dateFromR(dates[i]) ); ++ immdate = QuantLib::IMM::nextDate(day); ++ dates[i] = Rcpp::Date(immdate.month(), immdate.dayOfMonth(), immdate.year()); ++ } ++ return Rcpp::wrap(dates); ++ ++ } catch(std::exception &ex) { ++ forward_exception_to_r(ex); ++ } catch(...) { ++ ::Rf_error("c++ exception (unknown reason)"); ++ } ++ return R_NilValue; ++} ++ + RcppExport SEXP isHoliday(SEXP calSexp, SEXP dateSexp){ + + try { +diff -urN projects/RQuantLib-orig/src/curves.cpp projects/RQuantLib/src/curves.cpp +--- projects/RQuantLib-orig/src/curves.cpp 2013-02-17 16:16:25.000000000 -0500 ++++ projects/RQuantLib/src/curves.cpp 2013-09-17 10:10:31.842149882 -0400 +@@ -83,10 +83,11 @@ + true, /*fixingDays,*/ depositDayCounter)); + return depo; + } else if (type == RQLSwap) { +- QuantLib::Frequency swFixedLegFrequency = QuantLib::Annual; ++ QuantLib::Frequency swFixedLegFrequency = QuantLib::Semiannual; + QuantLib::BusinessDayConvention swFixedLegConvention = QuantLib::Unadjusted; +- QuantLib::DayCounter swFixedLegDayCounter = QuantLib::Thirty360(QuantLib::Thirty360::European); +- boost::shared_ptr<QuantLib::IborIndex> swFloatingLegIndex(new QuantLib::Euribor6M); ++ QuantLib::DayCounter swFixedLegDayCounter = QuantLib::Thirty360(QuantLib::Thirty360::USA); ++ boost::shared_ptr<QuantLib::IborIndex> swFloatingLegIndex(new ++ QuantLib::USDLibor(QuantLib::Period(3, QuantLib::Months))); + boost::shared_ptr<QuantLib::Quote> quote(new QuantLib::SimpleQuote(r)); + boost::shared_ptr<QuantLib::RateHelper> swap(new QuantLib::SwapRateHelper( + QuantLib::Handle<QuantLib::Quote>(quote), |
