我正在尝试编写一个简单的函数,如果参数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中有错误吗?
答案 0 :(得分:0)
我猜它是时区问题。如果你使用它会发生什么:
format(dates[isOpExFriday], tz="UTC")
第二眼看,你可能需要在as.Date(format(...))调用中将'tz ='参数放在format调用中。格式化函数“冻结”将值作为文本日期。
编辑:在测试时,我认为你是对的是一个错误。 (并且我通过此响应向维护者发送了一个错误报告。)即使在尝试插入各种时区规范并在RmetricsOptions中设置myFinCenter之后,我仍然可以从您选择的函数中深入了解这个错误:
timeNthNdayInMonth(as.Date("2011-09-01"), nday=5, nth=3)
America/New_York
[1] [2011-09-15]
我怀疑是因为这个代码,因为据我所知,Julian日期没有根据时区或夏令时调整:
ct = 24 * 3600 * (as.integer(julian.POSIXt(lt)) +
(nth - 1) * 7 + (nday - lt1$wday)%%7)
class(ct) = "POSIXct"
以秒为单位的ct值然后仅仅通过类的强制从“起源”转换为POSIXct。如果我将代码更改为:
ct=as.POSIXct(ct, origin="1970-01-01") # correct results come back
我的quantmod和timeDate版本都是每个CRAN的当前版本。使用美国语言环境以64位模式运行带有R 2.13.1的Mac。我还没有尝试用最小的会话重现,所以仍然可能会与其他软件包发生冲突或劫持:
> sessionInfo()
R version 2.13.1 RC (2011-07-03 r56263)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] grid splines stats graphics grDevices utils datasets
[8] methods base
other attached packages:
[1] quantmod_0.3-17 TTR_0.20-3 xts_0.8-2
[4] Defaults_1.1-1 timeDate_2130.93 zoo_1.7-4
[7] gplots_2.10.1 KernSmooth_2.23-6 caTools_1.12
[10] bitops_1.0-4.1 gdata_2.8.1 gtools_2.6.2
[13] wordnet_0.1-8 ggplot2_0.8.9 proto_0.3-9.2
[16] reshape_0.8.4 plyr_1.6 rattle_2.6.10
[19] RGtk2_2.20.17 rms_3.3-1 Hmisc_3.8-3
[22] survival_2.36-9 sos_1.3-0 brew_1.0-6
[25] lattice_0.19-30