我正在尝试编写一个简单的函数,如果参数 date(s) 是 Op-Ex Friday,它(应该)返回 true。
require(timeDate)
require(quantmod)
getSymbols("^GSPC", adjust=TRUE, from="1960-01-01")
assign("SPX", GSPC, envir=.GlobalEnv)
names(SPX) <- c("SPX.Open", "SPX.High", "SPX.Low", "SPX.Close",
"SPX.Volume", "SPX.Adjusted")
dates <- last(index(SPX), n=10)
from <- as.numeric(format(as.Date(min(dates)), "%Y"))
to <- as.numeric(format(as.Date(max(dates)), "%Y"))
isOpExFriday <- ifelse(
isBizday(
timeDate(as.Date(dates)),
holidayNYSE(from:to)) & (as.Date(dates) == as.Date(
format(timeNthNdayInMonth(timeFirstDayInMonth(dates), nday=5, nth=3)))
), TRUE, FALSE)
现在,结果应该是[1] "2011-09-16"
。但相反,我得到[1] "2011-09-15"
:
dates[isOpExFriday]
[1] "2011-09-15"
我是不是做错了什么,期待 timeDate 包没有按设计做的事情,或者 timeDate 中是否存在错误?