【问题标题】:Find whether a particular date is an Option Expiration Friday - problem with timeDate package查找特定日期是否为 Option Expiration Friday - timeDate 包的问题
【发布时间】:2011-09-23 06:42:32
【问题描述】:

我正在尝试编写一个简单的函数,如果参数 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 中存在错误?

【问题讨论】:

  • 您的代码在我的机器上运行正常。

标签: r datetime finance quantmod


【解决方案1】:

我猜这是时区问题。如果你使用它会发生什么:

format(dates[isOpExFriday], tz="UTC")

再看一遍,您可能需要将“tz=”参数放在 as.Date(format(...)) 调用中的格式调用中。格式函数将日期值“冻结”为文本。

编辑:在测试中,我认为您认为它是一个错误是正确的。 (我向维护者发送了一份错误报告,并附有此回复。)即使在尝试插入各种时区规范并在 RmetricsOptions 中设置 myFinCenter 之后,我仍然会在您选择的函数深处得到源于此错误的原因:

timeNthNdayInMonth(as.Date("2011-09-01"), nday=5, nth=3)
America/New_York
[1] [2011-09-15]

我怀疑这是因为这段代码,因为据我了解,朱利安日期没有针对时区或夏令时进行调整:

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  

【讨论】:

  • DWin,非常感谢您为他的问题找到解决方案并向 r-metrics 报告错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多