aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--R/intex_deal_functions.R28
1 files changed, 11 insertions, 17 deletions
diff --git a/R/intex_deal_functions.R b/R/intex_deal_functions.R
index 38637dc5..03282783 100644
--- a/R/intex_deal_functions.R
+++ b/R/intex_deal_functions.R
@@ -377,24 +377,18 @@ getpayday <- function(dealdata, tradedate){
return(payday)
}
-getdealschedule <- function(dealdata, freq="1 month", tradedate=Sys.Date(), lag=0, adjust=FALSE){
+getdealschedule <- function(dealdata, freq = c("Monthly", "Quarterly"), tradedate=Sys.Date(),
+ bdc = c("Unadjusted", "Following", "ModifiedFollowing")) {
payday <- getpayday(dealdata, tradedate)
- n <- if(freq == "1 month") 1 else 3
- sched <- payday
- i <- 1
- bdc <- if(adjust) "Following" else "Unadjusted"
- cal <- Calendar$new("UnitedStates")
- nextdate <- cal$advance(payday, n*i, 2, bdc = bdc)
- while(nextdate<= dealdata$"maturity" + lag){
- sched <- c(sched, nextdate)
- i <- i+1
- nextdate <- cal$advance(payday, n*i, 2, bdc = bdc)
- }
- ##always add the maturity
- if(sched[length(sched)] < dealdata$maturity){
- sched <- c(sched, dealdata$maturity)
- }
- return(sched)
+ freq <- match.arg(freq)
+ bdc <- match.arg(bdc)
+ params <- list(effectiveDate = getpayday(dealdata, tradedate),
+ maturityDate = dealdata$maturity,
+ period = freq,
+ businessDayConvention = bdc,
+ terminationDateConvention = "Unadjusted",
+ dateGeneration = "Forward")
+ return( Schedule(params) )
}
intexportfolio.forwardprice <- function(cdrmonthly, recoverymonthly, startdate, maturity,