R/us_calendar.R

Defines functions UsCalendar

setClass(
    Class     = "UsCalendar",
    contains  = "Calendar",
    prototype = prototype(
        IsNationalHoliday = function(date) {
            
            w         <- Weekdays(date)
            y         <- year(date)
            d         <- day(date)
            after1971 <- y >= 1971
            
            switch(month(date),
                   (d == 1 || (d == 2 && w == 1)) || ((d >= 15 && d <= 21) && w == 1 && y >= 1983) ,
                   `if`(after1971, (d >= 15 && d <= 21) && w == 1, (d == 22 || (d == 23 && w == 1) || (d == 21 && w == 5))),
                   FALSE,
                   FALSE,
                   `if`(after1971, d >= 25 && w == 1 , (d == 30 || (d == 31 && w == 1) || (d == 29 && w == 5))),
                   FALSE,
                   (d == 4 || (d == 5 && w == 1) || (d == 3 && w == 5)),
                   FALSE,
                   d <= 7 && w == 1,
                   `if`(after1971, (d >= 8 && d <= 14) && w == 1, FALSE) || `if`(y > 1970 && y < 1978,  (d >= 22 && d <= 28) && w == 1, FALSE),
                   `if`(y <= 1970 || y >= 1978, (d == 11 || (d == 12 && w == 1) || (d == 10 && w == 5)), FALSE) || ((d >= 22 && d <= 28) && w == 4),
                   (d == 25 || (d == 26 && w == 1) || (d == 24 && w == 5)) || (d == 31 && w == 5),
                   FALSE)
        },
        IsWeekend  = IsRegularWeekend
    )
)

UsCalendar <- function() new(Class = "UsCalendar")
gfunk0704/StochasticVolatility documentation built on Feb. 8, 2020, 10:04 a.m.